git
のhook
という機能を使えば、リモートリポジトリにgit push
すれば自動的にコミットが展開される、というわけらしい。
hetemlでの方法をまとめました。
参考:MiddlemanのbuildディレクトリをGitでサーバーにデプロイする
heteml側
1. SSHでログイン
$ ssh -p 2222 YOU@sshXXX.heteml.jp
パスワードを求められるのでhetemlのログインパスワード(FTPパスワード)を入力。
※公開鍵方式にすればパスワードは省略可能。
2. 管理リポジトリを作成
$ mkdir repos
$ cd repos
$ mkdir YOUR_PROJECT.git
$ cd YOUR_PROJECT.git
$ git init --bare --shared
ローカルからpush
されたものはここにきます。
3.公開リポジトリを作成
$ cd ~
$ cd web
$ git clone ../repos/YOUR_PROJECT.git
$ mv YOUR_PROJECT/* ./ #ファイルを全部移動
$ mv YOUR_PROJECT/.??* ./ #ドットファイルも移動
$ rm -r YOUR_PROJECT
公開領域にgitをクローンします。今回はルートディレクトリにぶちまけたいのでファイルを移動しました。
4.HOOKを作成
僕もよくわかってませんが、post-receive
というものを使えば、ローカルから管理リポジトリにpush
されることで、公開リポジトリにコピーもされるらしいです。
$ vi ../repos/YOUR_PROJECT.git/hooks/post-receive
#!/bin/sh
cd /path/to/web;
git --git-dir=.git pull
hetemlの場合
#!/bin/sh
cd ~/web;
git --git-dir=.git pull
んで、実行権限をつける。
$ chmod +x post-receive
以上でサーバー側の設定はおしまい。
ローカル側
1. 作業リポジトリにリモートリポジトリを追加
$ git init
% git remote add origin ssh://YOU@sshXXX.heteml.jp:2222/~/repos/YOUR_PROJECT.git
2. あとは作業してその内容をpush
するだけ
$ git add.
$ git commit -m 'hello'
$ git push origin master
これでうまくいけばサーバーに公開されているはずです。簡単!