単一のファイルの履歴にのみ関心があります。ファイルに加えられたすべての変更を示す hg log を既に試しました。しかし、リポジトリ全体で作成されたブランチがあった場合、どのバージョンのブランチが取得したファイル (つまり、ヘッドに沿ったどの時点) ですか?
(グーグルも試してみましたが無駄でした。Mercurial を初めて使用するので、適切な検索用語を使用していない可能性があります。ただし、私の目標を明確に説明したことを願っています。)
よろしくお願いします!
単一のファイルの履歴にのみ関心があります。ファイルに加えられたすべての変更を示す hg log を既に試しました。しかし、リポジトリ全体で作成されたブランチがあった場合、どのバージョンのブランチが取得したファイル (つまり、ヘッドに沿ったどの時点) ですか?
(グーグルも試してみましたが無駄でした。Mercurial を初めて使用するので、適切な検索用語を使用していない可能性があります。ただし、私の目標を明確に説明したことを願っています。)
よろしくお願いします!
あなたは「svn」(またはCSV)の用語で考えています。あなたの質問は、Mercurial (または git) のコンテキストでは意味がありません。個々のファイルには、これらの DVCS のいずれにもバージョンがありません。バージョンはリビジョンと呼ばれ、リポジトリ全体に適用されます。svn のように、あるファイルのリビジョン X と別のファイルのリビジョン Y を「チェックアウト」することはできません。
したがって、あなたの質問に似た質問は、「ブランチYのファイルXを最近変更したリビジョンは何ですか」であり、その答えを得る1つの方法は次のとおりです。
hg log -r 'ancestors(Y)' X
また
hg log -r 'ancestors(default)' TODO
いくつかの具体的な値で。
これが必要かどうかはわかりませんが、次のいずれかを使用して、特定のファイル名を含むすべてのリビジョンを一覧表示できます
hg log -r "contains(filename)"
また
hg glog -r "contains(filename)"
より具体的なものが必要な場合は、オプションhg help revsets
の可能性を示す出力を確認してください。-r
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 の開始
Ry4an のログのタスク revset のテキストは、
"max(branch(Y) & contains(X))"