SVN到HG:现在从HG变更集输出SVN修订版号

时间:2010-11-24 15:56:53

标签: svn mercurial

我使用Convert扩展将Subversion存储库转换为Mercurial。当我使用Tortoise HG查看新存储库时,我会在每个变更集中看到相应的源路径和修订版(参见图像)。 Tortoise HG Screenshot with HG Changeset and SVN source path/revision

有没有办法将这两个写入控制台?理想情况下,我想要这样的输出:

hg:1147 svn:trunk@7201
hg:1146 svn:trunk@7200
...

我知道我可以使用hg log和模板选项来自定义输出,但不知道如何获取Subversion源路径/修订版。

修改 看起来我想要的方式是不可能的。 svn源路径/修订版位于变更集内的extras字段中(感谢@ Ry4en),hg loghg export都不输出此值。我现在要尝试的是将文件.hg/shamap

结合使用
hg log --template 'hg:{rev} nodeid:{node}'

将Mercurial修订映射到SVN源路径/修订版。

EDIT2: 我的Mercurial版本是1.4.3。 使用Mercurial 1.7.1,可以使用此命令(感谢@ Wim Coenen):hg log --template {node}\n{extras}\n\n

2 个答案:

答案 0 :(得分:9)

新版本的hgsubversion添加了{svnrev}模板关键字。这在hg help subversion

中有所描述
  

[...]

     

查找并显示Subversion版本

     

揭示Mercurial变更集与Subversion之间的关系      修订版,hgsubversion提供了三个模板关键字:

 svnrev   Expanded to the original Subversion revision number.
 svnpath  The path within the repository that the changeset represents.
 svnuuid  The Universally Unique Identifier of the Subversion repository.
     

一个例子:

 $ hg log --template='{rev}:{node|short} {author|user}\nsvn: {svnrev}\n'
     

使用Mercurial 1.5或更高版本时,模板关键字可用。

     

为了从Subversion中查找变更集,hgsubversion将revsets扩展为      提供两个新的选择器:

 fromsvn  Select changesets that originate from Subversion. Takes no
          arguments.
 svnrev   Select changesets that originate in a specific Subversion
          revision. Takes a revision argument.
     

例如:

 $ hg log -r 'fromsvn()'
 $ hg log -r 'svnrev(500)'
     

使用Mercurial 1.6或更高版本时可以使用Revsets并被接受      通过几个Mercurial命令来指定修订版。请参阅“hg帮助      修改“了解详情。

答案 1 :(得分:3)

它隐藏在变更集中名为extras的字段中,我不相信它有一个日志模板条目。它可能会显示在hg export中,您可以从中查找它,并且它当然可以通过编程方式获得,但我认为没有--template方法可以获得它。