代码之家  ›  专栏  ›  技术社区  ›  Matthias Schippling

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

  •  10
  • Matthias Schippling  · 技术社区  · 14 年前

    我使用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 使用template选项自定义输出,但不知道如何获取Subversion源路径/版本。

    编辑: 看来我想走的路是不可能的。svn源路径/修订在一个名为 extras 在变更集中(谢谢@Ry4en),两者都没有 汞测井 也不是 hg export 输出这个值。我现在要尝试的是使用这个文件 .hg/shamap 结合

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

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

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

    2 回复  |  直到 14 年前
        1
  •  3
  •   Ry4an Brase    14 年前

    藏在一个叫 extras 在变更集上,我不相信有日志模板条目。它可能会出现在 hg export 你可以从中得到它,当然可以通过编程来获得,但是我不认为 --template 是的。

        2
  •  9
  •   Martin Geisler    14 年前

    新版本的hgsubversion添加了 {svnrev} 模板关键字。这在 hg help 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将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或更高版本时,可以使用revset,并且可以接受 通过几个用于指定修订的Mercurial命令。参见“hg帮助 有关详细信息,请参阅revsets。