2009-05-05 104 views
2

我正在尝试重新组织有分支机构的Subversion 1.6版本库。看起来,如果你在trunk中移动一个文件,并且该文件在分支中发生了变化,那么当这些变化合并到分支中时,它们就不再存在。用分支机构重组subversion版本库

我会尝试下面来说明:

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个分支和中继线。

+0

你是否在subversion邮件列表上提出这个问题?你可能有更大的机会在那里得到答案。 – lothar 2009-05-05 00:27:54

+0

我没有。我在那边张贴,看看我得到了什么。 – 2009-05-05 00:40:31

回答

1

合并移动的文件是known problem。然而,颠覆不向您发出此消息,如果它doesn't find the merge target

跳过缺少的目标:如果您看到此消息“baz.c”

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

我不知道任何版本控制系统会自动进行此类合并。 编辑:看起来像mercurial,例如merges do follow copies

0

提供步骤3和步骤4的详细信息。Subversion合并与复制不同。

0

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

(我正在拉出这个......以及我不确定以下内容)移动/重命名文件时存在血统问题。确保在合并忽略祖先选项时未选中。