web-dev-qa-db-ja.com

v1.6でのSubversionブランチの再統合

この古い質問 ごとに、SVN 1.5を使用して、ブランチを複数回再統合することは問題があるため、回避する必要があります。

「これは既知の問題であり、SVN1.6で修正する必要がある」という趣旨のうわさがあります。そうだったの?修正されていますか?複数回再統合できますか?

49

ブランチtopicをトランクに繰り返しマージするには:次の手順を実行しますマージするたびに。

  1. svn merge --reintegrate <topic> <trunk>、通常どおり。 (=> rM
  2. svn merge --record-only -c M ^/<trunk> <topic>record-onlyオプションに注意してください。

ステップ2は基本的に、トピックブランチにマージコミット(ステップ1のリビジョンM)を履歴の一部と見なすように指示します。このマージリビジョンは、通常、再統合中に問題を引き起こすものです。 svnは、topicをもう一度統合するときに、rMを元に戻そうとします。

したがって、繰り返しの再統合は機能します、自動的には機能しません。 :)

私は最終的にこの解決策を svnソースへの啓発コミットメッセージ と一致する テスト (「defmultiple_reintegrates」を検索)を通して見つけました。これは、現在のリリースでsvn-devsによって発見され、使用されている「巧妙なトリック」です。 より最近のドキュメント にも追加されています。結果はまだDVCSのマージプロパティほど良くはありませんが、少なくとも機能的です。

唯一の大きな欠点(2010年6月2日現在の 未解決の問題 による)は、明らかにsvn log -gの出力が乱雑であるということです。これがリスクだと思います。

56

はい、できます。あなたが尋ねる問題はSubversion1.8で解決されました。

SVN 1.8以降、--reintegrateオプションは非推奨であり、再統合マージが自動的に実行されるようになりました(またはautomagically:))。 Subversion 1.8リリースノート を参照して更新を読んでください SVNBook 1.8 |ブランチの再統合 章:

ブランチをトランクに再統合した後にブランチを削除しないことを選択した場合は、引き続きトランクから同期マージを実行してから、ブランチを再度統合することができます。これを行うと、最初の再統合後にブランチで行われた変更のみがトランクにマージされます。

.。

Subversion 1.8のみが、この機能ブランチの再利用をサポートしています。以前のバージョンでは、機能ブランチを複数回再統合する前に、特別な処理が必要です。詳細については、この章の以前のバージョンを参照してください。 http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate

重要:Subversion 1.7以前をまだ使用している場合は、Subversionクライアントとサーバーをアップグレードする必要があります。 2016年現在のSVNの現在の最良バージョンは1.9です。1.5、1.6、さらには1.7などの非常に古いSubversionリリースを使用する本当の理由はありません。バージョン1.6以降、クライアント側とサーバー側で多くの改善がありました!

1
bahrep

1.6は確かにマージ追跡の問題を修正しましたが、統合されたブランチを再利用できるとは思いません。

しかし、これは問題ではありません。ブランチはトランクに完全に統合されたので、ブランチを削除して、その場所に新しいブランチ(同じ名前)を作成するだけです。

1
sbi