gitoliteでリポジトリの追加してWEBサーバーに反映させたい
まず、リポジトリの追加
gitolite-adminリポジトリをgit cloneして
vim gitolite-admin/conf/gitolite.conf
repo (追加するリポジトリ)
RW+ = @all
を追記
@allだと全ユーザー、読み書きが可能になります
git commit -am ‘add new reposiry’
git push
でgitoliteサーバーにリポジトリが作成されます
WEBサーバーにあがってるソースを公開フォルダからごっそりローカルに落とします
scp -r user@server:/var/www/(git管理したいフォルダ) (好きなフォルダ名: src)
cd src
git init
git commit -am ‘prepare’
リモートリポジトリを登録します
git remote add origin ssh://user@gitserver/(追加するリポジトリ).git
git push origin master
でサーバーのリポジトリにソースが上がります
gitoliteのフォルダは、WEBの公開フォルダではないので、
push されたらWEBの公開フォルダへ反映するようフックスクリプトを用意します。
gitoliteサーバーへログインして
su – (gitlite用ユーザー)
cd ~/repositories/(追加したリポジトリ).git/hooks
vim post-receive (なければつくります)
#!/bin/sh
GIT_WORK_TREE=(WEBの公開フォルダ) git checkout -f
を保存
実行権限をつけます
chmod a+x post-receive
ローカルにある今回つくったリポジトリで何か修正して
git commit -am ‘commit’
git push origin master
でWEBの公開フォルダにも反映されれば成功です
が、いくつかハマりました。
1.WEBの公開フォルダ上の権限が足りない
とりあえず
chmod o+w .
chmod o+w *
chmod o+x .
chmod o+x *
とかして応急処置
2. git pushするとWEBの公開フォルダ上の権限が勝手に400とか変わる
gitoliteサーバーへログイン、
su – (gitlite用ユーザー)
vim .gitlite.rc
UMASK => 0077,
を
UMASK => 0022,
に変更
とりあえずできました