已被移动的git-svn克隆回购?
我们正在从项目中的svn切换到git。已被移动的git-svn克隆回购?
现在我们想要移动的svn回购之一,有很长的历史,我们想保持。 所以我试着做了git-svn clone,它运行良好。
但是,svn回购在其历史上已经移动了三次。
整个回购的布局是这样的;
repo_root/
trunk/
projA_v1 (existed in the beginning)
projA_v2 (then moved to v2)
projA_v3 (and finally to v3)
projB
projC
branches/
projA_b1
projA_b2
projB_b1
projC_b1
tags/
projA_t1
projB_t1
projC_t1
该项目最初名为projA_v1,然后转移到v2,最后到v3。
现在,当我们做git-svn克隆时,我们只能得到自从上次移动2到3以来的历史。 如果我们检查svn中的日志,我们会正确地看到整个历史。
我能做些什么来获得整个历史?这里有大约3年的历史遗失,如果可以的话,我们宁愿保留它。
更新: 我试图做的整个回购git-svn克隆现在从repo_root
。我想我可以做到这一点,然后用Detach (move) subdirectory into separate Git repository中的指示修剪由此产生的git回购,它似乎运作良好。 (修剪位至少)
虽然还存在问题。分支将不会正确行事..我想这是因为git-svn不会将它们识别为分支,因为其中一个分支中的内容不是整个中继的副本,而只是中继的一部分。有任何想法吗?
在一个理想的世界中,我最终会得到一个只包含projA,包含projA_v1和v2的历史记录,以及projA分支和标签中的历史记录。
我找到了一种方法,对我的工作,但它是非常“非一般”,所以我不愿在这里张贴...
我发现我的工作是编辑.git/config
当项目被感动了。我做了git svn fetch -r
来修改它的移动,然后编辑配置。
在我的情况下,项目从trunk/v2移动到branch/v3到trunk/v3,最后一步对我来说是最大的问题。我在配置中翻转树干和分支,以便从分支/ v3移动到树干/ v3看起来像是一个分支。然后我得到了整个历史。
我不得不做很长的--ignore-paths=""
与所有在同一级别的其他项目。
我不认为这种方法适用于其他情况,但如果所有其他情况都失败,可以考虑修改config
。