化石,是否有可能在单枝中有2片叶子?

时间:2014-03-03 04:58:20

标签: version-control dvcs fossil

我和我的朋友需要并行开发一个项目。这该怎么做?

我在每个叶子上创建了两个分支。试图合并叶子,但编辑文件的冲突错误。合并它们的方法是什么?

我想知道是否可以在一个分支中有2个叶子?如果是这样,那么除了默认叶子之外,如何创建一个新叶子。

1 个答案:

答案 0 :(得分:5)

每个分支随时都有一片叶子。它们从每个分支的角度表示存储库的最新状态。正如您的帖子所提到的,分支用于提供存储库中的并行开发。它们也是自动创建的(在这种情况下称为“fork”),以防止在每次提交具有相同的直接祖先时对同一分支进行两次提交...允许这就像在同一分支上有多个叶子一样。

要创建一个新的开发分支,可以打开化石仓库并执行如下命令:

fossil branch new some_feature trunk

完整示例

为了举例,我快速创建了一个新的存储库,并将一个文件添加到主干(最初的唯一分支)file.txt。我的示例文件的初始内容是:

here
is
a
file

在使用注释“create baseline”提交添加的文件后,我根据{的当前状态(也称为叶子)为名为“some_feature”的新功能创建了一个开发分支。 {1}}分支...

trunk

现在有两个分支,fossil branch new some_feature trunk trunk。创建分支不会改变我的工作分支,所以我仍然在some_feature。然后我将基线文件编辑为:

trunk

...将“文件夹”添加到最后。然后我将更改提交到here is a file folder 并添加了评论“trunk。然后我将开发切换到modification on first branch... trunk分支......

some_feature

从第二个分支开始,我还编辑了基线文件的最后一行:

fossil co some_feature

...将“读者”添加到最后。然后我将更改提交到here is a file reader 并添加了评论“some_feature”。

要合并开发,您选择要将更改合并到的分支。在这种情况下,我将功能分支更改合并到主干中。为此,您必须先检查合并的目标分支...在我的情况下,modification on second branch... some_feature

trunk

然后,我合并了另一个分支的特定提交的更改。就我而言,我将使用该分支的叶子:

fossil co trunk

现在我的工作目录中有四个文件而不是一个。没有新的提交/签入实际上已将其恢复到存储库中。这四个文件是:file.txt,file.txt-baseline,file.txt-merge和file.txt-original。 “file.txt-baseline”是合并分支的最新共同祖先中存在的文件。 “file.txt-original”是目标brach中存在的文件,在我的情况下,fossil merge some_feature MERGE file.txt ***** 1 merge conflicts in file.txt WARNING: 1 merge conflicts "fossil undo" is available to undo changes to the working checkout. ,就在合并之前。 “file.txt-merge”是您正在合并的分支中存在的文件,在我的例子中是trunk。最后,“file.txt”包含基线文件的内容,其中包含原始文件和注释合并文件的冲突更改,因此您可以决定如何处理不同的内容。

在我的情况下,生成的冲突文件“file.txt”如下所示:

some_feature

直到合并冲突注释从文件中删除,化石将不允许你提交(或者它至少会警告它)。否则,您将使用消息进行提交,例如“将some_feature合并到主干”。

作为参考,这里是化石为本例提供的事件历史图表:

Fossil generated event history for my example project