hexium310’s memo

自分用にメモとして書き留めます

ベアリポジトリーの設定とpushフックでデプロイの備忘録

本題

ベアリポジトリーや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