実際にコミットする前にCVSに送信される内容をどのように確認しますか?

実際にコミットする前にCVSに送信される内容をどのように確認しますか?

cvs commitコマンドを実行する前に、正確に何をコミットするかを知りたいです。最近、次のようにファイルを追加しました。

cvs add myFile

次に、次のようにファイルを送信します。

cvs commit -m "my message"

ところで、commitコマンドを実行したところ、最終的に他のファイルを修正するようになり、変更する意図がなかったか、コミットされるとは思わなかったファイルが削除され、そのファイルを一つずつ復元しなければなりませんでした。そこが待機場所というようなのに?追加されたがまだ送信されていないファイル、または送信する準備が整ったファイルはどこにありますか?私は実際にcvs commitコマンドを実行する前にどのような変更が適用されるかを確認したかったのです。

答え1

cvs長く使っていませんでした。下位バージョンsvnと水銀が優れてhgいます。アトミックコミットがあります(すべてのファイルが一緒にコミットされるため、ワンステップでコミット全体をバックアップできます)。

送信するファイルを指定します。cvs commit -m '«message»' '«file-names…»'

#↳ cvs --help コミット
使用法: cvs commit [-cRlf] [-m msg -F ログファイル] [-r rev] ファイル...

および/またはcvs statusあなたが探している情報を見つけるため。

cvs statusコマンドを使用すると、どのファイルが最新であるか、どのファイルをコミットまたはマージする必要があるかをすばやく確認できます。 … … —— https://www.oreilly.com/library/view/essential-cvs/0596004591/ch03s04.html#:~:text=%20cvs%20status%20command%20is、マージ済み

答え2

updateコミットするファイルを指定していない場合は、このコマンドを使用してコミットする変更および追加されたファイルを表示できます。アップデート(模擬実行)をシミュレートするオプションを追加します-n

$ cvs -n up
cvs update: Updating .
M foo
A yum

yum追加されたファイルと変更されたファイルを表示しますfooup例エイリアスupdate、参照cvs --help-synonyms)。

答え3

OPはどの変更がコミットされるかを具体的に考慮し、cvs status現在のディレクトリにファイルが多いと時間がかなり長くなることがあります。

cvs status | grep -P 'Status: (?!Up-to-date)'

まだリビジョン管理対象ではなく、最新のファイルのみを表示するために使用できます。これには、まだチェックインされていないファイルや送信準備が完了していないファイル(CVSが全く知らないファイルなど)の関連性の低い情報が含まれる場合があります。しかし、努力は少なくなければなりません。これは、grepバージョンが-P "Perlスタイル正規表現"オプションをサポートしていると仮定します。

Freddyの方法は同様の出力を提供し、はるかに高速です。

関連情報