2010-11-24 50 views
10

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

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

hg:1147 svn:[email protected] 
hg:1146 svn:[email protected] 
... 

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

编辑: 它看起来像我想去的方式是不可能的。 svn源路径/修订版位于更改集(谢谢@ Ry4en)内的extras字段中,并且hg loghg export都不输出此值。我现在尝试是使用文件.hg/shamap结合

hg log --template 'hg:{rev} nodeid:{node}' 

要Mercurial的版本映射到SVN源路径/修订。

EDIT2: 我的Mercurial版本是1.4.3。 与Mercurial 1.7.1有可能使用这个命令(感谢@维姆·科嫩):hg log --template {node}\n{extras}\n\n

回答

3

它藏在一个关于变更命名extras领域,我不相信这是它一个日志模板条目。它可能显示在一个hg export中,你可以用它来grep它,它当然可以通过编程方式获得,但我不认为有一个--template的方法来获取它。

+7

例如,您可以打印`extras`,尝试`hg log --template {node} \ n {extras} \ n \ n`。 – 2010-11-24 20:28:35

+0

@Wim:当我输入如你所写的命令(加上模板字符串的单引号)时,我得到消息“No keyword'extra'”(注意缺失的s)。当我只使用'extra'而不是'extras'时,我得到日志输出,但只有节点id,没有额外字段的值。 – 2010-11-25 09:44:05

9

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

[...]

查找和显示的Subversion版本

揭示水银的变更和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)' 

Revsets使用水银1时是可用的。6或更高版本,并被几个Mercurial命令接受 以指定修订。有关详细信息,请参阅“hg help 修订版”。