「リポジトリ固有の環境変数」も確認できます
オプション構文の特別な形式を使用して、gitolite トリガーおよびインストールする可能性のある git フックに表示されるリポジトリ固有の環境変数を設定できます。
たとえば、CI ジョブを開始する更新後フックをインストールしたとします。もちろん、デフォルトでは、このフックは gitolite が管理するすべてのリポジトリに対してアクティブになります。ただし、r1、r2、r4 などの特定のリポジトリに対してのみ実行する必要があります。
これを行うには、まずこれを に追加しますgitolite.conf
。
repo r1 r2 r4
option ENV.CI = 1
これにより、トリガーまたはフックが呼び出される前に、値が 1 の GL_OPTION_CI という環境変数が作成されます。
注: オプション名は で始まり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 のコミット 63865a16 2013 年 6 月で完了しました)。
しかし、そのバージョンを持っていなくても、そのセクションの最後の部分で説明されているように、オプション変数を使用してこれを行う他の方法があります。
gitolite git-config
この機能が追加される前でも、次のように、フック コード内でコマンドを使用してリポジトリに設定されたオプションと構成をテストすることで、これを行うことができました。
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 ...