我在/opt/gitlab-6.9.2-0/apps/gitlab/
上在CentOs上设置了一个新的Gitlab,并在持续交付组下创建了一个新的存储库。完整路径为/opt/gitlab-6.9.2-0/apps/gitlab/gitlab-satellites/continuous-delivery/cd-test
。此路径下只有一个文件是README.txt。
我尝试实现的是在有人将更改推送到服务器时创建新文件。以下是我在服务器上所做的事情:
post-update
echo“text”>>下创建update
和.git/hooks/' each file creates a new file using
个文件file_name` 当我将更改从本地推送到服务器时,没有创建文件。所以,我想知道如何解决这个问题。
更新1
我将post-receive
和post-update
添加到repositories
路径VonC suggested
[root@git-cd hooks]# pwd
/opt/gitlab-6.9.2-0/apps/gitlab/repositories/continuous-delivery/cd-test.git/hooks
[root@git-cd hooks]# ll
total 48
-rwxrwxr-x. 1 git git 452 Jun 10 06:01 applypatch-msg.sample
-rwxrwxr-x. 1 git git 896 Jun 10 06:01 commit-msg.sample
-rwxrwxr-x. 1 git git 44 Jun 11 00:37 post-receive
-rwxrwxr-x. 1 git git 41 Jun 11 00:38 post-update
-rwxrwxr-x. 1 git git 189 Jun 10 06:01 post-update.sample
-rwxrwxr-x. 1 git git 398 Jun 10 06:01 pre-applypatch.sample
-rwxrwxr-x. 1 git git 1642 Jun 10 06:01 pre-commit.sample
-rwxrwxr-x. 1 git git 1281 Jun 10 06:01 prepare-commit-msg.sample
-rwxrwxr-x. 1 git git 1352 Jun 10 06:01 pre-push.sample
-rwxrwxr-x. 1 git git 4972 Jun 10 06:01 pre-rebase.sample
lrwxrwxrwx. 1 git git 57 Jun 10 06:01 update -> /opt/gitlab-6.9.2-0/apps/gitlab/gitlab-shell/hooks/update
-rwxrwxr-x. 1 git git 3611 Jun 10 06:01 update.sample
两个文件都包含一个脚本,用于向现有文件"post-receive-2" >> /var/log/hooks_test.log
添加新行。然后将更改从本地计算机推送到服务器。但它仍然没有附加文本。
更新2
收到后的脚本错了,它没有回音。在我添加echo(echo "post-receive-2" >> /var/log/hooks_test.log
之后,它按预期工作!
答案 0 :(得分:11)
那是因为那些卫星回购不是你要推送的那个,所以当你想到时(即不是有人推送到GitLab服务器时)他们的钩子不会触发。
PR 6185介绍了archicture概述文档
/home/git/gitlab-satellites
- 从Web UI检出了合并请求和文件编辑的存储库。这可以被视为临时文件目录。Web界面使用卫星存储库来编辑存储库,wiki也是一个git存储库。
你应该在裸露的回购~git/repositories
中添加你的钩子。
或(更新2014年第4季度,来自GitLab 7.5+ Nov 2014),您可以使用 custom hooks (而不是 webhooks ), mentioned below Doka。{/ p>
必须在GitLab服务器的文件系统上配置自定义git挂钩 只有GitLab服务器管理员才能完成这些任务。如果您没有文件系统访问权限,请浏览webhooks。
- 在GitLab服务器上,导航到项目的存储库目录 对于手动安装,路径通常为
/home/git/repositories/<group>/<project>.git
对于Omnibus安装,路径通常为/var/opt/gitlab/git-data/repositories/<group>/<project>.git
。- 在此位置创建名为
的新目录custom_hooks
。- 在新的
custom_hooks
目录中,创建一个名称与钩子类型匹配的文件 对于pre-receive
挂钩,文件名应为pre-receive
,不带扩展名。- 使钩子文件可执行,并确保它归
git
所有。
答案 1 :(得分:2)
从gitlab-shell 2.2.0版(需要GitLab 7.5+)开始,GitLab管理员可以为任何GitLab项目添加自定义git钩子。因此,您必须升级,并按照此处的说明进行操作:https://docs.gitlab.com/ce/administration/custom_hooks.html
答案 2 :(得分:1)
请参阅Custom Git Hooks - GitLab Documentation了解正式方法。
总结:从gitlab-shell 2.2.0版本(需要GitLab 7.5+)开始,GitLab管理员可以为任何GitLab项目添加自定义git钩子。
/home/git/repositories/<group>/<project>.git
对于Omnibus安装,路径通常为/var/opt/gitlab/git-data/repositories/<group>/<project>.git
custom_hooks
。custom_hooks
目录中,创建一个名称与钩子类型匹配的文件。对于预接收挂钩,文件名应为pre-receive
,不带扩展名。#!/usr/bin/env ruby
。但请查看上面的官方文档链接。以上是今天的快照...