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
この記事は役に立ちましたか?
- EnglishWorm.com
- SinglesFan.com
- LmLab.net
- サイトマップ
- 運営者について