2015-09-04 62 views
4

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

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

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

我正在运行Windows 7。

UPDATE

感谢criswel的回答 - 它指出了我的正确方向。原来,ACL扩展(附带mercurial)解决了这个问题。我编辑在主回购的“.hg”文件夹中的“hgrc”文件看起来像这样:

[extensions] 
acl = 

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

[acl] 
sources = push 

[acl.deny.branches] 
stable = * 

此进行更改,以稳定的分支,他们推到主回购停止任何人。

+0

这是一个棘手的问题。我们从分支创建分支,然后通过bitbucket创建拉动请求,作为审批层,然后将更改合并到创建它们的主分支中。您可以阻止用户对主要分支机构进行任何操作,但不能有选择地进行。 – beauXjames

回答

6

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

+1

@criswelll感谢您的回答 - 这表明我朝着正确的方向前进!详细的解决方案现在包含在我的问题中。 – user1578653

0

另一种方法是使用mercurial-server第三方扩展名来Mercurial(它更像是一个Mercurial的包装)来管理开发者的访问权限。然而,在Windows上安装可能会更困难,因为它需要使用Cygwin。