2

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

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

当用户在 gitlab 中创建新仓库时,我希望该新仓库能够自动填充我选择的一些文件。这些文件将是挂钩脚本和安装它们的脚本。这样,当用户克隆他们刚刚创建的存储库时,其中已经包含挂钩脚本(这将强制执行公司提交消息策略),他们可以安装这些脚本。

现在我知道 gitlab 允许您指定一个 cgi 脚本的 url,该脚本将在创建新的 repo 时(以及其他时间)调用。我的想法是在某个地方有一个“骨架”存储库,其中包含适当的初始提交,并让这个 cgi 脚本从该存储库推送到新创建的存储库。

这个计划的问题是权限之一:这个 cgi 脚本需要作为一个设置了 ssh 密钥的用户运行,该用户在新存储库上具有提交访问权限 - 默认情况下在每个新存储库上。

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

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

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

4

1 回答 1

1

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

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

于 2013-03-20T07:54:23.357 回答