首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DVCS(DRCS)是如何工作的?

DVCS(DRCS)是如何工作的?
EN

Stack Overflow用户
提问于 2008-09-05 16:50:23
回答 5查看 577关注 0票数 0

我听到了很多关于DVCS系统的好消息,特别是关于集市的。除了分布式存储库的概念之外,我还看到了两个主要优点:合并更自动化,重命名处理正确。

有人能给我指一段文字,解释一下这些改进是如何工作的吗?集市怎么知道我重命名了一个文件?如果我将两个文件重命名为同一提交的一部分会怎么样?当我将文件的一半内容放入一个新文件、重新缩进所有内容并在几乎每一行中丢失一些空白时,会发生什么?

换句话说,我想从在现实生活中使用集市(或其他DVCS)的人那里,或者从知道它(他们)如何工作的人那里听到。合并真的那么好吗?它是如何实现的呢?

相关问题,有一个有用的答案:

为什么在Mercurial中分支和合并比在Subversion中更容易?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-16 11:33:12

合并在DVCS中本质上并不更好,只是如果分支/合并不能正确工作(svn可以说没有正确地实现分支/合并),那么它们实际上很难使用,因为每次从现有代码开始处理项目时,您都在创建一个新分支,而不是进行签出。我认为某些专有的集中式SCS确实正确地处理了合并/分支。

它们的工作方式是在一个直接无循环图(DAG)中记录每个提交,从这一点出发,您可以使用不同的合并策略。在这里您可以找到更多信息:

http://revctrl.org/CategoryMergeAlgorithm

至少hg、bzr和git可以使用外部合并实用程序。

票数 2
EN

Stack Overflow用户

发布于 2008-09-05 18:49:48

DVCS通过跟踪合并的父版本实现更好的合并。在Subversion中,当将一个分支合并到另一个分支时,将丢失有关合并起源于何处的信息。在像Bazaar或Git这样的DVCS中,“合并”版本以两个父版本结束。

例如,在DVCS之间重命名是不同的。例如,Git根本不跟踪重命名,因为它对Linus并不重要。Mercurial将其记录为“将旧文件复制到新文件,删除旧文件”。根据的说法是规范、Darcs和Bazaar的创始人,是唯一正确处理文件重命名的DVCS。

集市怎么知道我重命名了一个文件?

重命名由用户指定,就像添加或删除文件一样。使用"bzr rename <old> <new>“命令标记用于重命名的文件或目录。如果您已经在树中重命名了一个文件,则可以使用"--after“选项。

如果我将两个文件重命名为同一提交的一部分会怎么样?

然后为每个文件键入一次"bzr rename <old> <new>“。Bazaar不尝试猜测哪些文件已被重命名。

当我将文件的一半内容放入一个新文件、重新缩进所有内容并在几乎每一行中丢失一些空白时,会发生什么?

然后在新文件上键入"bzr add“,因为您并没有真正重命名它。

票数 3
EN

Stack Overflow用户

发布于 2008-09-16 11:48:33

下面是关于darcs (http://darcs.net)如何处理补丁- http://darcs.net/manual/node9.html的讨论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档