我一直面临着理解裸存储库的困难.我到处都读到共享的回购是一个简单的回购.为什么它必须是一个简单的回购?它不能是合作者克隆然后推/拉的正常回购吗?
我正在尝试替换我的后接收挂钩,由GitLab自动生成一个新文件,该文件启用邮件支持,因此必须触发"post post".
这是我文件的先前版本:
#!/usr/bin/env bash
# This file was placed here by GitLab. It makes sure that your pushed commits
# will be processed properly.
while read oldrev newrev ref
do
# For every branch or tag that was pushed, create a Resque job in redis.
repo_path=`pwd`
env -i redis-cli rpush "resque:gitlab:queue:post_receive" "{\"class\":\"PostRe
ceive\",\"args\":[\"$repo_path\",\"$oldrev\",\"$newrev\",\"$ref\",\"$GL_USER\"]}
" > /dev/null 2>&1
done
Run Code Online (Sandbox Code Playgroud)
当我用一个新文件替换该文件时,该文件包含文件末尾的上述行,GitLab说:"项目在管理区域中有无效的接收后文件",但电子邮件被正确发送.
你知道如何处理多个post-receive支持的问题.目前我不知道文件的gitlab特定部分是否正确执行.
感谢帮助!
现在使用下面提到的解决方案(拉取请求)调用文件夹中的脚本.但我不明白为什么标准的"post-receive-email"-script如果包含在目录中则不发送任何邮件.如果直接作为post-receive调用它,它可以正常工作.
不知道为什么我必须更改订单,但以下工作对我来说(即使我不知道现在是否正确创建了resque作业:
#!/usr/bin/env bash
repo_path=`pwd`
if [ -d hooks/post-receive.secondary.d ]; then
for i in hooks/post-receive.secondary.d/*
do
[ …Run Code Online (Sandbox Code Playgroud) 我想在 gitlab 中使用预提交钩子。我在文档中做所有事情:https : //docs.gitlab.com/ce/administration/custom_hooks.html
在 custom_hooks 目录中,我创建了包含以下内容的预提交文件:
#!/bin/bash
exit 1
Run Code Online (Sandbox Code Playgroud)
钩子永远不会被触发,因为我可以提交。
当我对 pre-receive hook 做同样的事情时 - 一切正常。
如果 Gitlab 不允许使用预提交钩子?