1

我创建了一个功能分支来与主干并行工作。

在分支中,我做了大量的结构(文件夹)更改。例如,我已经移动了之前打开的文件夹:

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")

并且该路径内的所有文件和其他文件夹都没有被合并。

有没有办法恢复文件夹的原始位置和当前位置之间的“链接”?

我可以做些什么来解决这个问题吗?

4

2 回答 2

0

不仅仅是一个解决方案,我还可以提供一个解决方法,即我使用过的解决方法,因为似乎没有真正的解决方案。

经过一番研究,我接近确定 SVN 不支持这种合并功能。在 TortoiseSVN 的文档中,据说:

本地缺失,合并时传入的编辑

开发主干的开发人员 A 修改 Foo.c 并将其提交到存储库

在分支上工作的开发人员 B 将 Foo.c 移动到 Bar.c 并将其提交到存储库

开发人员 A 的主干更改合并到开发人员 B 的分支工作副本会导致树冲突:

Bar.c 已经在工作副本中,状态为“正常”。

Foo.c 被标记为缺少树冲突。

要解决此冲突,开发人员 B 必须在冲突编辑器对话框中将文件标记为已解决,这会将其从冲突列表中删除。然后她必须决定是否将丢失的文件 Foo.c 从存储库复制到工作副本,是否将开发人员 A 对 Foo.c 的更改合并到重命名的 Bar.c 中,或者是否通过将冲突标记为已解决来忽略更改并且什么也不做。

这意味着你必须决定,一次一棵树冲突,做什么。这还不是最糟糕的部分。在我的情况下,真正不能接受的是,每次我从主干到这个分支进行新的合并时,我都将被迫再次处理这种冲突。

解决方法

将在分支上所做的结构更改复制到主干中(以及所需的代码更改)并使其与它们一起使用。

提交此更改后,文件的两个结构,主干和分支将匹配,因此以后的合并操作将不再抱怨。

于 2012-06-13T15:30:33.400 回答
-1

我从您的问题中了解到的是,您在分支中进行了很多文件夹结构更改,并且由于这些更改不在您的主干中,并且当您尝试合并时,您会收到错误消息。

根据您的声明,“现在,我正在尝试从主干合并到此功能分支”

首先,当您从主干中取出一个分支并在您的分支中进行结构更改时,您应该将这些更改从“分支到主干”合并,或者如果您只是想获得原始结构(“恢复原始位置文件夹”)然后只恢复您在分支中所做的更改。

希望这可以帮助。

于 2012-06-13T11:56:37.497 回答