如何获取特定文件的先前变更集ID

时间:2013-06-04 18:27:58

标签: mercurial

我想获得特定文件的先前修订版,无论是否在提示中进行了更改。

例如,我有一个在变更集226处有提示的仓库

$:~/sandbox$ hg log -r -3::.
changeset:   224:591c7a48b15f
user:        blah <blah.com>
date:        Tue May 28 09:07:25 2013 -0700
summary:     TEST: test

changeset:   225:8c3689dedfa8
user:        blah <blah.com>
date:        Tue May 28 09:07:53 2013 -0700
summary:     TEST: test2

changeset:   226:88f5ee46f99b
tag:         tip
user:        blah <blah.com>
date:        Tue May 28 09:42:46 2013 -0700
summary:     TEST:test

在repo里面是一个名为doit的文件,前一段时间更改了,在更改集158:

$:~/projects/sandbox$ hg log  doit
changeset:   158:8536d2b52f24
user:        blah <blah.com>
date:        Thu May 03 18:56:50 2012 -0700
summary:     TEST: clean up buiild

changeset:   121:82313616d631
user:        blah <blah.com>
date:        Wed Apr 06 14:04:55 2011 -0700
summary:     scr3: created program to test UI tests in Hudson

changeset:   116:c668d2a9c2b2
user:        blah <blah.com>
date:        Tue Feb 15 11:31:31 2011 -0800
summary:     TEST: add another line

changeset:   115:9affabd80774
user:        blah <blah.com>
date:        Tue Feb 15 11:21:01 2011 -0800
summary:     TEST: modify doit

changeset:   114:4097920e7edb
user:        blah <blah.com>
date:        Tue Feb 15 11:18:58 2011 -0800
summary:     TEST: add doit

我可以使用hg cat转储文件的内容:

$:~/projects/sandbox$ hg cat -r 158 doit
#! /bin/sh

echo doit for the sandbox hudson test job...
echo add another line out
echo add yet another line...

#ant clean build

到目前为止一切顺利。问题是如何在不明确指定“158”的情况下指定文件的先前版本(doit)。 (例如,我必须搜索hg日志输出。)

我试过了:

hg log -r -2 doit
hg log -r "ancestor(.)" doit
hg log -r "ancestor(file(doit))"
hg log -r "limit(file(doit))"
hg log -r "limit(file(doit)~0)"
(etc.)

我终于尝试了这个似乎有效的方法:

$:~/sandbox$ hg log -r "last(file(doit))"
changeset:   158:8536d2b52f24

但是当我尝试对付另一个回购并提交文件时:

$:~/projects/otherrepo$ hg log -r "last(file(file-version))"
hg: parse error: file requires a pattern

似乎短划线“ - ”导致语法问题。我试图逃避它:

$:~/projects/otherrepo$ hg log -r "last(file(uic\-version))"
hg: parse error at 13: syntax error

关于下一步尝试的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以使用不同类型的转义:

hg log -r 'last(file("uic-version"))'
相关问题