Version control 在Mercurial版本中管理流程工件
我想知道使用Mercurial创建包含提供流程执行证据的工件的发布修订版的最佳方法是什么。例如,我们希望附上系统测试结果、检查表、发行说明等,这样,如果客户对我们进行了审核,我们就可以轻松地证明我们执行了流程。由于我们产品的安全方面,这对我们很重要 我们的发布管理流程类似下图。所有开发商都在本地回购协议中进行开发,并定期向main推进。Main是最新和最好的,但对于开发团队之外的内部工程目的来说也不一定是安全的 当我们想要为客户或其他内部工程部门创建发布时,我们从发布候选分支(例如RC1)开始。如果需要任何修复,我们将向RC分支提交。测试在此分支上进行。当RC被确定为良好时,更改被合并回主 我们认为我们想要做的是合并到一个发布分支中。然而,我们有一个与工件相关的鸡和蛋的问题:我们希望包含在发行版修订版中的工件包含修订版的哈希。这提供了明确的可追溯性,即测试和其他过程步骤是在此精确版本上执行的。但是,要添加这些项,我需要创建一个新的修订,在创建之前,我显然不知道该修订的哈希是什么。我想知道是否有某种方法可以“修改”修订版而不更改哈希 我能想到的唯一方法是,例如,在下图中,创建一个修订版RC2.3,其中包含必要的流程工件,但实际上将RC2.2合并到发行版中 当然,我还有另一个问题,那就是将RC2.2合并到发行版将生成一个新的散列。所以,我的作品又过时了。因此,下一个问题是是否有某种方法让发布分支“指向”RC2.2 顺便说一句,如果有必要,我们愿意改变这个过程。我们使用这种方法的原因是:Version control 在Mercurial版本中管理流程工件,version-control,mercurial,release-management,Version Control,Mercurial,Release Management,我想知道使用Mercurial创建包含提供流程执行证据的工件的发布修订版的最佳方法是什么。例如,我们希望附上系统测试结果、检查表、发行说明等,这样,如果客户对我们进行了审核,我们就可以轻松地证明我们执行了流程。由于我们产品的安全方面,这对我们很重要 我们的发布管理流程类似下图。所有开发商都在本地回购协议中进行开发,并定期向main推进。Main是最新和最好的,但对于开发团队之外的内部工程目的来说也不一定是安全的 当我们想要为客户或其他内部工程部门创建发布时,我们从发布候选分支(例如RC1)开始。
- CI系统正在监视main并启动一系列构建,并在每次推送时执行自动化单元测试。main经常发生更改,我们不希望人们使用它
- 开发可以在main上继续进行,而不会影响发布
- Releases分支的任何修订都会在我们的CI平台上启动一组不同的任务,包括创建field flash实用程序的发行版和所需的映像(我们正在开发固件)。这就是我们向外部实体提供发布的方式
您对mercurial的使用似乎有点复杂,因为所有这些合并都在进行,处理起来会很痛苦。 您正在使用mercurial的分支功能,但似乎忽略了其他两个重要功能:
hg graft REV_changeset
(cherry pick)复制到MY_PRODUCT_1_0分支(注意,您也可以从MY_PRODUCT_1_0分支复制到默认)
因此,您基本上可以选择从默认分支到当前版本的变更集,而不必合并这两个分支
这要求开发人员推动干净的原子变更集,这是mercurial首先应该做的事情。
随着您的提交在MY_PRODUCT_1_0中的发展,您可以将其多次标记为MY_PRODUCT_1_0_RC_1、MY_PRODUCT_1_0_RC_2、,。。。
在此分支上进行最终更改集时,您只需将其标记为MY_PRODUCT_1_0_PR_1_0
然后,您一开始只会得到两个分支,默认分支(开发分支)和MY_PRODUCT_1_0(您的第一个版本),随着时间的推移,当您需要发布产品的新版本时,您将创建一个新分支MY_PRODUCT_2_0,并按上述方式重新启动循环
使用这种方法,您可以确保在发布中只进行了所需的更改,而没有在合并分支时得到的额外更改
如果不让我知道的话,我希望我说得够清楚。你对mercurial的使用似乎有点复杂,因为这里到处都是合并,处理起来会很痛苦。 您正在使用mercurial的分支功能,但似乎忽略了其他两个重要功能:
Main A--B--C--D--E--F--G--H--I--J--K--L---------M-------------N
\ / \ /
RC1 RC1.0--RC1.1 \ /
\ \ /
RC2 \ RC2.0--RC2.1--RC2.2
\ \
\ \
Releases ER1.0-----------------------------------PR1.0
Main A--B--C--D--E--F--G--H--I--J--K--L---------M-------------N
\ /
2.x 2.0-RC1--2.0-RC2
Main A--B--C--D--E--F--G--H--I--J--K--L-------M-------------N
\ / /
2.x 2.0-RC1--2.0RC2 -- ... --2.0-RC8
Main A--B--C--D--E--F--G--H--I--J--K--L-------M-----------N
\ / / /
2.x 2.0-RC1--2.0RC2 -- ... --2.0-RC8 -- T -- 2.0
Main A--B--C--D--E--F--G--H--I--J--K--L-------M-----------N
\ / / /
2.x 2.0-RC1--2.0RC2 -- ... --2.0-RC8 -- T -- 2.0 -- 2.1-RC1