質問

SVN にコミットするとき、コミット内容の詳細を示すトップレベルのコミット メッセージを追加できますが、理想的には、個々のファイルとそのファイル内で何が変更されたかについてコメントする手段が必要です。以前の仕事でも似たようなことを見たことがあるが、これは CVS を使用していた (そして、これがスケルトン ファイルを生成するための自作スクリプトで実現されたかどうか思い出せない)

私は変更リストを調べましたが、これが以下に概説するような粒度を与えるとは(私が間違っていると証明されるのは覚悟の上ですが)やはり思いません。

理想的には、次のようなものを探しています。

Foo.vb

  • 新しいファンクションバーを追加しました

Bar.vb

  • 関数 foo を削除しました
  • ABC +/-修正機能を行うためにXYZに機能を追加してエラーを記録します
役に立ちましたか?

解決

これを個別のコミットメッセージで行うだけです。 TortoiseSVN ファイル名の自動補完機能があるので、これが非常に役立ちます。

もう 1 つの方法は、コミットする前に svn st を実行し、ファイル名をコピーしてコミット メッセージに貼り付けることです。

ああ、この価値については必ず強く疑ってください。一部の OSS プロジェクト (Linux?) ではこの種の忠実度が必要であることは知っていますが、多くのプロジェクトではこれは単なるノイズにすぎません。Diff は、これよりもさらに多くのことを、より正確に伝えることができます。

もう 1 つ考慮すべきことは、 ギット. 。Git を使用すると、より小さなステップでローカルにコミットできます。次に、すべてのコミットを個別にマスター サーバーにプッシュするか、すべてのコミット メッセージを 1 つのメッセージにまとめて 1 つのコミットにまとめます。以上、かなり簡略化して説明しましたが、チェックしてみる価値はあるでしょう。

他のヒント

1 つの特定のタスクが完了するたびにコミットすることができます。いずれにせよ、それはより良いコメントにつながるはずです。必要な 3 つのファイルに関する「電子メール検証の実装」というコメントを見ると、「verify_email 関数の追加」よりも多くのことがわかります。後者は差分で確認できます。

SVN と CVS の重要な違いの 1 つは、変更がアトミックにコミットされることです。CVS では各ファイルに独自のバージョンがありますが、SVN ではバージョンはプロジェクト全体のものであり、一緒にチェックインされたすべてのファイルが含まれます。

解決策として 4 つのアイデアを示します。

  1. 各プログラムを、独自のログ メッセージとともに個別にチェックインします。これは、たとえば 5 つのファイルをチェックインした場合、5 つのバージョンを「使い切る」ことになり、そのうち 4 つはビルドの破損につながる可能性があることを意味します。
  2. 開発は別のパスで実行します (つまり、独自のプライベート ブランチ) を作成し、上記の手順を実行してから、適切なタイミングでブランチをトランクにマージします。
  3. すべてをまとめてチェックインし、個々のレコードをコメントとしてプログラム ヘッダーに保存します。これは (少し) 余分な作業を意味するかもしれませんが、いずれにしても個々のログイン メッセージを作成する必要があります。
  4. すべてのファイルに対して 1 回のチェックインを実行しますが、各ファイルの各部分の詳細を示す完全なログ メッセージが表示されます。

私はこの種のことを行うためのプロジェクトを書きました。 モアプ

その機能の 1 つは、ローカル diff から ChangeLog エントリを生成することです (現在、bazaar、cvs、svn、git、darcs をサポートしています)。これを行うには、「moap changelog prepare」または「moap cl prep」を実行します。このオプションを有効にすると、そのエントリには変更された関数も含めることができます。

次に、そのエントリを変更し、変更内容を説明します。次回のコミットの一部としてコミットしたくないファイルを削除できます。

次に、「moap changelog commit」を実行して、ChangeLog エントリに記載されている変更をコミットできます。そこにリストされているファイルのみがコミットされ、他の変更はすべてローカルに残ります。

お役に立てば幸いです!

コミットされた各ファイル内でのコメントの記述方法に関して何らかのルールがあれば、このような結果が得られる可能性があります。これらのコメントは、その後 svn トリガーによって抽出できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top