Mercurial-チェンジセットで変更されたすべてのファイル?


97

特定のチェンジセットで変更されたすべてのファイルをどのように判断できますか?

この場合、差分を探しているのではなく、追加/削除/変更のリストを探しています。

hg log -vprX 差分のリストを作成しますが、ファイルだけが必要です。


回答:


149

変更されたファイルのみを一覧表示する場合は、「ステータスコマンド」を使用する必要があります。次に、リビジョンREVのファイルへの変更を一覧表示します。

hg status --change REV

13
+1ですが、OPはおそらく-n/ --no-statusフラグも必要としています。
Niall C.

7
簡単にコピーする場合:hg status --no-status --change REV
zastrowm 2013

+1これは、hg status --rev REV~1:REV私が以前使用していたものよりも入力がはるかに簡単です。
Patrick Oscity 2014年

3
使用する '。' 現在のREVの場合。意味-hg status --change .
zaxy78

16

pから削除するだけhg log -vprでファイルのリストが表示されます。-pパッチを表示することを意味します。あなたも使うことができますテンプレートをて、好みに合わせて出力をフォーマットます。


3
次のテンプレートが必要になると思います。--template 'files:{files} \ n'
Ton Plomp

1
{files}は-vフラグのデフォルトテンプレートの一部だと
思い

2
hg log -r。--template '{join(files、 "\ n")}'で改行してファイルを区切る
Foxichu

1
@Foxichuコメントは私にとってはうまくいきましたが、ちょっとハッキーでした。実際には上の答え- hg status --change .うまく機能し、ファイルアクションプレフィックス(A \ M \ Dなど)と相対的なパスが向上しました
zaxy78 '26

13

質問は単一のチェンジセットに関するものであることはわかっていますが、すべてのファイルを一連のチェンジセット用に変更したい場合は、

hg status --rev 1 --rev 10 -m

2
ひどい悪い。範囲が変更されたファイルはhg log -r BEGIN:END --template "{files}\n"、@ geoffrey-zhengと@tonが2年前に
レイジーバジャー

申し訳ありません。彼らの答えは単一のチェンジセットに対するものであると仮定しました。
Nick DeVore

1
私の意見では、この答えはそれほどひどいものではありません。hg status --rev BEGIN --rev ENDです:1.より覚えやすいhg log -r BEGIN:END --template "{files}\n"; 2. sed(@Eric Lawler)またはjoin()(@Foxichu)を使用せずに、ファイルを別々の行に出力します。3. -mフラグがないと、変更されたファイルだけでなく、追加および削除されたファイルも表示されます(ここでも標準的なカラーリングが適用されます)。4. さまざまなフィルタリングを可能にするフラグが-aあり-rます。5.ステータスプレフィックスが必要ない場合は-n、それを抑制するオプションがあります。
のMichałWróbel

9

現在コミットされているリビジョン

hg status --change .

.@HEADGit と同様に、現在のリビジョンの省略形です

現在コミットされていないリビジョン

hg status

任意のコミットされた改訂

hg status --change REV_ID

1
最もシンプルで正確な答え!
zaxy78

2

同様の概念についてグーグルでこの質問を見つけました。一連のチェンジセットを通じて変更されたすべてのファイルを表示するには、次のように簡単です。

hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
  1. hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"各チェンジセットで変更または追加された各ファイルのリストが[start rev]から[end rev]まで表示され、各チェンジセットのファイルが新しい行に表示されます。スワップ{file_mods}{file_adds}{files}て、変更、追加、または削除されたすべてのファイルを表示します。
  2. sed -e 's/ /\n/g' すべてのファイルを分割して別の行に表示し、
  3. sort えーと、リストを並べ替えて、uniqでリストをフィルタリングできるようにします
  4. uniq リストをフィルタリングして重複(複数のリビジョンで変更されたファイル)を削除します。

このソリューションは、最後に変更されたファイルと最初に追加されたファイルを接着します。また、ファイル名のスペースは適切に処理されません。--templateこれらの欠点のないベースのソリューションを使用して構築することができjoin()@Foxichuによって示唆されているように。
のMichałWróbel

1

私はこの質問が古い質問であることを知っており、OPから変更されたコードを提供した人がいないことに驚いています。を実行するだけで、変更/追加/削除されたファイルのリスト(どちらのラベルでもありません)を取得しましたhg log -v。またはhg log -v -l5、過去5回のコミットで変更/追加/削除されたファイル(実際にリポジトリにまだプッシュしていないものも含む)を表示するために実際に必要なもの。


「誰もがちょうど修正されたコードフォームのOPを提供していない」 - @Geoffrey鄭は、その〜1hを正確にやった質問が投稿された後
のMichałWróbel

-2

あなたがほとんどのお店が好きなら、チケットシステムを使って変更を追跡します。チケット番号がわかっていて、そのチケットに関連付けられているすべてのコミットを検索したい場合(コミットメッセージにチケット番号を含める場合)、以下を使用できます。

hg log -k TICKET_NUMBER

これにより、チケットに関連付けられているすべてのリビジョンが表示されます。ただし、ファイルはリストされません。上記の回答の1つを使用して、リビジョンに関連付けられているファイルのリストを取得できます。

ただし、以前の回答の情報を組み合わせて簡単にするために、次のようにして、変更されたファイルを含むコミットを検索できます。

hg log -vk TICKET_NUMBER

これは質問に関連しています。ポスターは、チェンジセット内のファイルを取得する方法を尋ねました。チェンジセットはしばしばチケットに関連しています。私の解決策は、チケットに関連付けられた変更セットに関連するファイルを取得する方法を示しています。
iDimensionz 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.