使用分支重组subversion存储库

时间:2009-05-05 00:18:28

标签: svn merge branch reorganize

我正在尝试重新组织具有分支的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中修复的?

如果这不是一个选项,我仍然需要以某种方式重新组织我的整个转发。当分支全部合并到主干中时执行移动不是一种选择。我总是在任何时候至少有一个分支加上主干。

3 个答案:

答案 0 :(得分:1)

合并移动的文件是known problem。但是,如果doesn't find the merge target

,subversion会通过此消息向您发出警告
  

跳过遗失的目标:'baz.c'

如果您看到此消息,则可能需要采取手动操作。如果文件已移动且新位置应接收更改,则可以考虑在重命名的实体之间进行子树合并。

我不知道有任何自动合并的版本控制系统。 编辑:看起来像mercurialmerges do follow copies

答案 1 :(得分:0)

提供有关步骤3和4的详细信息.Subversion合并与副本不同。

答案 2 :(得分:0)

您需要确保在步骤3中使用SVN重命名方法,以确保文件位置与未来的更改保持关联。

(我把这个拿出来......好吧,我不确定以下内容)移动/重命名文件时,祖先存在问题。确保在合并时未选中忽略祖先选项。