【问题标题】:Svn to Mercurial: Fewer revision numbers and missing tagsSvn 到 Mercurial:更少的修订号和缺少的标签
【发布时间】:2010-11-13 17:47:46
【问题描述】:

我想将我的项目 (https://softsmithy.svn.sourceforge.net/svnroot/softsmithy) 从 Subversion 迁移到 Mercurial。 我正在处理本地镜像(svnsync;如http://panospace.wordpress.com/2010/05/19/svn2hg_part1/ 所述)。 当前svn修订号为:544 我正在使用以下命令将 subversion 存储库转换为 Mercurial 存储库: hg convert --branchsort --authors svn_users.txt softsmithy-mirror softsmithy-mercurial-all

不过,生成的存储库并不包含所有标签。

生成的存储库也确实只有 511 个修订版。我不确定这是否仅与标签有关。

一些缺少的标签标记了主干的子目录。这可能是问题的一部分。

如何获取所有标签和修订?

问候, 普斯

【问题讨论】:

  • 遗憾的是,这可能只有善变的邮件列表可以提供帮助。祝您成功转换它,我知道保留旧标签结构的重要性。
  • 我不喜欢为一个问题注册邮件列表,但你可能是对的。我在那里交叉张贴。 (还没有存档链接。)

标签: svn mercurial


【解决方案1】:

您可以使用hgsubversion extension 重新尝试转换。它旨在允许双向使用 Mercurial 的 Subversion 存储库,但因此它有时可以更好(更快)处理简单的单向转换。

不过,hg convert 和 hgsubversion 都可能无法自动处理 subdir 标签。您可能必须在转换后手动添加标签。如果您使用的是当前版本的 hg (>= 1.6),这可以相对容易地完成:

$ svn log svn://example.com/original/repo/tags/subdirtag  # note revision number
$ hg tag -r 'svnrev(X)' TAGNAME                           # X is revision number

【讨论】:

  • 嗨,凯文,感谢您的回复。是的,我也找到了 hgsubversion,而且它似乎做得更好(例如 hg convert 没有移动文件的松散历史)。之后我使用 hg convert 进行了一些清理(例如重命名用户)。 hg tag 命令没有按照提到的方式工作,但我使用 hg view 工具手动创建缺少的标签(缺少的标签更少)。唯一的事情:我现在在回购中有两个小分支和大约 10 个头,我真的不需要。有没有一种简单的方法可以在不破坏 repo 的情况下删除它们?
【解决方案2】:

您可以在cvs2hg: Mercurial backend for cvs2svn 下阅读有关子目录标签及其引起的问题以及如何修复它的信息

如果您可以在不丢失信息的情况下从 SVN 转换为 CVS,那么工具 cvs2hg 也可能有助于转换为 mercurial。它可以配置为适应您想要进行的转换类型(没有 1:1 的翻译,一些解释发生)。

【讨论】:

  • 嗯,我对先转换回 CVS 感到不舒服。我想我可能会丢失很多信息(例如文件历史记录,文件何时重命名/移动)。或者您没有发现任何问题并且它是安全的?
  • 是的,这确实是一个问题,重命名历史可能会在转到 CVS 时丢失,OTOH cvs2hg 的标签处理要好得多,也更灵活。我担心你不能在这里拥有一切。考虑到安全性,您可以尝试不同的方法并比较结果,并不是说转换具有破坏性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多