私はsvnに「問題」があります.2つのブランチをマージすると、テキストに変更がないファイルのmergeinfoプロパティで変更が報告されることがある理由を理解できません。
それは正常な動作ですか?
そうでない場合、何が問題になる可能性がありますか?
2 に答える
さて、あなたはそれらの 2 つのブランチをマージしました。右?期待どおりに動作します。
あなたがしたことは、マージを行うことでした。マージによってコードが変更されることはなく、それはマージでは珍しくありませんが、Subversion は依然としてマージが行われたことをマークします。何の変更もなかったとしても、マージを行ったことをマークすることは良い考えです。リリースが行われ、誰かが「待って、誰もそのブランチをトランクにマージしませんでした! それが完了するまでリリースを遅らせる必要があります」と言っていると想像してくださいsvn:merge-info
。
そうです、あなたが見たものは正常な動作である可能性があります。
さて、あなたの質問が「私の変更がマージされなかった理由」である場合、それは別の問題です。通常、Subversion はマージをうまく処理しますが、いくつかのことを行う必要があります。
- 個々のブランチやファイルではなく、プロジェクトのルートからのみマージします。例外もありますが、ほとんどの場合、プロジェクトのブランチをマージする必要があります。そうしないと、あちこちに散らばってしまいます
svn:merge-info
。 --reintegrate
フラグをいつ使用するかを理解してください。ブランチ「A」があります (この例ではトランクを含む可能性があります)。ブランチ "A "からブランチ"B"を作成します。- 「A」から「B」にマージするときは、使用しません
--reintegrate
- 「B」から「A」にマージするときは、忘れずに を使用して
--reintegrate
ください。Subversion がマージを処理する方法を変更します。
- 「A」から「B」にマージするときは、使用しません
- Subversion は、非常に複雑なマージ状況をうまく処理できません。ブランチをたくさんのブランチにして、それらの間でマージを行ったり来たりすると、Subversion はめちゃくちゃになります。これが、機能ビジネスごとにブランチを作成しないように人々に伝える理由の 1 つです。これにより、さまざまなマージの追跡が難しくなり、Subversion でマージの問題が発生する可能性があります。おそらくこれは機能です: Subversion はこれらの非常に複雑なマージ状況をうまく処理できないため、それらを回避する必要があります。Subversion はそれを処理できないと単純に言って、非常に複雑なアンチパターン ブランチ スキームから多くのマネージャーを説得することができました。
- ファイルを手動でマージする場合 (多くの開発者はこれを好む: ブランチの変更をトランクに手動で適用する)、
svn merge --record-only
Subversion がマージを行ったことを認識できるように、 を使用します。開発者が一部のマージを手動で行い、他の開発者が Subversion にマージを許可すると、陽気さが続きます。
そのため、Subversion が必要な変更をマージしなかった場合は、 を--reintegrate
正しく使用していること、および上記の他の問題が発生していないことを確認してください。
svn:mergeinfo
プロパティは、リポジトリで実行されたマージに関する情報を追跡するために使用されます。
詳細については、SVNBook を参照してください: "Mergeinfo and Previews" .