2

我在混合源代码控制环境中工作。我们仍然主要使用 CVS,但较新的项目使用 SVN。但是,我发现很难获得 SVN 的支持,因为 TortoiseSVN 不像 TortoiseCVS 那样工作。

3 路合并有很多认知失调,虽然 TortoiseCVS 似乎总是能正确地合并,但 TortoiseSVN 几乎总是需要手动帮助。同样在修复任何冲突后,您必须手动将文件标记为正常。

有没有人有任何关于如何让 TortoiseSVN 更像 TortoiseCVS 的提示?

编辑

更清楚地说,我不想进行三路合并,如果可能的话,我想像 TortoiseCVS 那样进行双向合并。我知道生成的文件在 CVS 和 SVN 中是相同的,例如 Visual Studio 项目文件有两个不同的版本。这将始终以 TortoiseSVN 中的冲突结束,而不会以 TortoiseCVS 中的冲突结束。

SVN 看起来像:

<<<<<<< .mine
     <ApplicationRevision>22</ApplicationRevision>
=======
     <ApplicationRevision>28</ApplicationRevision>
>>>>>>> .r195290

CVS 看起来像

<<<<<<< SomeFile.cproj
     <ApplicationRevision>22</ApplicationRevision>
=======
     <ApplicationRevision>28</ApplicationRevision>
>>>>>>> 1.121

所以我应该能够得到同样的合并。此外,如果两个人在同一个文件上工作,TortoiseSVN 在更新时几乎总是会发生冲突,即使他们在不同的位置工作,TortoiseCVS 也不存在这个问题。我认为 TortoiseSVN 更加保守,并迫使您检查合并 TortoiseCVS 是假设 CVS 做对了。我想知道是否在 TortoiseSVN 的某个地方隐藏了一些选项以使其更加自由,并且还可以进行双向合并而不是三向合并。

哦,是的,我们正在使用具有合并点的 Subversion 1.5(没有这个分支基本上是无用的)。

4

5 回答 5

2

看看BeyondCompareAraxis Merge。他们提供了将它们作为自定义合并/差异工具集成到 TortoiseSVN 的说明。

于 2009-02-17T23:23:26.023 回答
1

冲突标记不应该与 Tortoise 本身有关,而是与 SVN 与 CVS 有关。确定文件是否冲突的是 SVN,而不是 Tortoise。我不能说为什么会这样,或者你能做些什么。应该很少吧。在接受合并方面,SVN 可能更加保守。同样,对所使用的算法并不积极,但当更改的行彼此足够接近(并且更改不同)时,它似乎将文件标记为冲突。

我认为 TortoiseMerge 实际上相当不错,所以希望我能尽我所能解释它,你可能会看到一些你以前不知道的东西。您通常有 2 个并排的窗格,然后是一个较低的窗格。下部窗格是合并的结果,冲突标记为红色,以及其他已成功合并的部分。在冲突线上,您可以右键单击并选择是否保留您的更改(如“我的”窗格中所示)、其他更改(如“他们的”窗格中所示),或者您可以接受这些的组合.

最后,我可以解释为什么保存合并并将其标记为已解决是两个独立的步骤。在 SVN 中,将某些内容标记为已解决允许再次提交。它基本上是一种故障保护,有助于防止您提交已在工具中合并并保存但仍未完成编辑/测试的文件。基本上,SVN 区分在合并工具中保存某些内容和实际解析。

希望有帮助。

于 2009-03-02T21:19:35.030 回答
0

这里只是一个疯狂的猜测,但如果你在服务器上使用 CVSNT,这个观察结果可能是基于这样一个事实,即 CVSNT 在合并方面比 SVN 好得多,因为它具有“合并点”的概念。当多次从/合并到同一个分支时,这通常会导致更少的冲突。
我认为对此没有什么可以做的,至少不是以一种不引人注目的方式。

编辑:我的立场得到纠正。从 v1.5 开始,SVN 也有合并点。我会删除这个答案,但我想它可能对使用旧版本 SVN 的人仍然有用。

如果这不是您要说的,也许您应该再澄清一下您的问题。你确定这是关于 TortoiseSVN 和 TortoiseCVS 之间的区别,而不是 CVS(NT?) 和 SVN 之间的区别吗?

于 2009-02-17T23:38:34.757 回答
0

呃,也许我错过了这个问题。如果 TortoiseCVS 做得“正确”(因为您的团队需要它完成 - 或期望它完成)......那么您为什么要选择 TortoiseSVN?

不要混淆这项技术的“目的”……在开发过程中“服务”开发团队。

(我目前正在使用两者来尝试 TortoiseSVN .. 但到目前为止我不太喜欢 SVN 中的标签/分支方法)

于 2009-03-01T04:58:13.277 回答
0

我认为您的问题集中在如何更好地支持与 Windows 上的 Subversion 合并。

它可能不是您要寻找的具体内容,但我经常在 windows 下使用 Emacs 以方便在 Subversion 下进行合并。

Windows 下的 Emacs + SVN

EmacsW32 + cygwin (with svn ) + psvn emacs package + "built-in" emacs merge tool的组合在 windows 下运行良好。您会发现psvn现在是 Emacs 的标准配置,如果您没有,您可以轻松快速地下载和安装。

由于基于 Emacs 的工具集中的集成支持,我解决合并的速度比典型的同事快 5 到 10 倍。他们似乎满足于使用 TortoiseSVN + 他们最喜欢的其他编辑器并以这种方式进行处理......我已经多次提供指导他们 Emacs 功能的使用和强大功能(一旦设置好,它就会自行处理),但他们似乎更愿意坚持使用基本工具,而不是投资于提高生产力。

SVN 是一个强大的工具,如果你需要使用它,你不妨考虑花一些时间让它为你工作。

大卫

于 2009-03-01T05:19:57.637 回答