こんな感じでWebアプリを管理したいと思っています。
① ローカルでgitレポジトリを作ってバージョン管理する
② ローカルでgit commitしたものをリモートレポジトリにpush
③ pushした後に、リモートのwebサイトが更新したファイルをpullして同期
ローカルでcommit→リモートpush→webサイトに更新を同期、というサイクルを築きたいです。gitを使ってバージョン管理してwebサービスやアプリをメンテしている方は、どのようにして開発環境と本番環境を同期しているのかが知りたいです。
git利用時のオススメの管理手法や、上記のような仕組みを実現できる方法などをご教示下さい。情報提供お待ちしています。
よろしくお願いいたします。
リモートのリポジトリでhooks/post-receiveというファイル名でスクリプトを仕込んでやれば良いです。gitはpushされる度にこのスクリプトを起動してくれます。
例えば↓こんなことがしたいわけですよね。
git push したらサイトを更新するようにした « layer13
リモートリポジトリとWEBサイトが同じサーバで権限の問題もなければこのサイトのようにローカルでコマンドを叩くもよし、WEBサーバが別にあるのであればsshでリモートサーバのコマンドを叩いたりrsyncで公開したりとpushされたときに実行したいコマンドを好きに書いてください何をするかは自由です。
リモートのリポジトリでhooks/post-receiveというファイル名でスクリプトを仕込んでやれば良いです。gitはpushされる度にこのスクリプトを起動してくれます。
例えば↓こんなことがしたいわけですよね。
git push したらサイトを更新するようにした « layer13
リモートリポジトリとWEBサイトが同じサーバで権限の問題もなければこのサイトのようにローカルでコマンドを叩くもよし、WEBサーバが別にあるのであればsshでリモートサーバのコマンドを叩いたりrsyncで公開したりとpushされたときに実行したいコマンドを好きに書いてください何をするかは自由です。
ほぼベストアンサーに近いです!一応回答期限近くまで待ってみますが。
ありがとうございます!
ぼくも、No.1 の回答がズバリだとは思いますが、敢えて。
ソース管理をするときには、基本的にレポジトリはひとつにしておくべきだと思うんですよ。
開発中資源と、リリース用の資源を考えた場合、開発中資源の過去の状態がリリース用の資源に
なっているはずなので、trunk の head が開発中資源の最新で、
途中のリビジョン (もしくは、head) に「リリース用」というタグが付いてて、
開発環境では head を checkout、リリース環境では、リリース用のタグを指定して checkout という姿が正しいと思います。
たまに、リリース直前で修正を当てなきゃいけないことがありますが、それは branch にしておいて、
その branch にリリースタグを付けて、trunk の方にも、同じ修正を当てておく。
git の push が便利だなあ、と思うのは、開発に携わる面子が広いときです。
例えば、オープンソースのように、開発者が日本だけにとどまらず、各チームで head を持っておきたいとか、
開発規模が大きくて、フレームワークと、○○機能なんかで head を分けて持っておきたいとか。
回答ありがとうございます。
開発環境ではheadをcheckoutリリース環境では、リリース用のタグを指定してcheckout、僕もローカル環境ではこれに近いことをやっています。リリース用のタグにversionNo打ち込んでるカンジで。
確かにローカルとリモートで2個持たずに、1個に統一したほうが運用はキレイになると思います。考え直します。
ほぼベストアンサーに近いです!一応回答期限近くまで待ってみますが。
ありがとうございます!