2010-11-13 102 views
4

我想将我的项目(https://softsmithy.svn.sourceforge.net/svnroot/softsmithy)从Subversion迁移到Mercurial。 我正在使用本地镜像(svnsync;如http://panospace.wordpress.com/2010/05/19/svn2hg_part1/所述)。 当前SVN版本号为:544 我使用下面的命令来颠覆存储库转换为Mercurial库: 汞转化--branchsort --authors svn_users.txt softsmithy镜softsmithy,善变,所有Svn to Mercurial:更少的版本号和缺失的标签

但是,生成的存储库不包含所有标签。

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

一些缺失的标记是标记trunk的子目录。这可能是问题的一部分。

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

问候, 深褐色

+0

可悲的是,这可能是唯一的东西水银的邮件列表可以帮助。我希望你能够转换它,我知道保留旧的标签结构是多么重要。 – jcolebrand 2010-11-13 18:01:13

+0

我不喜欢为单个问题注册邮件列表,但您可能是对的。我在那里交叉发布。 (还没有存档链接。) – Puce 2010-11-14 14:41:09

回答

0

你可以阅读有关子目录标签和它们所造成的问题,以及如何解决它下cvs2hg: Mercurial backend for cvs2svn

工具cvs2hg也可能有助于转换为善变,如果你可以从SVN转换到CVS而没有信息丢失。它可以被配置为适应你想要进行的转换(没有1:1翻译的解释发生)。

+0

嗯,我觉得先转换回CVS并不舒服。我想我可能会丢失许多信息(例如文件历史记录,文件被重命名/移动时)。或者你没有看到任何问题,它是安全的? – Puce 2010-11-14 14:44:07

+0

是的,这真的是一个问题,重命名历史可能会丢失,当去CVS,OTOH的标签处理cvs2hg是更好,更灵活。我担心你不能在这里拥有一切。考虑到安全性,你可以尝试不同的方式并比较结果,而不是转换具有破坏性。 – 2010-11-15 18:02:31

2

您可以使用hgsubversion extension重新尝试转换。它旨在允许从Mercurial双向使用Subversion存储库,但因此它有时可以更好(更快速地)处理简单的单向转换。但是,hg convert和hgsubversion都不会自动处理subdir标签。转换后可能需要手动添加标签。如果您使用汞(> = 1.6)的最新版本,这可以比较容易实现:

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

嗨凯文, 感谢您的回应。是的,我也发现了hgsubversion,它似乎做得更好(例如,hg convert做了一些移动文件的历史记录)。之后我使用hg convert进行一些清理(例如重命名用户)。 hg tag命令没有按照上述方式工作,但是我使用hg view工具手动创建缺失的标签(缺少更少的标签)。 唯一的事情是:我现在有两个小分支和10个回购头,我并不需要这些。有没有简单的方法来删除那些没有破坏回购? – Puce 2010-11-18 01:33:36