我不小心克隆了Subversion存储库而没有添加--stdlayout参数, 给我一些类似的东西:
$ git svn clone --prefix=svn/ svn+ssh://code.example.com/project
[two weeks later]
$ git branch -a
* master
remotes/svn/git-svn
svn / git-svn布局类似于:
branches/*
tags/*
trunk/*
有什么方法可以从中恢复?
答案 0 :(得分:3)
目前,看起来重新开始是维持与SVN互操作性的唯一选择。
答案 1 :(得分:3)
这不是一个确切的答案,但我所做的是添加-r
标志来指定最后几次提交,因为我真的不想要一年前的提交。
git svn clone --prefix=svn/ -s -r12000:HEAD http://some/svn/repo
这要求您知道要返回的转号,在本例中为12000.它让我在错过-s
旗帜后保持理智,并做了我真正想做的事情。在合理的时间内第一名。
答案 2 :(得分:2)
这取决于:您希望将来能够与subversion进行互操作吗?
如果没有,请考虑在branches
中为每个分支在git中手动创建分支,并将该分支目录的内容移动到顶层。这给了你一个工作的承诺,而git的重命名跟踪应该意味着看着历史工作得相当好。如果你想要标签,你可以类似地为每个标签创建一个分支,标记它,然后删除分支。
这不太好,但它应该可行。
更多的工作是使用git filter-branch
重新编写您刚创建的每个分支的历史记录,方法与重新编写提示的方式相同。这应该为您提供一个看起来正确的存储库。但是你仍然不会进行颠覆整合,而且你必须弄清楚如何处理原始分支点。
很多,更多的工作是弄清楚git svn
如何存储其元数据并相应地转换存储库(可能再次使用git filter-branch
) - 所有数据应该在那里:)。