ブランチを使用したSubversionリポジトリの再編成
-
03-07-2019 - |
質問
ブランチがあるSubversion 1.6リポジトリを再編成しようとしています。トランク内のファイルを移動し、そのファイルにブランチで変更がある場合、それらの変更がブランチにマージされると、それらはもはや存在しないようです。
以下に説明します:
1. Repo before move
trunk/a.txt
trunk/b.txt
branches/feature/a.txt
branches/feature/b.txt
2. File branches/feature/b.txt is changed.
3. Repo reorganized
trunk/a.txt
trunk/new-location/b.txt
branches/feature/a.txt
branches/feature/b.txt
4. Changes from trunk merged to feature
trunk/a.txt
trunk/new-location/b.txt
branches/feature/a.txt
branches/feature/new-location/b.txt
ブランチ/機能フォルダは、トランクのコピーです。
ステップ4が完了すると、機能ブランチからのファイルb.txtへのすべての変更はなくなります。
これはsvn 1.5で修正されたと思いますか?
これがオプションではない場合、私はまだ何らかの形で私の投稿全体を再編成する必要があります。ブランチがすべてトランクにマージされたときに移動を行うことはオプションではありません。常に1つ以上のブランチとトランクが常にあります。
解決
移動したファイルのマージは、既知の問題です。ただし、マージターゲットが見つかりません:
欠落しているターゲットをスキップしました: 'baz.c'
このメッセージが表示された場合は、手動での対応が必要になる場合があります。ファイルが移動され、新しい場所が変更を受信する必要がある場合、名前が変更されたエンティティ間でサブツリーのマージを検討することができます。
このようなマージを自動的に行うバージョン管理システムは知りません。 編集: mercurial など、マージ do フォローコピー。
他のヒント
ステップ3および4の詳細を提供します。Subversionのマージはコピーとは異なります。
ステップ3でSVN名前変更メソッドを使用して、ファイルの場所が今後の変更に関連付けられたままであることを確認する必要があります。
(私はこれを引き出しています...まあ、次のことはわかりません)ファイルを移動/名前変更するときに祖先に問題があります。祖先を無視するオプションをマージするときに選択されていないことを確認してください。