web-dev-qa-db-ja.com

CVSでファイルの上位2つのリビジョン間の差異を取得する

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

13
Babu S

使用できます

cvs diff -r FIRSTREVISION -r SECONDREVISION filename

2つのリビジョンを比較します。

必要な比較を直接行うことも可能かもしれませんが、cvs log filenameの結果を処理することで自動化することもできます。したがって、たとえば、最新のリビジョン番号を取得します

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

および以前のリビジョン

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

これらをマージしたいので、以下を含むBASHスクリプトファイル(たとえば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ファイル名。

30
borrible

私が見逃していた明らかなcvsオプションがあることを望んでいましたが、borribleのスクリプトによる解決策はそれであるようです。何らかの理由でまだcvsを使用している場合は、この改良が役立つことがあります。

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

これは、sedを使用して、「cvs log」の1回の呼び出しから2つの最新のリビジョンを取得し、その出力から直接-rオプションを作成します。

1
oracleif

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

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