「svn merge --reintegrate」を使用すると、トランク上で削除されたブランチ ファイルが削除されたことに関して、ブランチがトランクに正常にマージされました。これは私が期待し、望んでいたものです。良い。
ただし、ブランチに追加されたファイルはトランクに追加されませんでした。「svn merge --reintegrate」は追加されたファイルをトランクの作業ディレクトリにコピーしましたが、それらはsvnに追加されず、もちろんコミットされませんでした。私はこれを期待していませんでした。悪い。
ファイルの削除やファイルの追加など、ブランチからトランクへの変更を安全にマージするにはどうすればよいですか?
これが私がしたことです
my-bug-fix ブランチは、トランクの最後の公式リリースから作成されました。これは単一の開発者プロジェクトですが、マージを台無しにしてビルドを壊すことができました。
マージする前に、ブランチとトランクの両方を「ステージング」フォルダーにチェックアウトして、差分を簡単に作成できるようにしました。コミットする前に、マージが期待どおりであることを差分が保証してくれることを望んでいました。残念ながら、diff は、追加されたファイルが svn に追加されていないことを知りませんでした。
mkdir merge-staging
cd merge-staging
svn co https://myserver.com:8443/svn/myproject/branches/my-bug-fix/ branch
svn co https://myserver.com:8443/svn/myproject/trunk/ trunk
cd trunk
svn merge --reintegrate https://myserver.com:8443/svn/myproject/branches/my-bug-fix/
echo Perform diff between branch and trunk to verify the trunk now matches branch.
diff -r --exclude=".svn" branch/ trunk/
svn --version
svn, version 1.6.15 (r1038135)
compiled Nov 25 2010, 00:08:34
[esutton@esutton-vm-rhel merge]$ svn status trunk
X trunk/common/externals
? trunk/common/scripts/strip-dbg-sym.sh
どんな指示でも事前に感謝します、-Ed