我的项目目前正从svn切换到git repository。
AS_IS (SVN):
parent-module
|_module_X
| |_trunk
| |_branches
|_module_Y
| |_trunk
| |_branches
|_module_Z
| |_trunk
| |_branches
|_module_K
|_trunk
|_branches
我想将svn迁移到git存储库,获取以下结构,仍保留历史记录:
TO_BE (GIT):
parent-module_A
|_master
|_module_X
|_module_Y
|_branches
|_module_X
|_module_Y
parent-module_B
|_master
|_module_z
|_module_K
|_branches
|_module_Z
|_module_K
有关最佳方法的任何想法吗?
答案 0 :(得分:1)
我在这里找到了一个解决方案: http://bpeirce.me/moving-one-git-repository-into-another.html
我使用git svn迁移每个项目module_X,module_Y(只有主干),如下所述:http://john.albin.net/git/convert-subversion-to-git
然后
我在服务器上创建一个裸项目git
git init --bare parent-module_A
所以情况是:
然后我在我的机器上克隆了项目
git clone http://host/parent-module_A mainproj
git clone module_X.git subproj_tmp
cd subproj_tmp/
git filter-branch -f --prune-empty --tree-filter 'mkdir -p .sub; mv * .sub; mv .sub module_X ' -- --all
git gc --aggressive
cd ../mainproj
git remote add module_X ../subproj_tmp
git fetch module_X
git merge module_X/master
git remote rm subproj
git gc --aggressive
git push origin master
我重复了Module_Y的程序。