理解 Darcs/更多补丁理论
外观
< 理解 Darcs
在 darcs 1.0.6 之前,更改也被称为补丁,但我们认为这太令人困惑了。
在继续之前,我们想明确一点:在 darcs 的日常操作中,我们谈论拉取和推送补丁,以及记录和恢复更改。这只是一个用户界面约定。从补丁理论的角度来看,所有这些都只是补丁。您拉取和推送的补丁是命名补丁,这些补丁包含一个名称和一个未命名补丁列表。所以实际上,当您从其他人的存储库中拉取一个命名补丁时,您正在拉取一个可能包含许多原始补丁的序列。这对合并意味着什么?
在上一章中,我们看到处理简单的、无冲突的合并主要包括制作一个反向补丁并将该反向补丁与另一方的补丁进行交换。现在让我们探索一个稍微复杂一点的场景,我们必须针对一个无冲突的补丁序列进行合并。我们使用 darcs hackathon 购物清单的变体来完成此操作。像往常一样,Arjan 和 Ganesh 正在一起编写购物清单。他们都从一个包含以下内容的公共文件 shplst 开始
apples bananas cookies
像以前一样,Arjan 在 shplst 的第 3 行插入 "beer" 并记录了更改。然后他决定在列表的末尾添加另一个项目,这一次是 "pasta",并记录了他的第二次更改。在 darcs 表示法中,Arjan 已经将我们从一个初始上下文 ,带到了一个新的上下文 ,其中包含啤酒,然后又到了另一个上下文 ,其中也包含意大利面。
FIXME:将进行详细说明:我想展示当 Ganesh 拉取两个补丁时会发生什么