分支还是Fork Mercurial存储库更好?

21

假设您“拥有”一个Mercurial代码库,那么在着手进行实验性代码时,是分支还是派生代码库更好呢?

在我的情况下,我是一名独立开发者,即将开始进行一些实验性代码。我预计这个实验需要4到6个小时的时间。如果我认为这个实验失败了,那么我极不可能再次参考它。

我经常提交并定期推送。在实验期间,我只能提交然后丢弃本地代码库。但是,我通常会推送作为备份手段。该代码库托管在Bitbucket上。

在这种情况下,我是更好地创建分支还是派生代码库?

4个回答

18

作为一个支持给所有工作创建命名分支(如为每个任务创建分支等)的人,我建议...两者都可以。

首先克隆原始仓库,在新仓库中创建一个新的命名分支用于实验性工作。

如果您决定保留实验性工作,请将其推送回原始仓库(适当执行合并)。

如果您决定不保留实验性工作,只需丢弃实验性仓库即可。


当你说“克隆原始仓库”时,你的意思是要分叉它吗? - Eduardo Rascon
7
在Mercurial(和其他分布式版本控制系统)中,克隆(Cloning)和派生(Forking)是相同的概念。通常,“派生”一词用于指代旨在始终与原始存储库有所不同的克隆(例如仅从原始存储库合并而不向其合并),而“克隆”则意味着这些存储库是对等的,目的是保持更或多或少同步。 - Tim Delaney

3

如果我认为实验失败了,那么我很可能再也不想提及它。

你已经回答了自己的问题,本地分支进行修改后,如果成功,再将更改合并到主仓库中。

虽然我不认为你会在4到6小时内产生太多无用的内容,让一个无用的分支变得麻烦......


1
什么使得一个无用的分支令人烦恼? - Tim Murphy
4
如果一个实验占用了存储库的显著比例,那么它的大小就成为了一个问题。但这种情况很少出现,即使出现,也只是轻微的不便,而不是问题。这就是为什么我认为应该支持实验分支,因为你怎么能确定一个失败的实验历史记录将来不会有用呢? - Toni Ruža

3
我认为这并不重要。在两种情况下,能否稍后引用您的实验取决于删除实验的时间。
当您进行实验分支时,可以使用“strip”命令(它是“mq”扩展的一部分)来清除它们。或者,您可以使用“convert”从hg到hg存储库,以便删除死分支。您甚至可以简单地克隆并省略分支。
当您为实验分支创建分叉时,如果需要引用它,显然可以稍后合并它们。
因此,这归结为一个问题:您想要保留实验分支多长时间,以及您想将它们存储在哪里?

3

将分支视为文档。您和其他人可以随后参考这些想法和更改。预见到一种情况,即您说“哦,我曾经在一个分支中尝试过那个...但已删除。”唯一的成本是一点磁盘空间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接