Gitolite

来自百合仙子's Wiki
跳转到导航 跳转到搜索

注意:本页面讲的是 Gitolite 3.x 版本。

安装

gitolite setup -pk admin.pub

其中 admin 是新创建的管理者名字。

配置

配置文件位于 ~/.gitolite.rc

LOCAL_CODE
指定本地脚本路径。[1]

仓库特定 hook

要求版本 3.4 及以上。

在配置的 ENABLE 数组里,启用 repo-specific-hooks[2]

将可执行文件放到 $rc{LOCAL_CODE}/hooks/repo-specific 目录下(并确保有执行权限)。

在管理仓库里配置仓库所使用的 hook。hook 名即可执行文件相对于 $rc{LOCAL_CODE} 的路径:

option hook.post-receive    =   deploy

注意,只支持 pre-receivepost-receivepost-update 三种 hook。可修改 triggers/repo-specific-hooks 来允许更多种类的 hook。

触发器

在配置文件中以触发器名为键、可执行文件部分路径的列表为值来配置,[3]如:

%RC = (
  # ...

  POST_CREATE => [
    'on-repo-init',
  ],

  # ...
);

可执行文件可位于$rc{LOCAL_CODE}/triggers下。

POST_CREATE脚本返回值没有作用。

环境变量

可在配置文件中为 Gitolite hook 和 trigger 设置环境变量,如:

$ENV{PATH} = "/usr/local/bin:$ENV{PATH}";

Gitolite 设置的PATH环境变量是非常基本的(没有读取任何 profile),添加了 git-core 目录。

GL_REPO_BASE
仓库所在目录,如~/repositories

命令

获取仓库所在的目录:

gitolite query-rc GL_REPO_BASE

获取仓库配置项(在 admin 仓库中的):

gitolite git-config $repo gitolite-options.my.option

被调用的可执行文件

gitolite 调用 git 命令时要注意:

git config user.email || git config user.email "git@local"
git config user.name || git config user.name "git"
  • git 1.8 之后需要设置push.default选项
min_ver=1.8
cur_ver=$(git --version | awk '{print $NF}')
if [[ $(sort -V <<<"$min_ver"$'\n'"$cur_ver") == "$min_ver"$'\n'"$cur_ver" ]]; then
  git config push.default || git config push.default simple
fi

参见

参考资料