hgバージョン間で変更されたファイルのリストの生成


118

Mercurialの特定のディレクトリにある2つのリビジョン間で変更されたファイルのリストを生成したいと思います。

特に、何が変更されたのかではなく、そのディレクトリでどのファイルが変更されたかに興味があります

たとえば、との間thenotherthen、2つのファイルのみが変更されたとします。

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>

架空のコマンドは何ですか?私はdiffとlogを試しましたが、それを行うように説得する方法がわかりません。patch(diff)を取得するか、repo(log)全体を取得します。

回答:


166
hg status --rev x:y

どこxyリビジョン番号(またはタグやブランチ名)を望まれています。

Windowsでターミナルを使用している場合は、追加hg status --rev x:y> your-file.txtしてリストをファイルに保存します。


3
:現在のディレクトリだけの変化を確認するにはhg status --rev x:y .
ユーザー

14
最新のリビジョンの変更を確認するには: hg status --rev .^
国頭

8
ファイル名のリストのみを取得するには(変更のタイプを示すプレフィックス文字を使用しない場合)、を追加します-n。つまり、hg status --rev x:y -n
Cheetah

1
hg status --change .変更されたファイルのリスト.-同じリストhg status --rev .^
Metaxis

14

ステータスはあなたが必要とするものです。

ただし、「2つのリビジョン間」の意味によっては、「x :: y」(DAG-有向非巡回グラフ)範囲の使用を検討することもできます。

並列チェンジセットを考えると、

1--2---4 \---3

hg status --rev 1:4 (1,2,3,4)を返します。つまり、ローカルの数値revに従って、エンドポイント間のすべての値を含みます。。これは(おそらく、おそらく)他のリポジトリでは異なる結果を返します(関連していますが)。

hg status --rev 1::4(1,2,4)、つまりエンドポイント、および子孫であるすべてのチェンジセットを返します「1」のであり「4」の祖先で。

後者の場合、x :: yは通常、実際のアプリケーションでより便利です。これはTortoiseHg \ Visual Diffを介して取得するものです。


> hg help revsets:

"x :: y" DAG範囲。xとy自体を含む、xの子孫でありyの祖先であるすべてのチェンジセットを意味します。最初のエンドポイントが省略された場合、これは「ancestors(y)」と同等であり、2番目のエンドポイントが省略された場合、「descendants(x)」と同等です。


1
おそらく、コマンドを明示的に含める必要があるので、あなたの答えは他のものに依存せず、より簡単にできます。「はい、ステータスは必要なものです。たとえば」のようなものhg status --rev x::y
PhoneixS 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.