CVSリポジトリの上位2つのリビジョンでファイルの差分を作成する方法はありますか?リビジョン番号とローカルのチェックアウトファイルは気にしません。必要なのは、最後のコミットと最後のコミット前の差分です。
使用できます
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
ファイル名。
私が見逃していた明らかなcvsオプションがあることを望んでいましたが、borribleのスクリプトによる解決策はそれであるようです。何らかの理由でまだcvsを使用している場合は、この改良が役立つことがあります。
cvs diff $(cvs log $FILE |
grep "^revision" |
sed "s/^revision/-r/
2q") $FILE
これは、sedを使用して、「cvs log」の1回の呼び出しから2つの最新のリビジョンを取得し、その出力から直接-rオプションを作成します。
cvs diff
を使用して、ローカルでチェックアウトされたバージョンとヘッドに存在するバージョンの違いを確認できます。
cvs diff -r ver1 -r ver2 <FILE-NAME>