假设某个存储库中有file.txt,两个人正在对其进行破解。其中一个将file.txt移到另一个带有hg mv的文件夹中,并立即将其推送到存储库中。当同事决定进行自己的润色时,Mercurial是否有可能将原始file.txt的更改自动合并到移动的file.txt中?

我太乐观了吗?

最佳答案

简短答案:是的,可以。

较长的示例:经典Java重构与同一文件中的代码更改

mkdir hgmv
cd hgmv/
mkdir -p com/example/hgmv/
cat << EOF > com/example/hgmv/Main.java
package com.example.hgmv;
class Main
{
  public static void main(String args[])
  {
    System.out.println("Hello World!");
  }
}
EOF
hg init .
hg add com/example/hgmv/Main.java
hg commit -m "First working version"
cd ..
hg clone hgmv hgmv.refactor
hg clone hgmv hgmv.translation

cd hgmv.refactor
hg branch refactor
hg mv com/example/hgmv/Main.java com/example/hgmv/HgMv.java
sed -i'' 's/Main/HgMv/g' com/example/hgmv/HgMv.java
hg commit -m "refactoring Main->HgMv"
hg push -f --new-branch ../hgmv
cd ..

cd hgmv.translation
hg branch translation
sed -i'' 's/Hello World!/Bonjour Monde!/g' com/example/hgmv/Main.java
hg commit -m "french translation"
hg push -f --new-branch ../hgmv
cd ..

cd hgmv
hg up refactor
hg merge translation
hg commit -m "merge"
cat com/example/hgmv/HgMv.java

和火红的:这是超过git 的 Mercurial 力量之一
  • Mercurial在提交时存储重命名/复制。
  • Git在合并时猜测重命名/复制。
  • 10-06 06:41