Reescreva o histórico git filter-branch create / split em submódulos / subprojetos

Atualmente estou importando um projeto cvs para o git.
Após a importação, eu quero reescrever o histórico para mover um diretório existente em um submódulo separado.

Suponha que eu tenha uma estrutura como esta:

file1<br>file2<br>file3<br>dir1<br>dir2<br>library<br>

Agora eu quero reescrever o histórico para que o diretóriolibrary é sempre um submódulo git. Diga, divida os diretórios especificados em seus próprios submódulos / subprojetos

Este é o meu código atual:

Arquivore-write-submódulo (que é chamado)

cd project
git filter-branch --tree-filter $PWD/../$0-tree-filter --tag-name-filter cat -- --all

Arquivorewrite-submodule-tree-filter

    #!/bin/bash

    function gitCommit()
    {
        unset GIT_DIR
        unset GIT_WORK_TREE
        git add -A
        if [ -n "$(git diff --cached --name-only)" ]
        then
            # something to commit
            git commit -F $_msg
        fi
    }

    _git_dir=$GIT_DIR
    _git_work_tree=$GIT_WORK_TREE
    unset GIT_DIR
    unset GIT_WORK_TREE
    _dir=$PWD

    if [ -d "library" ]
    then
        _msg=$(tempfile)
        git log ${GIT_COMMIT}^! --format="%B" > $_msg
        git rm -r --cached lib
        cd library
        if [ -d ".git" ]
        then
            gitCommit
        else
            git init
            gitCommit
        fi
        cd ..
        export GIT_DIR=$_git_dir
        export GIT_WORK_TREE=$_git_work_tree
        git submodule add -f ./lib
    fi

    GIT_DIR=$_git_dir
    GIT_WORK_TREE=$_git_work_tree
    

Esse código cria o arquivo .gitmodules, mas não a entrada de submódulo commit (a linhaSubproject commit <sha1-hash>, saída porgit diff) no repositório principal e nos arquivos no diretóriolibrary ainda são versionados no repositório principal e não no repositório do subprojeto.

Agradecemos antecipadamente por qualquer dica

Os .gitmodules são assim:

    [submodule "library"]
        path = library
        url = ./library
    

questionAnswers(4)

yourAnswerToTheQuestion