2

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

文件夹branch/featuretrunk的副本。

完成第 4 步后,功能分支对文件 b.txt 的所有更改都不再存在。

我认为这是在 svn 1.5 中修复的?

如果这不是一个选项,我仍然需要以某种方式重组我的整个存储库。当分支全部合并到主干时进行移动不是一种选择。我总是在任何时候至少有 1 个分支和主干。

4

3 回答 3

1

合并移动的文件是一个已知问题。但是,如果 subversion没有找到合并目标,它会通过此消息警告您:

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

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

我不知道有任何版本控制系统会自动进行此类合并。 编辑:看起来像在mercurial中,这样的合并确实遵循副本

于 2009-05-05T21:01:12.810 回答
0

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

于 2009-05-05T00:44:49.580 回答
0

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

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

于 2009-05-05T01:39:09.373 回答