阻止用户在mercurial中推送稳定分支

时间:2015-09-04 13:31:58

标签: mercurial mercurial-hook

我刚刚开始使用Mercurial作为源控制系统。我在考虑使用类似于此处概述的工作流程:http://stevelosh.com/blog/2010/05/mercurial-workflows-stable-default/。基本上,有两个分支,一个是“稳定”,一个是“发展”。所有开发都将在“开发”分支上完成,并且仅在测试并准备发布时才合并到“稳定”分支。

o | v2.0
|\|
| o added new feature
o | V1.0
|\|
| o added new feature
| |
| o fixed bug
o |

我想阻止开发人员意外地将更改推送到稳定分支。我怎样才能做到这一点?我知道有一些方法可以勾勒出某些Mercurial事件,但如果它改变了稳定分支,哪一个可以拒绝推动?如何检测钩子内某些分支的变化?

顺便说一句,我正在运行Windows 7。

更新

感谢criswel的回答 - 它指出了我正确的方向。原来ACL扩展(mercurial附带)解决了这个问题。我在主repo的'.hg'文件夹中编辑了'hgrc'文件,如下所示:

[extensions]
acl = 

[hooks]
pretxnchangegroup.acl = python:hgext.acl.hook

[acl]
sources = push

[acl.deny.branches]
stable = *

这会阻止任何人更改稳定分支并将其推送到主仓库。

2 个答案:

答案 0 :(得分:6)

听起来你想要的是ACL extension,它应该包含在你的Mercurial安装中。

答案 1 :(得分:0)

另一种方法是使用Mercurial的mercurial-server第三方扩展(它更像是Mercurial的包装器)来管理开发人员的访问权限。但是,在Windows上设置可能比使用Cygwin更加困难。