0

単一のファイルの履歴にのみ関心があります。ファイルに加えられたすべての変更を示す hg log を既に試しました。しかし、リポジトリ全体で作成されたブランチがあった場合、どのバージョンのブランチが取得したファイル (つまり、ヘッドに沿ったどの時点) ですか?

(グーグルも試してみましたが無駄でした。Mercurial を初めて使用するので、適切な検索用語を使用していない可能性があります。ただし、私の目標を明確に説明したことを願っています。)

よろしくお願いします!

4

4 に答える 4

1

あなたは「svn」(またはCSV)の用語で考えています。あなたの質問は、Mercurial (または git) のコンテキストでは意味がありません。個々のファイルには、これらの DVCS のいずれにもバージョンがありません。バージョンはリビジョンと呼ばれ、リポジトリ全体に適用されます。svn のように、あるファイルのリビジョン X と別のファイルのリビジョン Y を「チェックアウト」することはできません。

したがって、あなたの質問に似た質問は、「ブランチYのファイルXを最近変更したリビジョンは何ですか」であり、その答えを得る1つの方法は次のとおりです。

hg log -r 'ancestors(Y)' X

また

hg log -r 'ancestors(default)' TODO

いくつかの具体的な値で。

于 2013-02-11T23:02:59.413 に答える
0

これが必要かどうかはわかりませんが、次のいずれかを使用して、特定のファイル名を含むすべてのリビジョンを一覧表示できます

hg log -r "contains(filename)"

また

hg glog -r "contains(filename)"

より具体的なものが必要な場合は、オプションhg help revsetsの可能性を示す出力を確認してください。-r

于 2013-02-11T23:16:56.497 に答える
0

glog次のコマンドを使用できます。

$ hg glog foo.py

の見出しにgraphlog追加hgext.graphlog =して、拡張機能を有効にする必要があることに注意してください。[extensions]~/.hgrc

$ cat ~/.hgrc
[extensions]
hgext.graphlog =
…
$

分岐がいつ行われたかを把握する簡単な手動の方法は、次を実行することです。

$ hg glog

次に、ファイル名を検索して、変更された変更セットを確認します。

または、次を実行できます。

hg log -r 'ancestors(mybranch)' myfile

への変更を含む mybranch 内と前の両方の変更セットをすべて表示するmyfileには、ブランチが取得される前にファイルを変更する最後の変更セットを探します。

$ hg log -r 'ancestors(mybranch)' myfile
変更セット: 30:3b2f7243c1ac
ユーザー: David Wolever <david@wolever.net>
日付: 2010 年 11 月 15 日月曜日 09:47:46 -0500
ファイル: myfile
説明:
何かをしている


changeset: 31:804257c328ab <-- 分岐前のファイルへの最後の変更
ユーザー: David Wolever <david@wolever.net>
日付: 2010 年 11 月 18 日木曜日 21:44:11 -0500
ファイル: myfile
説明:
物事を変える

changeset: 32:df26ccd32c38 <-- ブランチ内のファイルに変更が加えられました
ブランチ: mybranch
ユーザー: David Wolever <david@wolever.net>
日付: 2010 年 11 月 18 日木曜日 23:23:44 -0500
ファイル: myfile anotherfile
説明:
mybranch の開始
于 2013-02-11T22:15:37.293 に答える
0

Ry4an のログのタスク revset のテキストは、

"max(branch(Y) & contains(X))"
于 2013-02-12T05:54:55.190 に答える