0

この例は SVN 1.8 のものです。

トランクと機能ブランチで共通の手法を使用します。通常、フィーチャー ブランチはトランクの分岐によって作成されます。フィーチャー ブランチは、トランクからフィーチャー ブランチへの変更をマージ (リベース) することにより、トランクで継続的に最新の状態に保たれます。フィーチャー ブランチでの開発が完了すると、コンテンツはトランクにマージされます。

フィーチャー ブランチがマージされてトランクに戻されると、リベースによって作成されたものを含むフィーチャー ブランチへのすべての変更が、トランク内のファイル/フォルダーの svn:mergeinfo プロパティに記録されます。この結果の 1 つは、フィーチャー ブランチがトランクにマージされたときに、フィーチャー ブランチ (リベースを除く) で更新されていないファイルとフォルダーが変更済み (プロパティのみ) としてマークされることです。

なぜこれが必要なのですか?トランク ログは、トランクに関連する機能ブランチでフォルダー/ファイルの内容が変更されていないにもかかわらず、機能ブランチがトランクにマージされたときにこれらのフォルダー/ファイルが変更されたことを示しています。TortoiseSVN は、変更していない多くのフォルダ/ファイルが更新されていることを示しているため、これは開発者にとって非常に混乱しています。これは本当に望ましい動作ですか?

4

1 に答える 1

0

SVN は実際には、マージの追跡についてあまり賢くありません。「これらのバージョンの変更が最初にどこから来たのか」ではなく、「どのバージョンをマージするように指示したか」にのみ注意を払います。ブランチ全体をマージするように SVN に指示しました。そのため、SVN はまさにそれを行い、そのブランチのすべてのバージョンをマージ済みとしてログに記録しました。

とはいえ、オーバーヘッドの一部を排除するための措置を講じることはできます。プロジェクトの最上位フォルダーからのみマージを常に行う場合、その最上位フォルダーには mergeinfo しかありません。プロパティが設定された一連のサブフォルダーとファイルはありません。「リベース」マージを実行している間、プロジェクト内で特定のファイルとフォルダーを厳選する必要があるようです。これを避けることができれば、最終的なマージのために最上位のフォルダー プロパティのみが変更され、ログ データがよりきれいに見えるはずです。

于 2016-06-10T17:06:31.473 に答える