Mercurialを使用して、作業コピーをデフォルトのリモートリポジトリのtipファイルと簡単に比較する方法はありますか
質問
mercurialを使用する場合、ファイルの作業コピーをデフォルトのリモートリポジトリのtipファイルと比較できるようにしたいと思います。これを行う簡単な方法はありますか?
「hg incoming -p」を実行できることはわかっています。入ってくる変更のパッチセットを見るために、しかし、もし私が最新のものを引っ張るなら、私が得る特定のファイルの実際の変更を直接見るのは良いことですout)。
今考えられる最も簡単なことは、.hg / hgrcのデフォルトの場所を見て、curlを使用してファイルをダウンロードする小さなスクリプトを作成することです(httpの場合、それ以外の場合はsshでscp、またはローカルファイルシステム上にある場合は直接差分を実行します)、作業コピーまたはその一時コピーに対するヒントを差分します。
私は自分のチームに水銀を売ろうとしていますが、今日、チームメンバーの1人が、GUIツールを使用してSVNで簡単にできることとしてこれを取り上げました。
解決
掘り下げた後、 Rdiff拡張機能に出会いました。欲しいです。
Mercurialは付属していませんが、リポジトリを複製することでインストールできます:
hg clone http://hg.kublai.com/mercurial/extensions/rdiff
そして〜/ .hgrcファイルを変更して拡張機能をロードします:
[extensions]
rdiff=~/path/to/rdiff/repo/rdiff.py
既存の" hg diff"を実際に変更するという点で少し風変わりです。最初のパラメーターがリモートURLであるかどうかを検出してコマンドを実行します。その場合、そのファイルはローカルリポジトリのtipファイル(作業コピーではありません)と比較されます。これは、リモートリポジトリが最初の引数であるため、予想されるものと逆ですが、「-reverse」を渡すことができます。 hg diffコマンドを使用して、それを切り替えます。
これらは拡張機能の潜在的な拡張機能であることがわかりましたが、現時点では、starupファイルでbash / zshシェル関数を使用して回避できます。作業コピーの一時チェックイン(水銀トランザクションによって保持されているため、ロールバックできる)を実行し、リバースdiffを実行してから、トランザクションをロールバックして元の状態に戻します。
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>
他のヒント
ローカルに2つのリポジトリを用意してみてください。1つは受信用、もう1つは送信用です。そうすれば、どのツールでもdiffを実行できるはずです。こちらをご覧ください:
http://weblogs.java.net/blog /kohsuke/archive/2007/11/using_mercurial.html
Larsメソッドを拡張するには(何らかの理由でコメントが機能しない)、 diff
コマンドで -R
オプションを使用してローカルリポジトリを参照できます。そうすれば、 hg
テンプレートを使用すると、変更されたすべてのファイルのリストを取得できます。
hg incoming --template {files}