如何在SVN中运行更新而不会引起许多冲突

时间:2009-02-23 14:54:07

标签: java svn

我正在使用SVN在一个由四人组成的团队中开发一些软件。

每当我更新我的工作副本时,它会产生比我预期的更多冲突,大量冲突就像这样:

如果初始是

 import Class1

我将其更改为

import Class1
import Class2

而另一个团队成员将代码更改为

import Class1
import Class3

Subversion不会合并所有三行。

我想这是因为subversion不知道代码的语义内容,因此无法决定何时/不适合这样做。

我得到的另一个冲突是如果我替换

processA();
processB();

with:

if(x){
  processA();
  processB();
}

整个事情被标记为一个变化,没有办法让它突出显示只有(x)被添加到上方/下方的事实。在这种情况下,我必须分析新块内的整行,并担心内部线条中缺少小的变化。

问题是,在这些情况下,我的团队是否有更有效的方式使用SVN,我的大部分时间用于合并。

对不起因为我的表情如此长时间的啰嗦,谢谢你的阅读。

3 个答案:

答案 0 :(得分:6)

由于SVN不了解编程语言,如果它试图从变更集中推断出语义,那将是非常危险的。因此,它只能进行相对简单的合并(即,如果文件在两个完全不同的区域中发生变化)。

常见的解决方案是使用小提交。不要让重大变化堆积起来。经常提交。经常更新。

答案 1 :(得分:1)

如果你经常办理登机手续,你仍会看到很大的变化(例如在“if”情况下),但你没有太多的合并

答案 2 :(得分:1)

尽量让开发人员处理项目中不相交的部分,以减少合并问题。如果开发人员重叠,鼓励沟通以避免错误。此外,尝试提前/经常提交以避免大规模合并但不允许提交使您的基线无法构建的提交。持续集成系统有助于。