Git

2013-07-22, git linux httpd

Gitでウェブコンテンツ管理

本来はbareリポジトリを別個に持った上で、デプロイ用の仕掛けを作った方が良さそうですが、一人でシンプルに管理する程度の用途なら役に立つのでは、と考えて手順を検討してみました。

1.ウェブサーバ側に通常の(non-bareな)Gitリポジトリを作って、そこをそのままhttpdのDocumentRootに設定します(ルートディレクトリから公開する場合は、.gitディレクトリが見えないように制限するのを忘れずに)。

On web server host
$ mkdir www && cd www
$ git init

2.手元のマシンにリポジトリのクローンを作成します。ここまでは普通の手順です。

On local machine
$ git clone ssh://user@host/path/to/www/

3.コミットも普段通りに行えます。次のpushで少し工夫が必要です。そのまま「git push」とすると「(リモート側で)すでにチェックアウトされているので、更新出来ない」という旨のエラーが返ってきてしまいます。そこで下記例のように、違う名前のbranchとしてpushしてあげます。

On local machine
$ vi index.html
$ git commit -m "Lorem ipsum.." -a
 1 file changed, 1 insertion(+)
$ git push origin master:foobar

4.リモート側に新しいbranchが生成されますので、こいつを現在のbranchにマージします。

On web server host
$ git branch
  foobar
* master
$ git merge foobar
Updating 7b69a22..91ce5d7
Fast-forward
 index.html | 1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

これでひとまず更新の運用は出来そうですが、素直に「rsync --delete」した方が良いような気もしてきました。うーん、どちらがベターでしょうか?

参考URL

この記事は役に立ちましたか?