Mercurial和代码评论;好工作流?
-
01-10-2019 - |
题
我在一个小型分布式团队中使用Mercurial作为中央存储库。我们每个人都通过SSH克隆到我们自己的Linux框上。我们的目的是在将更改推向中央存储库之前,在将Central的小费清洁之前,在将更改推向中央存储库之前进行审查。什么是在不同Linux盒上开发人员之间共享代码的好方法?我是新来的。我能想到的(通过阅读而不是经验)的选项是:
1:作者提交了所有本地更改,并更新了Central的提示工作克隆。作者使用HG捆绑包,如果有一种方法可以指定捆绑包中的本地转速。 (一个实验向我展示了“捆绑包”仅抓住了不承认的更改,即使中央不知道的本地提交也不知道)作者将捆绑文件转到了审阅者。审稿人从中央的提示中创建了一个新的干净克隆,并将捆绑包进入该克隆中。或者,
2:作者和审稿人都从中央提示获取后,作者使用补丁程序和审阅者导入补丁。或者,
3:作者向审稿人或审稿人求助于作者(但是,到底是如何,我读到的只是在推动和拉到原始服务存储库中的/或从同一盒子上推出/或从不同的Linux盒子之间推出。)
4:在推入中央之前忘记审查代码;继续推动,使用标签来识别是否已审查的内容,并使用哈德森(已经工作)标记最新的安全构建,以便团队成员可以知道要从哪个拿起。
如果您的团队使用Mercurial并进行代码评论,您如何让审阅者查看您的更改?
解决方案
其中大多数是可能的,有些比其他人更加乏味。
- 您可以通过将中央存储库的尖端指定为
--base
:
hg bundle --base 4a3b2c1d review.bundle
- 也可能只使用捆绑包。这样,也包括更改数据数据。
- 您可以将(从)推到具有共同祖先的任何存储库。如果您想从一个同事中拉出,他们只需要跑步
hg serve
在他们的机器上,您将能够拉动。 - 这也有效,但是您将必须保持多个头部并谨慎合并。如果您不这样做,那么在未经审查的更改之上基于稳定的更改将变得很容易,如果您需要稍后修复未经审查的更改,这将很难撤消。
在您提出的选项中,#1和#3可能最简单,只是取决于您是否可以到达彼此的盒子。
相关说明:这是一个让我的同事和我开始发展的问题 窑, ,我们的(Fog Creek的)Mercurial托管和代码审查工具。我们的计划和最初的原型将保留多个存储库,一个“中央”存储库以及一堆“评论”存储库。审核过程将通过将中央存储库克隆到服务器上的审核存储库中,然后在两者之间运行完整的repo diff,并具有简单的Web界面,用于获取和查看差异。
我们已经演变了很多工作流程,但是总体想法是,拥有一个分支存储库来推动未经审查的更改和一个接口来对其进行审查,然后再将它们推入中央仓库,但仍然是相同的。我不想在这里做广告,但我确实建议 尝试一下.
其他提示
我将添加第五个选项 - 在命名分支机构上进行所有开发工作,最好是每个任务一个。无论是否处于工作状态,都允许任何事情都致力于名为分支的“开发”分支。
推到中央存储库,让审阅者拉该分支。在分支机构上进行审查。
审查通过后,将开发工作合并到适当的功能分支中。
这个工作流程(对我来说)令人惊讶地不受欢迎,具有许多优势:
所有工作都付出了代价 - 您不必等待在提交之前进行审查。
您不会建立错误的版本。您只能从功能分支中构建。
过程中的工作不会干扰其他开发人员。
从开发分支机构中,您可以查看最新更改(例如解决评论评论的更改集),与分支点进行比较,或与最新功能分支进行比较 - 所有这些分支都可以提供有用的信息。