Przepisz historię git filtruj gałąź, aby utworzyć / podzielić na submoduły / podprojekty

Obecnie importuję projekt cvs do git.
Po zaimportowaniu chcę przepisać historię, aby przenieść istniejący katalog do oddzielnego submodułu.

Załóżmy, że mam taką strukturę:

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

Teraz chcę przepisać historię, tak aby kataloglibrary jest zawsze podmodułem git. Powiedzmy, że podzielimy określone katalogi na własne submoduły / podprojekty

To jest mój obecny kod:

Plikprzepisać podmoduł (który jest nazywany)

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

Plikprzepisać-podmodułowy filtr drzewa

    #!/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
    

Ten kod tworzy plik .gitmodules, ale nie wpis zatwierdzenia podmodułu (wierszSubproject commit <sha1-hash>, wyjście przezgit diff) w głównym repozytorium i plikach w katalogulibrary są nadal wersjonowane w głównym repozytorium, a nie w repozytorium podprojektu.

Z góry dziękuję za każdą wskazówkę

Moduły .git wyglądają tak:

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

questionAnswers(4)

yourAnswerToTheQuestion