Переписать историю 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