如何将svn存储库中已删除的路径导入git或mercurial

时间:2010-12-08 10:57:04

标签: git mercurial git-svn hgsubversion

我需要在我们公司的svn存储库中对svn-deleted路径中的源进行一些研究。由于我需要使用注释进行大量工作,因此我希望在mercurial或git中使用历史记录。我到目前为止尝试过:

  • hgsubversion git-svn :对于这两个程序,我找不到指定我需要路径存在的旧版本的方法,都尝试svn HEAD并且因为路径被删除而失败。
  • hgsvn :找到旧路径(带有peg修订版),但无法进行初始更新,因为它想从svn HEAD修订版中获取日志,其中所需路径不在不再存在了。

那么有没有办法将已删除的svn路径导入git或hg?

3 个答案:

答案 0 :(得分:1)

假设在修订版117上删除了路径,以下内容应与hgsubversion一起使用:

hg clone -r 116 http://svn.example.com/whereever

(我最近没有对此进行过测试,但它应该可以正常工作。如果不是这样的话就会出现错误......)

您还应该注意,尽管khmarbaise声称,关闭Mercurial中的分支, 会从历史记录中删除它。关闭分支只会将其隐藏起来hg heads,除非给出-c/--closed参数。

答案 1 :(得分:0)

据我所知,git和hg都无法处理已删除的路径。如果删除git中的分支,则会从历史记录中删除分支。

答案 2 :(得分:0)

从你的问题中不清楚你为什么需要git或hg。您可以使用svn annotate。分析SVN中已删除的对象不是问题,您可以使用peg revision这样:

svn annotate http://example.com/svn/somefile@321

即使某些文件在修订版321之后的某个时间被删除或重命名,这也会起作用。

编辑:在考虑之后,我猜你想要hg / git,因为拥有存储库的本地副本可能会大大加快注释速度。您可以使用svnsync在本地文件系统上创建镜像存储库,并使用file:/// URL访问它,从而实现与svn相同的功能。