gpt4 book ai didi

mercurial - Mercurial 中的自动 merge 有多安全?

转载 作者:行者123 更新时间:2023-12-04 12:13:49 27 4
gpt4 key购买 nike

在 Mercurial 中有 fetch extension可以用来模拟 svn update 之类的东西,即与传入的更改 merge ,甚至无需查看它们。但即使你不使用 hg fetch ,您的大多数 merge 将“奇迹般地”工作而不会导致冲突。这很好,但是相信这样的 merge 是 Java 代码的有效 merge 有多安全?

是否有任何示例可以说明为什么或何时应该(或不应该)信任这些 merge ?

最佳答案

好吧,只要您不开始重新组织代码,它们就非常安全。

考虑以下示例:

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
}

}

现在,您开始工作并决定向方法C 添加一些指令。
在此期间,一位同事决定无论出于何种原因,methodC 都应该放在类的顶部。

您最终将得到两个要 merge 的版本。
你的:
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
}

}

还有你的同事:
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.
}

}

当 merge 发生时,由于默认上下文是三行宽,自动 merge 可能会认为一个有效的结果是这个:
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
}

}

出于这个原因,如果可能的话,我会尽量保持方法的组织性,以便将访问器分组,并且不受影响,私有(private)按通用逻辑分组,等等......但这并不总是可能的。

希望这种情况很少见,如果更改太多,mercurial 会要求您手动 merge 类。

关于mercurial - Mercurial 中的自动 merge 有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5003577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com