Gitlab:默认情况下在新的repo中半自动安装钩子脚本

时间:2012-09-19 17:01:08

标签: git gitlab

总之,我的问题是:如何确保gitlab中所有新创建的存储库都有一个默认的初始提交,其中包含我选择的一些文件(钩子脚本)?

一些背景:我的公司正在转向使用git和gitlab(远离svn - hooray!)进行内部开发。

当用户在gitlab中创建一个新的repo时,我希望用我选择的一些文件自动填充新的repo。这些文件将是钩子脚本和安装它们的脚本。这样,当用户克隆他们刚刚创建的repo时,它就已经有了钩子脚本(这将强制执行公司提交消息策略),他们可以安装它们。

现在我知道gitlab允许你为一个cgi脚本指定一个url,当创建一个新的repo时,它将被调用(以及其他时间)。我的想法是在其中有一个“骨架”存储库,并在其中进行适当的初始提交,并使此cgi脚本从该存储库执行推送到新创建的存储库中。

此计划的问题之一是权限:此cgi脚本需要以具有ssh密钥设置的用户身份运行,该密钥设置对新存储库具有提交访问权限 - 在DEFAULT的每个新存储库中。

有没有办法确保gitlab中特定用户可以写入每个新创建的存储库?

还有另一种方法可以确保每个新创建的repo都获得指定的初始提交吗?

有没有更好的方法来确保我没有想到的这些钩子脚本的分发?

1 个答案:

答案 0 :(得分:1)

之前我遇到过类似的问题,我通过创建一个每个人都可以访问的专用钩子库来解决它。创建新存储库后,用户应该在此hooks repo中运行脚本。这个脚本只是创建了一个从新repo的.git / hooks目录到hooks repo的符号链接,其中存储了所有钩子。这样,用户也可以通过简单地拉出新版本的钩子仓库来更新所有钩子。以下是相关问题:Gitolite: print message after git clone finished

这种方法只有问题:用户每次创建新的仓库时都需要运行钩子脚本。