使用TortoiseSVN更新本地存储库时发生冲突:上下文菜单项的作用是什么?

使用TortoiseSVN更新本地存储库时发生冲突:上下文菜单项的作用是什么?,svn,tortoisesvn,merge-conflict-resolution,Svn,Tortoisesvn,Merge Conflict Resolution,我有时会在更新我的工作副本时遇到冲突,我相信你们中的许多人都会这样做,我只是对Tortoise上下文菜单中的可用选项感到困惑。(到目前为止我一定是双击了…) 有人能解释一下前三个菜单选项的好处吗? 我认为他们是这样做的: “与工作副本进行比较” 我想这会将我本地拥有的内容与服务器上当前HEAD版本中的内容进行比较。但现在我不确定了。它是否比较了我当前在WC中的内容与我签出时代码的外观(即WC与旧版本) “编辑冲突”: 头和厕所 “标记为已解决”: 不知道我什么时候会用这个 不幸的是,这些文档似

我有时会在更新我的工作副本时遇到冲突,我相信你们中的许多人都会这样做,我只是对Tortoise上下文菜单中的可用选项感到困惑。(到目前为止我一定是双击了…)

有人能解释一下前三个菜单选项的好处吗?

我认为他们是这样做的:

“与工作副本进行比较”
我想这会将我本地拥有的内容与服务器上当前HEAD版本中的内容进行比较。但现在我不确定了。它是否比较了我当前在WC中的内容与我签出时代码的外观(即WC与旧版本)

“编辑冲突”
头和厕所

“标记为已解决”
不知道我什么时候会用这个


不幸的是,这些文档似乎没有提到上下文菜单:

来进一步扩展我的评论——两个人做出相同的更改会导致冲突。假设我们在文件A中有以下内容

屏幕列表屏幕={Screen1,Screen2,Screen3}

我们的档案B里没有

屏幕数=3

现在我编辑文件A,添加屏幕4,并将文件B中的屏幕数更新为4。我签入我的更改

然后编辑文件A并添加Screen4b,并将文件B中的屏幕数更新为4

然后,您在“我的更改”中合并,我们现在在文件A中有:

屏幕列表屏幕={Screen1,Screen2,Screen3,Screen4,Screen4b}

但当我们进入文件B时,我们都有相同的东西

屏幕数=4

我们真正想要的是

屏幕数=5

因此,我们都对文件做了完全相同的更改,但这确实是一个冲突——在这种情况下,需要手动干预


这个例子有点做作,你可以举出两个人做同样的改变不会导致冲突的例子。关键是Subversion无法知道它是哪种情况,因此存在冲突。

当发生冲突时,会创建多个文件。扩展名为.rNNNN的是文件的原始副本,因为它存在于这些修订号处(通常是公共基础和“他们的”更改)。原始文件也会更新,以便在适当的位置包含冲突标记,这样您就可以使用一个能够理解冲突的编辑器(如果您想手动处理冲突,则可以使用一个不理解冲突的编辑器)并将其仅提供给该文件(虽然这通常不是最好的方式,但有些人已经习惯了)

编辑冲突通常会打开一个三向合并,显示“基本”(您的更改和他们的更改的共同版本)、“他们的”(他们的更改)和“我的”(您的更改),以及最终的合并结果。您可以使用它来检查并以交互方式解决冲突。这通常是最好的选择,这就是为什么它是默认的。(内置的TortoiseMerge在这方面做得不错,尽管可以使用其他工具——我使用kdiff3。)

标记为已解决告诉SVN您已经(通过其他编辑器或工具)解决了“真实”文件中的任何冲突(与以前同名、具有冲突标记的文件).SVN将验证文件是否不再包含任何冲突标记,然后删除额外的文件并将原始文件标记为已解决,无需进一步编辑(因为它假定您已完成任何必要的操作)

使用他们的/我的解决冲突按照他们在tin上所说的去做;他们用他们的更改或原始(更新前)更改中的完整文件替换你的文件副本,忽略来自另一方的任何更改。虽然这有时是有用的,但会有丢失其他人所做更改的风险(或者你自己),所以你需要小心


在所有情况下,已解决的更改仅对本地工作副本进行。这仍然允许您在再次提交之前有时间验证结果(例如,构建和运行测试)。

此外,TortoiseSVN在目录中创建了两个文件:filename.ext.r8471和filename.ext.r8476。菜单项2将r8476标识为“他们的”,菜单项1使用r8295。8471版本来自何处?它不会显示在文件的日志中。我如何找到当前标题的版本号?最后但并非最不重要的是,我的更改与他们的更改完全相同,所以知道这导致冲突的原因吗?还有一个问题:如果选择“编辑冲突”然后,在合并工具中,立即将冲突标记为已解决,哪些更改将占上风?冲突正是因为您的更改与已签入的内容重叠。Subversion无法知道更改是否冲突,因此它会让您做出决定。它们可能在空格或行尾上有所不同。有没有差异被标记为冲突;SVN不知道什么是重要的。谢谢,@Miral!但是“与工作副本进行比较”有什么作用?WC是我本地的,不是吗?它与什么版本进行比较?我不完全确定,因为我大部分只使用了我列出的版本。如果有疑问,试试看!