2011-06-27 13 views
10

CVSリポジトリに上位2つのリビジョンの差分を作成する方法はありますか?リビジョン番号とローカルチェックアウトファイルは気にしません。私が必要とするのは、diff b/wは最後のコミット、最後はコミットの前です。CVSのファイルの上位2つのリビジョンを比較する

答えて

21

次の2つのリビジョンを比較する

cvs diff -r FIRSTREVISION -r SECONDREVISION filename 

を使用することができます。

直接比較することは可能かもしれませんが、cvs log filenameの結果を処理して自動化することもできます。したがって、たとえば、あなたが

cvs log filename | grep ^revision | head -n 1 | cut -c 10- 

とあなたが一緒にこれらを統合するので、BASHスクリプトファイルを作成したい

cvs log filename | grep ^revision | head -n 2 | tail -n 1 | cut -c 10- 

と以前のリビジョンで最新のリビジョン番号を取得する(lastdiffと呼ばれると言います。 SH)含まれています

cvs diff -r $(cvs log $1 | grep ^revision | head -n 2 | tail -n 1 | cut -c 10-) -r $(cvs log $1 | grep ^revision | head -n 1 | cut -c 10-) $1 

をして、あなたは、パラメータとしてファイル名でそれを実行することで、あなたの差分を取得することができます、例えば./lastdiff.shファイル名。

+0

これは非常に便利です。しかし、ブランチにコミットされたコードに対してこの作業を行う方法があります。上記の解決策で、私は1.1と1.2の間のdiffを得ることができましたが、1.1と1.1.2.1の間の差分を取ってみたいと思います。 – user1305398

0

cvs diffを使用すると、チェックアウトされたローカルバージョンとヘッドに存在するバージョンの違いを確認できます。

cvs diff -r ver1 -r ver2 <FILE-NAME> 
0

私は、私が行方不明になった明白なCVSのオプションがあった期待していたが、borribleスクリプトのソリューションは、それをあるように思われます。何らかの理由であなたはまだCVSを使用している場合、あなたはこの改良が役立つかもしれません:

cvs diff $(cvs log $FILE | 
grep "^revision" | 
sed "s/^revision/-r/ 
2q") $FILE 

これは使用しています両方にsedの「CVSログ」の単一の呼び出しから2つの最新版を取得し、-rオプションを作成その出力から直接。

関連する問題