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

发布于 2024-10-03 20:28:37 字数 875 浏览 3 评论 0原文

我使用 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 源路径/修订版。

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

I converted a Subversion repository to Mercurial, using the Convert extension. When I look at the new repository with Tortoise HG, I see in each changeset the corresponding source path and revision (see image). Tortoise HG Screenshot with HG Changeset and SVN source path/revision

Is there a way to write those two out to the console? Ideally I'd like an output like this:

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

I know that I can use hg log with the template option to customize the output, but don't know how to get the Subversion source path/revision.

EDIT:
It looks like the way I wanted to go is not possible. The svn source path/revision is in a field called extras within the changeset (thanks @Ry4en) and neither hg log nor hg export output this value. What I will try now is to use the file .hg/shamap in combination with

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

To map the Mercurial revision to the SVN source path/revision.

EDIT2:
My Mercurial version is 1.4.3.
With Mercurial 1.7.1 it's possible to use this command (thanks @ Wim Coenen): hg log --template {node}\n{extras}\n\n

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡水深流 2024-10-10 20:28:37

新版本的 hgsubversion 添加了 {svnrev} 模板关键字。 hg help subversion 对此进行了描述:

[...]

查找并显示 Subversion 修订版本

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

 svnrev 扩展为原始 Subversion 修订号。
 svnpath 变更集所代表的存储库中的路径。
 svnuuid Subversion 存储库的通用唯一标识符。

一个例子:

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

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

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

 fromsvn 选择源自 Subversion 的变更集。不需要
          论据。
 svnrev 选择源自特定 Subversion 的变更集
          修订。采用修订参数。

例如:

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

修订集在使用 Mercurial 1.6 或更高版本时可用并被接受
通过几个 Mercurial 命令来指定修订版本。请参阅“hg 帮助
转速”了解详细信息。

New versions of hgsubversion adds a {svnrev} template keyword. This is described in hg help subversion:

[...]

Finding and displaying Subversion revisions

For revealing the relationship between Mercurial changesets and Subversion
revisions, hgsubversion provides three template keywords:

 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.

An example:

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

The template keywords are available when using Mercurial 1.5 or later.

For finding changesets from Subversion, hgsubversion extends revsets to
provide two new selectors:

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

For example:

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

Revsets are available when using Mercurial 1.6 or later and are accepted
by several Mercurial commands for specifying revisions. See "hg help
revsets" for details.

戏蝶舞 2024-10-10 20:28:37

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

It's tucked away in a field named extras on the changeset, and I don't believe there is a log template entry for it. It might show up in a hg export from which you could grep it, and it's certainly available programmatically, but I don't think there's a --template way to get it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文