8

最近まで、WebスタジオのすべてのプロジェクトにSVNを使用してきましたが、SubversiveやTortoiseSVNなどのいくつかのクライアントには、特定のリビジョンで変更されたすべてのファイルを抽出できる非常に便利な機能があります。

Mercurialでそれを行う方法はありますか?GUIを介して行われるか、コマンドラインを介して行われるかは関係ありません。特定のチェンジセットで変更されたファイルのセットがあると非常に便利です。

PS私は最初にそれを間違えたに違いありません。ファイルのリストだけでなく、すべてのファイルを他のフォルダーにエクスポートしておくと便利です。

4

4 に答える 4

11

Jeromeの回答に基づいて、リビジョン4で変更されたファイルのコピーを取得します。

hg archive --type files --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles

これにより、リビジョン4に変更されたすべてのファイルが、ホームディレクトリにchangedfilesという名前の新しく作成されたディレクトリに配置されます。

次のように変更した場合:

hg archive --type zip --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles.zip

その後、zipアーカイブに表示されます。

これは、ファイル名にスペースがない場合にのみ機能することに注意してください。あなたがその失敗をした場合はhg status --print0 -r revision -r parent-of-revision、代わりに使用する必要がありますが、うまくいけば、それは必要ありません。

また、この例ではリビジョン番号「4」が2回表示されることにも注意してください。全体をシェルスクリプトで非常に簡単にラップすることができ、それはパラメータ化されるので、両方の場所で変更することを覚えておく必要はありません。

于 2009-12-18T19:41:41.667 に答える
7

これにより、リビジョン 4 で変更されたファイルのリストが得られます。

hg log -r 4 --template {files}

更新: 1 行に 1 つのファイルが必要な場合は、Hg book で説明されているスタイルを使用できます。

于 2009-12-18T09:36:36.017 に答える
1

ネッドに応じて、2 つのコマンドがあります。

  1. 特定のリビジョンに関連付けられた変更を取得するには、次を使用できますhg export

    hg export -r 23
    

これにより、すべての変更の差分が生成されます (実際には、適用する準備が整ったフォーマット済みのパッチ)

  1. 影響を受けたすべてのファイルの名前を取得するには、次を使用できますhg log

    hg log -r 23 -v
    

これにより、影響を受けたファイルの名前とともに、リビジョンのメタ情報が出力されます。

于 2009-12-18T09:20:51.270 に答える
0

このコマンドは、指定されたリビジョンで変更されたすべてのファイルの名前を出力します。

hg export revision_num | grep ^diff | cut -f 6 -d ' '
于 2009-12-18T09:14:12.283 に答える