0

ヒントで変更されたかどうかに関係なく、特定のファイルの以前のリビジョンを取得したいと思います。

たとえば、変更セット 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

そのリポジトリ内には、チェンジセット 158 で少し前に変更された doit というファイルがあります。

$:~/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 に答える