我为多个客户端开发了相同的系统,我使用Mercurial作为数据库和代码库版本控制。
工作流通常是在本地计算机上开发,部署到分段以进行测试/ QA。然后我在生产中部署到多个存储库。 但是现在,我必须在本周为一个客户部署生产,其余部分在几周内部署(必须通知其他客户)。我们称之为版本10 。在本周部署之后,我需要将一些新代码移动到暂存以进行测试。我们称之为版本11 。如何在几周内完成生产(版本10)而不撤消新的更改(版本11)?
我希望这是有道理的。
答案 0 :(得分:1)
如果您使用单独的分支机构,例如,如果您在默认分支中只有那些您认为足够稳定以提取给客户端的代码,而且到目前为止您的所有代码只被认为已经准备好进行测试而QA可以在一个单独的分支中找到,那就让我们称之为测试
因此,如果您有一个类似于
的存储库hg log -G -T"{branch}-{rev}: {desc}\n"
@ testing-4: Add some code which needs testing
|
| o default-3: Changes to be deployed to client
| |
| o default-2: Some stuff
|/
o default-1: Second changeset
|
o default-0: First changeset
然后,您可以克隆或仅提取默认分支中的更改,但不能在测试中进行更改:
hg clone --branch default
或
hg plull --branch default
如果您稍后成功测试了代码并希望将其代理到您的客户端,请先将 testing 分支中的代码合并为默认值,然后像上面一样,只将默认分支拉到你的客户。因此,如果您在 testing 分支中执行所有编码并且仅合并到默认的要发送的内容,那么您将只将您明确合并的内容拉到默认值。
当然,您也可以撤消分支机构的角色:默认情况下开发并拥有一个生产分支,您可以将其拉到您的客户端。