一段时间以来,我一直在将Subversion存储库镜像到Git存储库。哪个一直很好。但是,由于虚拟服务器崩溃而没有备份,我必须再次设置镜像。我需要跟踪的存储库大约有1200次提交,并且包含很多文件(这是Git镜像的主要原因,因为检查repo的副本要快得多)。
我现在需要做的是让我刚刚克隆的Git镜像再次跟踪Subversion存储库。我添加新的远程引用没有问题,但似乎无法弄清楚如何能够再次将svn提交引入Git分支。
我似乎收到的一个错误是Unable to determine upstream SVN information from working tree history
。
如何在现有Git分支上重新启用镜像Subversion存储库,该分支仅在Subversion存储库中提交几个提交后面?
答案 0 :(得分:11)
让它再次运行的最简单方法是从原始目录复制.git/svn
目录,因为这是跟踪额外svn元数据的地方(假设git-svn配置相同)。
然而,既然你没有它,试试这个:
git svn init http://hostname/svn/repository
以及之前使用过的任何其他参数(可能-s
?)
git checkout
来自svn的最新提交。
重新创建git-svn
参考:git update-ref refs/remotes/git-svn HEAD
(如果您使用-s
,则应该refs/remotes/trunk
代替
从当前提交后的svn获取最新信息:git svn fetch --parent
。这应该为您的整个历史重建git-svn元数据。
答案 1 :(得分:0)
我在http://trac.parrot.org/parrot/wiki/git-svn-tutorial找到了另一种方法:
将git-svn元数据添加到github克隆
如果要重新填充可以快速完成的SVN元数据 通过从gihub上获取最新的leto's repo克隆并添加 这到你的.git / config
[svn-remote "svn"] url = https://svn.parrot.org/parrot fetch = trunk:refs/remotes/trunk
然后运行此命令以查找“top commit”
git show origin/upstream | head -n 1
并将该提交哈希放入文件.git / refs / remotes / trunk (显然用上面命令中的那个替换has)
echo c85aaa38b99cedb087e5f6fb69ce6d4a6ac57a0b > .git/refs/remotes/trunk
最后
git svn fetch