我创建了一个功能分支来与主干并行工作。
在短时间内,我做了大量的结构(文件夹)更改。例如,我移动了以前打开的文件夹:
application/views/scripts/users/*
自:
application/modules/user/views/scripts/users/*
现在,我正在尝试从主干合并到这个功能分支,我正在建立一百万个树冲突!问题是,由于出现了此树冲突,因此该树中的任何文件都不会针对任何内容进行合并。
我的意思是,我发现树冲突:
application/views/scripts/users (SVN message: "The last merge operation tried to modify the directory 'users', but it was deleted, moved or renamed locally")
并且该路径内的所有文件和其他文件夹均未合并。
有没有办法恢复文件夹的原始位置和当前位置之间的"链接"?
我可以做些什么来处理这个问题吗?
不仅仅是一个解决方案,我可以给出一个解决方法,那就是我使用过的解决方法,因为似乎没有真正的解决方案。
经过一番研究,我几乎确定SVN不支持这种合并功能。在TortoiseSVN的文档中说:
本地缺失,合并时传入编辑
在主干上工作的开发人员 A 修改 Foo.c 并将其提交到 存储 库
在分支上工作的开发人员 B 将 Foo.c 移动到 Bar.c 并将其提交到 存储库
开发人员 A 的主干更改合并到开发人员 B 的分支工作 复制会导致树冲突:
Bar.c 已经在工作副本中,状态为"正常"。
Foo.c 被标记为缺失,并带有树冲突。
若要解决此冲突,开发人员 B 必须将文件标记为已解决 在冲突编辑器对话框中,这会将其从冲突中删除 列表。然后,她必须决定是否复制丢失的文件Foo.c 从仓库到工作副本,是否合并开发者 A 将 Foo.c 更改为重命名的 Bar.c 或是否忽略 通过将冲突标记为已解决而不执行任何其他操作来进行更改。
这意味着你必须决定,一次一棵树冲突,该怎么做。这还不是最糟糕的部分。就我而言,真正不可接受的是,每次我从主干到这个分支进行新的合并时,我都会被迫再次处理这种冲突。
解决方法
将分支上所做的结构更改复制到主干中(对代码进行所需的更改)并使其与它们一起使用。
提交后,这会更改文件的两种结构,主干和分支将匹配,因此以后的合并操作将不再抱怨。
我从您的问题中了解到,您在分支中进行了大量文件夹结构更改,并且由于这些更改不在您的主干中,并且当您尝试合并时,您会收到错误。
根据您的陈述,"现在,我正在尝试从主干合并到此功能分支"
首先,当您从主干中取出分支并在分支中进行结构更改时,您应该将这些更改从"分支合并到主干",或者如果您只是想获取原始结构("恢复文件夹的原始位置")然后只需还原您在分支中所做的更改。
希望这有帮助。