2016-03-30 6 views

答えて

0

すべての回答は、作業環境に大きく依存しています(質問には記載されていません)。 CVS自体は、この機能自体を提供していませんが、チェックアウトのステータスを活用するソリューションをサポートすることができます。

GNU/Linuxなどのシェル環境を想定している場合は、CVSがローカルで変更、未コミット、または追加していないファイルのみを調べるスクリプトを作成することがあります。以下の解決策は、環境に依存し、むしろ厄介ですが、概念を説明しています。

サンプル・シェル・セッションは、次のようになります。

$ cvs -nq update 2>/dev/null \ 
> | awk '/^[M?]/ { system(sprintf("stat \"%s\"", $2)) }' - \ 
> | grep ^Modify: \ 
> | sort \ 
> | tail -1 
Modify: 2016-04-27 10:22:35.000000000 -0500 

このコマンドシーケンスは、チェックアウトの上部に実行された結果は、その中のすべてのサブディレクトリが含まれるようにします。

cvs -nq update 2</dev/nullコマンドは、ファイルステータスの比較的簡潔なレポートを生成します。アップストリームで更新された新しいファイル、不明なファイル、およびファイルがローカルで変更またはコミットされていないことだけを報告します。

2>/dev/nullは、cvsコマンドの無関係なstderr出力を抑制します。

awkステートメントは、正規表現を使用して、ローカルに追加され、ローカルに変更されたファイルのみをワークスペース内で照合します。次に、ファイルへの相対パスを抽出し、stat操作を実行して、各ファイルの変更時刻を取得します。

grepステートメントは、statコマンドの無益な出力を破棄します。

sortコマンドは出力変更時刻を古いものから最新のものに変更し、tail -1は最新の変更時刻のみを表示します。

最新のCVSで認識されたチェックアウトに対する「変更」は、結果にあり、「変更:」という単語に従います。

関連する問題