0

我想获得特定文件的先前版本,无论它是否在提示中更改。

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

$:~/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

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

4

1 回答 1

1

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

hg log -r 'last(file("uic-version"))'
于 2013-06-04T18:37:01.587 回答