DVCS 通过跟踪合并的父版本来实现更好的合并。在 Subversion 中,当您将一个分支合并到另一个分支时,您会丢失有关合并来源的信息。在像 Bazaar 或 Git 这样的 DVCS 中,“合并的”修订版最终有两个父修订版。
DVCS 之间的重命名处理方式不同。例如,Git 根本不跟踪重命名,因为这对 Linus 来说并不重要。Mercurial 将它们记录为“将旧文件复制到新文件,删除旧文件”。根据Canonical 的创始人 Mark Shuttleworth 的说法,Darcs 和 Bazaar 是唯一能够正确处理文件重命名的 DVCS。
bazaar 怎么知道我重命名了一个文件?
重命名由用户指定,就像添加或删除文件一样。使用“ bzr rename <old> <new>
”命令标记文件或目录以进行重命名。如果您已经在树中重命名了文件,则可以使用“ --after
”选项。
如果我将两个文件重命名为同一提交的一部分怎么办?
bzr rename <old> <new>
然后为每个文件键入一次“ ”。Bazaar 不会尝试猜测哪些文件已被重命名。
当我通过将文件的一半内容放入新文件中进行重构,重新缩进所有内容并在几乎每一行中丢失一些空格时会发生什么?
然后你bzr add
在新文件上输入“”,因为你并没有真正重命名它。