Переписать историю git filter-branch create / разбить на подмодули / подпроекты

В настоящее время я импортирую проект cvs в git.

После импорта я хочу переписать историю, чтобы переместить существующий каталог в отдельный подмодуль.

Предположим, у меня есть такая структура:

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

Теперь я хочу переписать историю, чтобы каталогlibrary всегда подмодуль git. Скажем, разбить указанные каталоги на их собственные подмодули / подпроекты

Это мой текущий код:

файлперепишем-подмодуль (который называется)

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

файлперепишем-подмодуль-дерево-фильтр

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

Этот код создает файл .gitmodules, но не запись фиксации субмодуля (строкаSubproject commit , выводgit diff) в основном хранилище и файлы в каталогеlibrary все еще версионированы в основном хранилище, а не в хранилище подпроектов.

Заранее спасибо за любую подсказку

.Gitmodules выглядят так: I '

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

Ответы на вопрос(4)

Ваш ответ на вопрос