1

我使用 Mercurial/TortoiseHg 作为我的源代码控制。

到目前为止,我只有一个应用程序,并且即将完成 1.0 版。一旦 V 1.0 上线,我们已经准备好为下一个版本编程的功能。

它是一个手机应用程序,现在 V1.0 将是免费的,但可能希望 V2.0 付费,以后可能会对免费版本进行一些小错误/修复更新。

我不确定在 V2.0 进行时错误修复将如何工作。

我的问题是:

我是否需要从 V1.0 开始分叉或分支我的存储库,或者我只是继续向我当前的存储库添加功能?无论我需要做什么,我也想知道为什么我需要这样做。

谢谢。

4

4 回答 4

2

一个常见的工作流程是有两个分支,stable并且default. 当您准备好发布新版本时,您可以添加新功能default并合并到。stable实时错误已在stable分支上修复并合并回default.

这个页面描述得很好。

于 2012-06-12T07:25:14.013 回答
1

我会为 2.0 创建一个分支,添加您的添加,并在完成后将它们合并到 1.0 中,或者创建一个 1.0 的标记版本以保留用于存档目的。

您将它们分开是因为您希望能够恢复 1.0 版本,以防需要修复错误或进行新部署。

于 2012-06-11T23:36:45.693 回答
1

恭喜,一旦您的应用程序上线,您可能需要修复错误,并进行一些小更新,但修复此类错误或小更新可能会干扰您在 2.0 上的工作,因此明智的做法是简单地进行分支、修复如果需要,它们会在它们出现并传播到 2.0 时出现错误。

于 2012-06-11T23:37:52.513 回答
1

我会做以下事情:

将您发布的修订标记为 v1.0

hg update -r <revision that's 1.0>
hg tag v1.0
hg ci -m 'Created V1.0 Tag'

为任何将在此之上的错误修复创建一个分支。这可能是在您发布 V1.0 时,或者当您对其进行了第一个错误修复时。

hg update v1.0 (or ideally the revision that added the V1.0 tag if it's immediately after V1.0)
hg branch release_v1
<Possibly do bug fix>
hg ci

回到默认分支继续开发 v2。

hg update default
<carry on working>

当您有 v1 的错误修复时

hg update release_v1
<do bug fix>

然后合并从 v1.x 到 v2.x 的前向错误修复

hg update default
hg merge release_v1
hg ci -m 'Merged V1 bug fixes into V2'

您在发布新版本时创建新标签。该release_v1分支继续运行,积累错误修复,并default在必要时合并到(您的开发分支)中。只需确保您在合并时位于默认分支上,因为这决定了合并更改集具有的分支名称。


编辑补充说,这是其他人提到的stable/default工作流程的一种变体,但我喜欢为每个主要版本都有一个分支,因为这样我就可以有多个主要版本接受错误修复。

于 2012-06-13T08:48:05.670 回答