1

我需要对我们公司 svn 存储库中 svn 删除路径中的源进行一些研究。因为我需要大量使用注释,所以我想在 mercurial 或 git 中拥有历史。到目前为止我尝试过:

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

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

4

3 回答 3

1

假设路径在修订版 117 上被删除,以下内容应该适用于 hgsubversion:

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

(我最近没有对此进行测试,但它应该可以工作。如果没有,那就是一个错误......)

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

于 2010-12-08T14:59:54.370 回答
0

据我所知, git 和 hg 都不能处理已删除的路径。如果您在 git 中删除一个分支,该分支将从历史记录中删除。

于 2010-12-08T11:34:54.743 回答
0

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

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

即使在修订版 321 之后某个文件已被删除或重命名,这也将起作用。

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

于 2010-12-08T13:15:33.027 回答