SVN分支+切换后为什么会出现冲突

时间:2014-10-21 23:28:43

标签: svn tortoisesvn tree-conflict

我的工作副本指向Trunk。我有一个很大的代码更改,我还没有准备好提交到trunk,但我希望它在版本控制下,所以我决定分支(从我的工作副本创建存储库副本,而不是从Head;并选择Switch to Branch )。在操作结束时我得到了错误:One or more files are in a conflicted state.这看起来很奇怪;我的工作副本如何与我的工作副本中创建的全新分支冲突?

线索: 当我检查特定的树冲突时,我会看到如下消息:The last switch operation tried to delete/move/rename the file "xxx.cs", but the file was deleted, moved or renamed locally和其他类似的消息。 (在分支之前,我已将大量文件移动到新文件夹中,并重命名了一些文件)。

我可以安全地将冲突标记为已解决并且"保留本地文件" (在"本地添加的文件"冲突的情况下),不用担心丢失历史记录?

1 个答案:

答案 0 :(得分:0)

这是一个部分答案,因为我无法帮助我的工作副本如何与我的工作副本创建的全新分支发生冲突?'提供信息。我不确定究竟发生了什么,但你已经尝试提交两个逻辑变更集(一个新的分支,甚至可能不是来自HEAD;再加上未提交的工作)作为一个,这不是'好的开始。请参阅 Subversion Best Practices

要使用未提交的更改干净地创建一个trunk的分支,而不使用存储库浏览器,如果它与trunk不同,我将首先更新我的工作副本。然后svn将干净且更新的trunk副本复制到我的branches文件夹(我一直检查)并提交分支。如果有任何外部因素,我会更新svn。或者,我从repository browser中的主干分支并检查分支。

然后我会删除(不是svn delete)除分支中的.svn之外的所有内容,将当前工作集复制并粘贴到分支中,修复任何重命名并移动以保留历史记录("修复移动"现在可以在tsvn提交对话框中使用,以帮助解决此问题),并将更改作为单独的操作提交。

回答问题'我可以安全地将冲突标记为已解决并且"保留本地文件" (在"本地添加的文件"冲突的情况下),不用担心丢失历史记录?'如果所有的工作都已提交(参见svn log),那么这是一个合格的是,所有你正在做的就是清理工作副本。但是,为了安全起见,我会将此工作副本重命名并将其放在一边。然后我会干净地查看分支的新副本并在那里继续我的工作。由于我们不是100%清楚这里发生的事情,我强调要采取安全的选择。

现在测试将新分支合并回主干也是可取的,因为当你将它合并回来时,你将不会有一个痛苦的世界。如果测试合并失败,您可能希望再次分支,确保您使用干净的未修改的最新主干副本启动分支。