本題
ベアリポジトリーやgitのフックに関しては別で調べてください。
git
ユーザーの作成
server $ sudo useradd -s /usr/bin/git-shell git server $ sudo mkdir /home/git/.ssh server $ sudo chown -R git:git /home/git/.ssh server $ sudo chmod 700 /home/git/.ssh server $ sudo chmod 600 /home/git/.ssh/authorized_keys # 公開鍵を設置
ベアリポジトリーの作成
server $ sudo mkdir /opt/git && cd $_ server $ sudo mkdir project.git && cd $_ server $ sudo git --bare init server $ sudo chown -R git:git /opt/git/project.git
クライアントのリポジトリー
# 新しく作る場合 client $ mkdir myproject && cd $_ client $ git init client $ git remote add origin git@gitserver:/opt/git/project.git # 既存のものを clone する場合 client $ git clone git@gitserver:/opt/git/project.git
post-receive
によるフック
server $ sudo vim /opt/git/project.git/hooks/post-receive server $ sudo chmod +x /opt/git/project.git/hooks/post-receive
hooks/post-receive
#!/bin/sh cd /var/www/project git --git-dir=.git pull
クライアントでpushしたときに自動で公開用ディレクトリーでgit pull
してくれます。
実際には、ブランチ名を見てproduction
だった場合だけpullしてセットアップスクリプトを動かしたりするのがいいんでしょう。
post-receive
の出力はクライアント側に出力されるのでエラーが起きてもちゃんと気づくことができて安心。
関係のない話
bare /bɛə(ɹ)/, /bɛː(ɹ)/ (UK)
bare repository でのbareは以下の意味でしょう。
Adjective
1. Minimal; that is or are just sufficient.
bare - Wiktionary
bare は ME: bare, bar 、OE: bær と遡れるように古英語由来の単語です。PG: *bazazですが、Old Frankish、OF: *bar, baraigne, baraing を経由して ME: barain, barein、ModE: barrenと入ってきています。barren は形容詞として「不妊の」、「不毛の」、「植物が実をつけない」、「愚かな」というような意味があるようです。フランス語は💩。
参考
Git - サーバーのセットアップ
bare - Wiktionary
Reconstruction:Proto-Germanic/bazaz - Wiktionary
bréhaigne - Wiktionary
barren - Wiktionary