我正在尝试重新组织具有分支的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中修复的?
如果这不是一个选项,我仍然需要以某种方式重新组织我的整个转发。当分支全部合并到主干中时执行移动不是一种选择。我总是在任何时候至少有一个分支加上主干。
答案 0 :(得分:1)
合并移动的文件是known problem。但是,如果doesn't find the merge target:
,subversion会通过此消息向您发出警告跳过遗失的目标:'baz.c'
如果您看到此消息,则可能需要采取手动操作。如果文件已移动且新位置应接收更改,则可以考虑在重命名的实体之间进行子树合并。
我不知道有任何自动合并的版本控制系统。 编辑:看起来像mercurial,merges do follow copies
答案 1 :(得分:0)
提供有关步骤3和4的详细信息.Subversion合并与副本不同。
答案 2 :(得分:0)
您需要确保在步骤3中使用SVN重命名方法,以确保文件位置与未来的更改保持关联。
(我把这个拿出来......好吧,我不确定以下内容)移动/重命名文件时,祖先存在问题。确保在合并时未选中忽略祖先选项。