13

Mercurial を使用している場合、デフォルトのリモート リポジトリにあるファイルの作業コピーとヒント ファイルを比較できるようにしたいと考えています。これを行う簡単な方法はありますか?

「hg incoming -p」を実行して、入ってくる変更のパッチ セットを確認できることはわかっていますが、プルを実行した場合に得られる特定のファイルの実際の変更を直接確認するだけでよいでしょう。最新のもの(または私がプッシュアウトしようとしているもの)。

今考えられる最も簡単な方法は、.hg/hgrc のデフォルトの場所を確認し、curl を使用してファイルをダウンロードする小さなスクリプトを作成することです (http 経由の場合は、そうでない場合は ssh 経由で scp するか、単にローカル ファイル システム上にある場合は直接 diff を実行してから、作業コピーまたはヒントをその一時コピーと比較します。

私は自分のチームに mercurial を販売しようとしていますが、私のチーム メンバーの 1 人が、GUI ツールを使用して SVN で簡単に実行できるものとして、今日これを持ち出しました。

4

4 に答える 4

5

掘り下げた後、私がやりたいことのほとんどを行うRdiff 拡張機能に出会いました。

Mercurial には付属していませんが、リポジトリをクローンすることでインストールできます。

hg clone http://hg.kublai.com/mercurial/extensions/rdiff 

~/.hgrc ファイルを変更して、拡張機能をロードします。

[extensions] 
rdiff=~/path/to/rdiff/repo/rdiff.py

最初のパラメーターがリモート URL であるかどうかを検出することによって、既存の "hg diff" コマンドを実際に変更するという点で、少し風変わりです。そうである場合は、そのファイルをローカル リポジトリ (作業コピーではない) のヒント ファイルと比較します。これは、リモート リポジトリが引数の最初にあるため、予想とは逆ですが、「--reverse」を hg diff コマンドに渡して切り替えることができます。

これらは拡張機能の潜在的な拡張機能であることがわかりましたが、今のところ、スターアップ ファイルで bash/zsh シェル関数を使用してそれらを回避できます。作業コピーの一時チェックイン (ロールバックできるように Mercurial トランザクションによって保持されます) を実行し、逆差分を実行してから、トランザクションをロールバックして元の状態に戻します。

hgrdiff() {
    hg commit -m "temp commit for remote diff" && 
    hg diff --reverse http://my_hardcoded_repo $* &&
    hg rollback      # revert the temporary commit
}

そして、次のように呼び出します。

hgrdiff <filename to diff against remote repo tip>
于 2008-10-02T20:57:34.837 に答える
2

Lars メソッドを拡張するには (何らかの理由でコメントが機能しない)、コマンドの-Rオプションを使用しdiffてローカル リポジトリを参照できます。そうすれば、指定した同じ差分アプリケーションを使用できますhg

于 2008-10-01T13:38:52.933 に答える
2

ローカルに 2 つのリポジトリを用意してみてください。1 つは着信用、もう 1 つは発信用です。その後、任意のツールで diff を実行できるはずです。ここを参照してください:

http://weblogs.java.net/blog/kohsuke/archive/2007/11/using_mercurial.html

于 2008-10-01T05:30:08.600 に答える
0

テンプレートを使用すると、変更されたすべてのファイルのリストを取得できます。

hg incoming --template {files}
于 2010-07-29T21:19:14.947 に答える