是否可以在 Gitolite 中实现基于 repo 的钩子?

问题描述 投票:0回答:2

我想在 gitolite 中实现基于 repo 的钩子。

有可能吗?

我正在使用gitolite 3 (g3)。

git gitolite
2个回答
3
投票

自 Gitolite 3.6+ 起,可以使用“特定于存储库的钩子”:

  • 将此行添加到
    rc
    文件中的
    %RC
    块中(如果尚未存在),或者取消注释(如果它已存在并已注释掉):
LOCAL_CODE => "$rc{GL_ADMIN_BASE}/local",
  • 取消注释

    repo-specific-hooks
    文件中的 '
    rc
    ' 行,或者将其添加到
    ENABLE
    列表(如果不存在)。

  • 如果您的

    rc
    文件没有
    ENABLE
    列表,您需要将其添加到
    POST_COMPILE
    POST_CREATE
    列表中。 单击此处了解有关这一切的更多信息。

  • 将钩子放入

    gitolite-admin
    克隆中,如下所示:

# on your workstation
cd /path/to/your/gitolite-admin-clone
mkdir -p local/hooks/repo-specific
  • 现在将您的钩子添加到该目录,但不使用 git“标准”名称(

    pre-receive
    post-receive
    post-update
    ),而是使用描述性名称(例如“
    deploy
    ”、“
    RSS-post
    ”) ”等)。

  • 将它们添加到您希望它们处于活动状态的存储库中,在您的conf文件中。例如:

repo foo
    option hook.post-update     =   jenkins
repo bar @baz
    option hook.post-update     =   deploy RSS-post
  • 添加、提交并推送管理存储库。

0
投票

我在 debian bullseye 上使用 gitolite3 (3.6.12-1)。这是我设置

post-receive
钩子的方法:

编辑

/etc/gitolite3/gitolite.rc
。确保设置了 LOCAL_CODE:

LOCAL_CODE       =>  "$ENV{HOME}/local"

接下来,转到

ENABLE
文件的
gitolite.rc
部分,然后取消注释
repo-specific-hooks
:

# allow repo-specific hooks to be added
'repo-specific-hooks',

更改为

gitolite3
用户,并创建钩子目录:

sudo su gitolite3
cd ~
mkdir -p local/hooks/repo-specific

这是我认为其他教程所遗漏的设置;你需要(或者至少我需要),重新运行

setup
:

sudo su gitolite3
gitolite setup

如果您没有正确设置,现在您会看到错误消息:

FATAL: repo-specific-hooks: '/git/local/hooks/repo-specific' does not exist or is not a directory

然后修复它,然后重新运行

gitolite setup

接下来,在您刚刚创建的

repo-specific
目录中,添加您的钩子脚本:

sudo su gitolite3
echo "#!/bin/bash" >> ~/local/hooks/repo-specific/hello
echo "echo hello world" >> ~/local/hooks/repo-specific/hello
chmod +x post-receive

修改

gitolite.conf

cd gitolite-admin
vim conf/gitolite.conf

将钩子添加到每个存储库,如下所示:

repo linux
option hook.post-receive = hello
...

推动改变并享受。

© www.soinside.com 2019 - 2024. All rights reserved.