Mercurial 我们如何管理中央/共享存储库中的细粒度变更集?
我已经在本地使用Mercurial多年了,但现在我们正在我的公司做一个从Subversion转换过来的试点 我们接受这样一个事实,即开发人员现在将创建更细粒度的变更集——其中一些甚至可能无法构建。当开发人员将其更改推送到中央存储库时,所有这些更改集都将显示在历史记录中——这是自然的,也是意料之中的 我的问题是:我们如何处理这样一个事实:因为变更集更细粒度,这使得开发人员可以更新到不构建的修订版?我们来自这样一个世界:您可以在存储库中的任何位置签出,并合理地期望能够从该点发布。对于DVCS,您如何判断“安全”版本在哪里 这一问题在中有所论述,但我更感兴趣的是找到如何使用分支回购(而不是命名分支)来处理这一问题 我知道有一些方法可以修改历史记录(例如),从而使更改在存储库的历史记录中崩溃,但我们希望保留历史记录 查看和树,我看不到一个明确的方法来告诉安全修订的同步位置。这难道不像我们想象的那么重要吗?您可以随时提交。这些可能是主要/次要版本、成功的构建或您喜欢的方式。你可以在他们的回购协议中看到和标签。政治解决方案可能是“不要把垃圾推到主回购协议中”,不是吗 技术解决方案将是不标记,而是一个书签(“KnownAsGood”),应用于默认分支机构的最后一个工作负责人,并在开发人员之间达成协议“不更新提示,而是更新书签”Mercurial 我们如何管理中央/共享存储库中的细粒度变更集?,mercurial,workflow,dvcs,Mercurial,Workflow,Dvcs,我已经在本地使用Mercurial多年了,但现在我们正在我的公司做一个从Subversion转换过来的试点 我们接受这样一个事实,即开发人员现在将创建更细粒度的变更集——其中一些甚至可能无法构建。当开发人员将其更改推送到中央存储库时,所有这些更改集都将显示在历史记录中——这是自然的,也是意料之中的 我的问题是:我们如何处理这样一个事实:因为变更集更细粒度,这使得开发人员可以更新到不构建的修订版?我们来自这样一个世界:您可以在存储库中的任何位置签出,并合理地期望能够从该点发布。对于DVCS,您如何
谁来测试提交和移动书签是“项目管理”标签中的另一个问题您真的需要检查任何旧版本并期望它生成吗 我同意你的看法,你应该能够期待小费总是会增加。
通过某种形式的“不要将未完成的工作推给主要回购”政策/相互协议,这很容易实现 关于旧版本:
- 如果您想再次构建较旧的官方软件版本(比如,您现在的版本是1.6,并且希望制作一个v1.2可执行文件),那么如果每个人都坚持“不要推未完成的工作”策略,那么您也可以构建
标签1.2
- 如果您想进行任何修订并构建它……那么,您真的需要这个吗?以前版本中的任何bug都可能涉及官方版本(参见上面的“
tag”内容),而不是介于两者之间的内容1.2
- 如果你真的需要一个在正式发布之间的可构建版本(无论出于何种原因),你必须查看提交消息,找到表明
功能“foo”已完成的提交(而不是说
)。已开始实现功能“foo”
是的,这需要一些思考/常识,但我无法想象你会经常需要这些