ノード: Changing A Log Message After Commit, 次: , 前: Log Messages And Commit Emails, 上: Advanced CVS



Changing A Log Message After Commit

後悔するようなログメッセージをコミットしてしまった場合には、CVS では コミットしたあとでそのログを書き直すことができます。これは admin コ マンドの -m オプションででき(このコマンドについてはこの章のもう少し 後で説明します)、一度に1つのログメッセージ(リビジョン毎、ファイル毎) を変更できます。どのように動くか見てみましょう:

     floss$ cvs admin -m 1.7:"Truncate four-digit years to two in input." date.c
     RCS file: /usr/local/newrepos/someproj/date.c,v
     done
     floss$
     

リビジョン1.7とともにコミットされた元の無礼なログメッセージは、完璧 に無垢なメッセージ(退屈にはなりましたが)に置き換えられました。(リビ ジョン番号と新しいログメッセージの間のコロンを忘れないようにして下さ い。)

複数のファイルに良くないメッセージがコミットされてしまった場合、1つ ずつ cvs admin を実行しなければなりません。各ファイルでリビジョン番 号が違うからです。ですから、これは CVS では数少ない、引数にファイル 名を1つだけ渡すコマンドなのです:

     floss$ cvs admin -m 1.2:"very boring log message" hello.c README.txt foo.gif
     cvs admin: while processing more than one file:
     cvs [admin aborted]: attempt to specify a numeric revision
     floss$
     

まぎらわしいことに、ファイル名を渡さなかった場合にも同じエラーになり ます(なぜならそのような場合にはカレントディレクトリ及びそれ以下にあ るすべてのファイルを指定したことになるからです):

     floss$ cvs admin -m 1.2:"very boring log message"
     cvs admin: while processing more than one file:
     cvs [admin aborted]: attempt to specify a numeric revision
     floss$
     

(このように不幸にも CVS のエラーメッセージが出てしまった場合には、 CVS の視点に立ってそのメッセージの意味を読み取らねばなりません。)

admin -m を実行すると、そのプロジェクトの履歴を変えてしま うことになるので注意して使って下さい。ログメッセージが変更されたとい う記録は残りません。ただ、そのリビジョンは最初からその新しいメッセー ジでコミットされたかのように見えるのです。古いログメッセージの痕跡は どこにも残されません(元のコミットメールをセーブしているのでなければ)。

名前からするとこのコマンドは指定された CVS の管理者にしか使えないよ うに見えますが、実際は、そのプロジェクトの書込み権限さえあれば誰でも cvs admin を実行することができます。それでもやはり注意し て使うのが一番良いでしょう。プロジェクトの履歴を変えられるというのは 他の有害なものに匹敵するようなことができてしまいます。 admin については CVS Reference に詳しいです。使用を制限 する方法も書いてあります。