Hg - 查找“覆盖”特定文件版本的标签

时间:2012-01-02 17:37:59

标签: mercurial tags

我们使用hg来控制大型项目的来源。每当我们发布版本时,我们都会在hg中标记版本。

现在说我做了一个特定的修订(我已经修复了一个bug)。我想知道哪些版本包含此修复,即哪些标记"覆盖"本次修订。

我如何找到这个?在hg标签中似乎只引用标记的变更集。我记得在ClearCase中,标记修订版的每个祖先都会被标记,是否有办法在hg中查看此信息?

谢谢!

3 个答案:

答案 0 :(得分:5)

没有任何额外扩展的Revsets可以为您提供一些帮助。像

hg log -r "id(hash):tip and tag()"或更短且更好(可能)版本hg log -r "descendants(hash) and tag()"

正好和我的回购缩短版本的缩影版本的例子

>hg glog -r "descendants(c9e3b41ec78f)"
@  changeset:   65:f202d72d6397
|  tag:         tip
|  parent:      63:c778bae76563
|  user:        Alex Bream
|  date:        Wed Nov 09 21:42:50 2011 +0600
|  summary:     2-9 яюыэюёЄ№■ фю 2769
|
| o  changeset:   64:625d08492555
| |  branch:      Cleanup
| |  parent:      62:eed6619dadb8
| |  user:        Alex Bream
| |  date:        Wed Nov 09 21:38:44 2011 +0600
| |  summary:     ╟рўшёЄър яю 1-1 155
| |
o |  changeset:   63:c778bae76563
|\|  parent:      61:e7ae9e5f725a
| |  parent:      62:eed6619dadb8
| |  user:        Alex Bream
| |  date:        Wed Nov 09 21:33:22 2011 +0600
| |  summary:     Merge with Cleanup
| |
| o  changeset:   62:eed6619dadb8
| |  branch:      Cleanup
| |  parent:      59:c9e3b41ec78f
| |  user:        Alex Bream
| |  date:        Thu Mar 03 19:19:34 2011 +0500
| |  summary:     ╟рўшёЄър яю 1-1 131
| |
o |  changeset:   61:e7ae9e5f725a
| |  user:        Alex Bream
| |  date:        Thu Mar 03 05:40:34 2011 +0500
| |  summary:     2-9 яю 2745
| |
o |  changeset:   60:1393fe759096
|\|  parent:      57:a38258cac9b8
| |  parent:      59:c9e3b41ec78f
| |  user:        Alexander
| |  date:        Thu Mar 03 04:59:22 2011 +0500
| |  summary:     Merge ё ўшёЄшыъющ
| |
| o  changeset:   59:c9e3b41ec78f
| |  branch:      Cleanup
| |  user:        Alexander
| |  date:        Thu Mar 03 04:54:11 2011 +0500
| |  summary:     ╟рўшёЄър яЁюыюу яюыэюёЄ№■
| |

比较两种形式的revsets的输出(无论如何都是相同的输出)

<强>的后代()

>hg log -r "descendants(c9e3b41ec78f)" --template "{rev}:{node|short}\n"
59:c9e3b41ec78f
60:1393fe759096
61:e7ae9e5f725a
62:eed6619dadb8
63:c778bae76563
64:625d08492555
65:f202d72d6397

直接范围定义

>hg log -r "id(c9e3b41ec78f):tip" --template "{rev}:{node|short}\n"
59:c9e3b41ec78f
60:1393fe759096
61:e7ae9e5f725a
62:eed6619dadb8
63:c778bae76563
64:625d08492555
65:f202d72d6397

答案 1 :(得分:1)

这使得输出类似于hg tags

hg log -r "reverse(descendants(8bb6)) and tag()" --template "{tags}\t{rev}:{node|short}\n"

答案 2 :(得分:0)

您可以使用Nearest extension查找最接近修订版的转发标记。然后,根据您的工作流程,您应该能够轻松推断出哪个其他标记也包含您的更改。

您还可以使用以下内容从当前版本打印最新的后向标记:

hg log -l 1 --template "{latesttag}\n"

然后还推断出“覆盖”标签。