Mercurial への移行の準備として、何千もの ,v ファイルに体系的な変更を加えたいと考えています。(オリジナルのコピーを編集して、急いで追加します。)
私が求めている種類の変更の例:
- メッセージが既知のユーザー名を示すテキスト (例:
[Fred Bloggs]
) で始まる各リビジョンについて、コメント内のユーザー名が .v ファイル内の作成者と一致する場合、不要なユーザー名テキストをコミット メッセージから削除します。 - ,v に有用な説明が含まれている場合は、それをリビジョン 1.1 のコミット メッセージに追加します (cvs2hg は説明を無視しますが、多くの CVS ファイルは実際には RCS から取得したものであり、最初のコミット メッセージを説明フィールドに簡単に入力できます。間違い)
- 特定の共有ユーザー アカウントから行われた編集については、コミット メッセージの内容に応じて作成者を調整します。
私が検討したこと:
- 個々の .v ファイルごとに 'cvs log' を実行します - 出力を解析し、
rcs -m
この履歴を変更するために使用します。これには次のような問題があります。- テキストファイルを渡す方法がないようです
rcs -m
- そのため、リビジョンメッセージに一重引用符や二重引用符が含まれている場合、または複数行にまたがっている場合、スクリプトでそれを正しく引用するのは非常に困難です - リビジョンに関連付けられた作成者名を変更するための rcs または cvs 機能が見当たりません
- それほど重要ではありませんが、膨大な数のプロセスが開始される可能性があります-遅くなる可能性があると思います
- テキストファイルを渡す方法がないようです
- .vファイルを解析し、内容を調整するPython を作成します。これには次のような問題があります。
- ,v ファイルには、テキストであるはずのバイナリ ファイルやその逆の行末が混在しているため、ファイルが破損しないように細心の注意を払う必要があります。
- @ 文字が複数行コメントの行頭にある場合は、コミット メッセージで @ 文字を引用する際に注意が必要です。
- コミットされたファイルの最後の行が変更され、改行がないリビジョンでも注意が必要です。
\n
- 使用しているcvs2hgのバージョンを複製し、そのコードを調整して目的の編集をインプレースで行います。
作業が少ない他のアプローチや、この種の機能を実装する既存のコードはありますか?