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

Mat*_*ing 10 svn mercurial

我使用Convert扩展将Subversion存储库转换为Mercurial.当我使用Tortoise HG查看新存储库时,我会在每个变更集中看到相应的源路径和修订版(参见图像).Tortoise HG屏幕截图,带有HG Changeset和SVN源路径/修订版

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

hg:1147 svn:trunk@7201
hg:1146 svn:trunk@7200
...
Run Code Online (Sandbox Code Playgroud)

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

编辑: 看起来我想要的方式是不可能的.svn源路径/修订版位于extras变更集内的一个字段中(感谢@ Ry4en),既不输出hg log也不hg export输出该值.我现在尝试是使用文件.hg/shamap结合

hg log --template 'hg:{rev} nodeid:{node}'
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*ler 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.
Run Code Online (Sandbox Code Playgroud)

一个例子:

 $ hg log --template='{rev}:{node|short} {author|user}\nsvn: {svnrev}\n'
Run Code Online (Sandbox Code Playgroud)

使用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.
Run Code Online (Sandbox Code Playgroud)

例如:

 $ hg log -r 'fromsvn()'
 $ hg log -r 'svnrev(500)'
Run Code Online (Sandbox Code Playgroud)

使用Mercurial 1.6或更高版本时可以使用Revsets,并且可以通过多个Mercurial命令接受修订以指定修订.有关详细信息,请参阅"hg help revsets".


Ry4*_*ase 4

它隐藏在extras变更集上命名的字段中,我不相信有它的日志模板条目。它可能会出现在 ahg export中,您可以从中 grep 它,并且它当然可以通过编程方式获得,但我认为没有办法--template获得它。

  • 看起来你可以打印 `extras`,例如尝试 `hg log --template {node}\n{extras}\n\n` 。 (7认同)