在Mercurial中,可以使用fetch扩展来模拟类似的东西svn update
,即与传入的更改合并而不用查看它们.但即使你不使用hg fetch
,你的大多数合并都将"奇迹般地"工作而不会导致冲突.这很好,但是相信Java代码的有效合并是多么安全?
是否有任何示例来说明为什么或何时应该(或不应该)信任这些合并?
好吧,只要您不开始重新组织代码,它们就非常安全。
考虑以下示例:
class A {
public void methodA() {
// do something here
// that should be great
}
public void methodB() {
// And now I'll
// do something here
// and it's gonna be good.
}
public void methodC() {
// Finally, let's
// do something here
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您开始工作并决定向 methodC 添加一些指令。
在此期间,一位同事决定,无论出于何种原因,methodC 都应该放在类的顶部。
您最终将得到两个要合并的版本。
你的:
class A {
public void methodA() {
// do something here
// that should be great
}
public void methodB() {
// And now I'll
// do something here
// and it's gonna be good.
}
public void methodC() {
// Finally, let's
// do something here
// and here your marvelous changes
}
}
Run Code Online (Sandbox Code Playgroud)
还有你的同事:
class A {
public void methodC() {
// Finally, let's
// do something here
}
public void methodA() {
// do something here
// that should be great
}
public void methodB() {
// And now I'll
// do something here
// and it's gonna be good.
}
}
Run Code Online (Sandbox Code Playgroud)
当合并发生时,由于默认上下文是三行宽,自动合并可能会认为有效结果是这样的:
class A {
public void methodC() {
// Finally, let's
// do something here
}
public void methodA() {
// do something here
// that should be great
}
public void methodB() {
// And now I'll
// do something here
// and it's gonna be good.
}
public void methodC() {
// Finally, let's
// do something here
// and here your marvelous changes
}
}
Run Code Online (Sandbox Code Playgroud)
出于这个原因,如果可能的话,我尝试保持方法的组织性,以便访问器被分组,并且不受影响,私有按通用逻辑分组,等等......但这并不总是可能的。
希望这种情况很少见,如果有太多更改,mercurial 会要求您手动合并类。
归档时间: |
|
查看次数: |
2265 次 |
最近记录: |