gitoliteでhook

2015/10/27

Categories: git

入門Git

素のgitと自作のhookスクリプトを用いて、リポジトリにpushがあったら 「jenkinsのジョブ起動、redmineのRepository.fetch_changesetsを実行・・・」ということをやっていた。

特定ブランチへのnon fast-forwardなpush禁止をやりたくて、自作することも考えたのだけどgitoliteがやりたいことを網羅していたので移行した。
http://gitolite.com/gitolite/index.html

hook設定

%RC = ( (略) # コメント外す LOCAL_CODE => “$rc{GL_ADMIN_BASE}/local”, (略) ENABLE => [ (略) # コメント外す ‘repo-specific-hooks’, (略) ] ```


* gitolite.confに起動するhookと条件を設定
	* 使っているhookはpost-receiveフック
repo path/to/repo
  option hook.post-receive = myhookname.post-receive
  RW      =   @dev

* 管理リポジトリにconfとhookスクリプトををpushすると配置されるはず。
$HOME/.gitolite/
  local/
    hooks/
      repo-specific/
       myhookname.post-receive*

### umask

読取り専用アクセス用にgit-daemonによるリポジトリ公開も行っている。
git-daemonユーザがgitoliteのユーザとは異なるため、gitoliteユーザのhome下の一部についてgroupに対するrxを付与している。

gitoliteのデフォルトはumask 0077動作なので、この状態のままリポジトリを書き換えるとgit-daemonから見えないdir/fileが出来てしまう。~/.gitolite.rcのUMASK設定を変更して027にした。

git-daemon経由でfetchすると一部のコミットやブランチが見えなくなってハマった。

%RC = ( (略) # groupの読み取り可能に UMASK => 0027,



### 環境

* CentOS 5.11 x64
	* git 1.7.4.1
	* gitolite v3.6.3-10-g4be7ac5


>> Home