2

CVSでは、作業コピー(WC)は特定のブランチ(「foo」と呼びます)にあります。別の開発者によってfooにチェックインされた他の変更がありました。WCとfooのアップストリーム状態を比較したいと思います。通常、トランク(HEAD)で作業するときは、cvs diffを実行するだけで、問題ありません。しかし、何らかの理由で、ブランチでプレーンなcvs diffを実行すると、diffは空になります。「cvsdiff-rfoo」を使おうとすると、diffが表示されますが、逆になります。アップストリームの加算はマイナスで表示され、アップストリームの削除はプラスで表示されます。

どうすれば次のいずれかを行うことができます:(1)CVSに「他の方法」で差分をとらせる(さらにアップストリームの追加の場合)、または(2)パッチを反転させる(一般的に)?

4

3 に答える 3

3

おそらく、patchutilsパッケージのinterdiffを使用して、必要なことを実行できます。

私はよくこの方法を使用して、特定のファイルのトランクで何が変更されたかを確認します。

cvs diff -up -r1 givenfile | interdiff /dev/stdin /dev/null
于 2012-03-01T09:20:59.853 に答える
2

これの主な目的が中央リポジトリの「最新情報」を確認することである場合は、更新する前に最新の変更を参照および確認できる機能的なCVSビューアー/ブラウザー/Webを入手することをお勧めします。しかし、あなたが持っているのはコマンドラインCVSだけだと仮定して、とにかく解決策を提供しようとします:)

つまり、ここにあるのは->fooからのブランチです。ここで、は他の開発者のチェックイン後の(サーバー上の)ブランチの状態であり、作業コピーを最後に更新した状態です。ABBA

cvs diffこの状況でプレーンを実行すると、チェックアウトしたものと比較してA、ローカルの変更が表示されます。AローカルのCVS状態は、各ファイルがfooブランチのAリビジョンからのものであることを示し、CVSクライアントを差分すると、サーバーからそのリビジョンをダウンロードします。あなたの場合、あなたcvs diffは空なので、ローカルな変更はないと思います。

次に、あなたが行うとき、cvs diff -r fooあなたはあなたのローカルA(またはA +変更)をサーバーfoo(現在はにある)と比較しています-そしてサーバーからあなたBに取得するために必要な変更は他の開発者のチェックインとは正反対です、および独自のローカル変更。BA+changes

さて、B(またはtip-of-foo)がA(現在チェックアウトしているものの元のバージョン)とどのように比較されるかを本当に知りたい場合は、作業コピーにタグを設定する必要があると思います、次にそのタグをブランチの状態と比較します。このようなもの:

cvs tag pistos_temp1
cvs diff -r pistos_temp1 -r foo
# And clean up by deleting the tag afterwards:
cvs tag -d pistos_temp1
于 2009-12-08T23:29:13.317 に答える
0

ブランチから一時ファイルにファイルをエクスポートしてから、作業コピーとこの一時ファイルを比較することができます。それが最も簡単な方法のようです。

于 2009-12-08T14:25:54.703 に答える