Git预合并挂钩?

时间:2014-12-17 22:37:53

标签: git version-control merge bitbucket-server

对于我的存储库,我正在使用Git和Stash。在Stash端,我限制(只读)访问master,这样任何用户都可以分支主分支的功能/分支,但不能直接合并到master,除非它是通过Pull请求完成的。

但作为用户,我可能会意外地将我的功能分支合并到主分支并尝试推送主分支。

好处是,推送是不被允许的并且受Stash限制,但我想知道是否有一种方法可以限制用户在一些钩子的帮助下将任何分支合并到主服务器。

我正在尝试预提交钩子,它们很棒,我想知道是否有类似的东西,比如预合并钩子。

2 个答案:

答案 0 :(得分:3)

  

我想知道是否有一种方法可以限制用户在一些钩子的帮助下将任何分支合并到主服务器。

Ex-Stash开发人员(不重要)。

正如@Zeeker所提到的,你需要让每个开发人员为他们的本地存储库添加钩子。事实上,情况比这更糟糕。假设您执行以下操作:

git checkout -b this-is-not-master
...
git commit -m "This is not on master"

但是你这样做了:

git push origin this-is-not-master:master

用户何时“开启”master?基本上你不能这样做 - 本地分支机构没有什么来处理远程分支,除了有时我们共享相同的名称。如果你需要/想要限制这些事情,我会坚持为Stash添加钩子。

答案 1 :(得分:-1)

您可以为此编写预提交或预推钩。我更喜欢预推,因为您可以使用提交将功能分支合并到本地的master中,并在pull请求之前测试集成更改。

要创建预推钩,您可以要求开发人员在每次克隆存储库时都创建一个预推钩,这是一个非常重复的任务。相反,创建一个你可以在安装git二进制文件的钩子目录中创建一个预推钩,这将确保开发人员总是得到钩子而不管他们克隆或初始化存储库的次数