您还可以查看“特定于 repo 的环境变量”
一种特殊形式的选项语法可用于设置特定于 repo 的环境变量,这些环境变量对 gitolite 触发器和您可能安装的任何 git 挂钩可见。
例如,假设您安装了一个启动 CI 作业的更新后挂钩。当然,默认情况下,这个钩子将对所有 gitolite 管理的 repos 都有效。但是,您只希望它针对某些特定的存储库运行,例如 r1、r2 和 r4。
为此,首先将其添加到gitolite.conf
:
repo r1 r2 r4
option ENV.CI = 1
这会在调用任何触发器或挂钩之前创建一个名为 GL_OPTION_CI 的环境变量,其值为 1。
注意:选项名称必须以 开头ENV.
,后跟由字母、数字和下划线字符组成的字符序列。
现在运行 CI 作业的钩子可以很容易地决定要做什么:
# exit if $GL_OPTION_CI is not set
[ -z $GL_OPTION_CI ] && exit
... rest of CI job code as before ...
当然你也可以反其道而行之;即决定列出的存储库不应运行 CI 作业,但所有其他存储库应:
repo @all
option ENV.CI = 1
repo r1 r2 r4
option ENV.CI = ""
该功能是相当新的(从提交 999f9cd39开始,但在本例中,在3.5.2 的 2013 年 6 月提交 63865a16中完成)。
但即使你没有那个版本,也有其他方法可以使用选项变量来做到这一点,正如该部分的最后一部分所解释的那样。
在添加此功能之前,您仍然可以执行此操作,方法是使用gitolite git-config
钩子代码中的命令来测试为 repo 设置的选项和配置,例如:
if gitolite git-config -q reponame gitolite-options.option-name
then
...
您可以以相同的方式使用 git config 变量。
或者您可以使用组成员资格——有关详细信息,请参阅针对“ in_group
”中的“ Easy.pm
”功能的评论。
# in_group()
# return true if $ENV{GL_USER} is set and is in the given group
# shell equivalent
# if gitolite list-memberships $GL_USER | grep -x $GROUPNAME >/dev/null; then ...