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

SVN到HG:现在从HG变更集中输出SVN修订号,svn,mercurial,Svn,Mercurial,我使用Convert扩展将Subversion存储库转换为Mercurial。当我使用Tortoise HG查看新的存储库时,我会在每个变更集中看到相应的源路径和修订(见图) 有没有办法把这两个写在控制台上?理想情况下,我希望输出如下: hg:1147 svn:trunk@7201 hg:1146 svn:trunk@7200 ... 我知道我可以使用hglog和模板选项来定制输出,但不知道如何获取Subversion源路径/修订 编辑: 看来我想走的路是不可能的。svn源路径/修订位于变更集

我使用Convert扩展将Subversion存储库转换为Mercurial。当我使用Tortoise HG查看新的存储库时,我会在每个变更集中看到相应的源路径和修订(见图)

有没有办法把这两个写在控制台上?理想情况下,我希望输出如下:

hg:1147 svn:trunk@7201
hg:1146 svn:trunk@7200
...
我知道我可以使用
hglog
和模板选项来定制输出,但不知道如何获取Subversion源路径/修订

编辑: 看来我想走的路是不可能的。svn源路径/修订位于变更集中名为
extras
的字段中(感谢@Ry4en),并且
hg log
hg 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

它隐藏在变更集中名为
extras
的字段中,我认为没有日志模板条目。它可能会出现在一个
hg导出中,您可以从中grep它,而且它当然可以通过编程方式获得,但我认为没有一种
--template
方法可以获得它。

新版本的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将revset扩展到 提供两个新选择器:

 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或更高版本时,可使用转速设置,并且可以接受 通过几个Mercurial命令来指定修订。请参阅“hg帮助” 详细信息请参阅“revsets”


例如,您似乎可以打印
extras
,尝试
hg log--template{node}\n{extras}\n\n
。@Wim:当我像您编写的那样输入命令(加上模板字符串的单引号)时,我会收到消息“No keyword'extra'”(注意缺少的s)。当我只使用“extra”而不是“extras”时,我得到的是日志输出,但只有节点id,没有额外字段的值。@Ry4en:看来你是对的:没有办法用
hg log
获取数据。不幸的是,我在
hg导出
输出中也没有看到额外的内容。但我认为我可以将日志输出与.hg/shamap中的条目关联起来,以获得所需的组合。@Matthias:我的示例在mercurial 1.7.1上适用。也许你用的是旧版本?@Wim:是的,我用的是1.4.3,没有消息说我什么时候会得到新版本(在工作中)。不过,我会记住你的建议,谢谢:)。当我使用
convert
扩展对SVN存储库进行完整转换时,这也有效吗?还是我必须从一开始就使用hgsubversion?他没有使用hgsubversion,他转换了存储库。@Chris:哦,对不起,我想我假设现在每个人都使用hgsubversion:-)@Matthias:恐怕你不能将
hg convert
转换与hgsubversion转换混合使用。