差分またはパッチを反転|| CVSの差分
質問
CVSでは、私の作業コピー(WC)は、(私たちは「foo」という呼びます)は、特定の枝の上にあります。別のDEVでのfooにチェックインし、他の変更がありました。私は私のWCとのfooの上流の状態との間の差分をしたいです。トランク(HEAD)で作業する場合、通常、私はCVSの差分を行い、それは大丈夫です。しかし、ブランチでプレーンなCVSの差分を取るいくつかの理由で、diffは空です。私が使用しようとすると、「CVS差分-r foo」という、diffが現れ、それが反転している - 。上流の追加がマイナスで示されており、上流の削除がプラスで表示されます。
どのように私はどちらかのことができます:(1)差分に "他の方法"(プラス上流の追加のための)CVSを取得し、または(2)(一般的に)パッチを反転
?解決
、私はあなたがあなた自身あなたが更新する前に最新の変更を参照して見ることができる機能CVSビューア/ブラウザ/ウェブブツを取得示唆しています。しかし、あなたが持っているすべては、コマンドラインCVSである、私はとにかくあなたのソリューションを提供しようとすると仮定すると:)
だから、あなたがここに持っていることはfoo
から行った分岐A
ある - B
は、他の開発者のチェックイン後に(サーバー上の)ブランチの状態であり、かつB
はあなたが最後に作業を更新された状態である> A
、コピーします。
ちょうどこのような状況では、プレーンcvs diff
を行う場合、あなたはあなたのローカルな変更がA
に比べを参照してくださいよ。のA
はあなたがチェックアウトしたものであるから。ローカルCVS状態は、各ファイルがfooブランチ上のリビジョンから来ていることが示され、差分の時は、あなたのCVSクライアントは、サーバからそのリビジョンをダウンロードします。あなたのケースでは、私はあなたのcvs diff
が空であるので、あなたは何のローカルな変更を持っていない推測してます。
cvs diff -r foo
(またはA +変更)(現在A
である)、サーバーのfoo
に対しての差分のだB
行うときに次に、 - 、サーバーのB
から取得するために必要な変更をごA+changes
は正確であると他の開発者のチェックイン、プラス独自のローカルの変更の反対ます。
は、今、私はあなたがタグに設定されて何をすべきかと思いますあなたの作業コピーし、枝の状態に対して、そのタグの差分。このような何かます:
cvs tag pistos_temp1
cvs diff -r pistos_temp1 -r foo
# And clean up by deleting the tag afterwards:
cvs tag -d pistos_temp1
他のヒント
多分あなたがpatchutilsパッケージからinterdiff使用して行うことができます欲しいます。
私は、多くの場合、指定したファイルのトランクに変更されているものを見るために、このようにそれを使用します:
cvs diff -up -r1 givenfile | interdiff /dev/stdin /dev/null
あなたは、いくつかの一時ファイルへの分岐からファイルをエクスポートしようとすると、あなたの作業コピーと、この一時ファイル間の差分を作ることができます。最も簡単な方法のようです。