バージョン管理にgitを使っている方へ質問です。

こんな感じでWebアプリを管理したいと思っています。

① ローカルでgitレポジトリを作ってバージョン管理する
② ローカルでgit commitしたものをリモートレポジトリにpush
③ pushした後に、リモートのwebサイトが更新したファイルをpullして同期

ローカルでcommit→リモートpush→webサイトに更新を同期、というサイクルを築きたいです。gitを使ってバージョン管理してwebサービスやアプリをメンテしている方は、どのようにして開発環境と本番環境を同期しているのかが知りたいです。

git利用時のオススメの管理手法や、上記のような仕組みを実現できる方法などをご教示下さい。情報提供お待ちしています。

よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/07/11 19:02:44
  • 終了:2011/07/18 01:47:22

ベストアンサー

id:y-kawaz No.1

y-kawaz回答回数1420ベストアンサー獲得回数2252011/07/12 03:27:57

ポイント200pt

リモートのリポジトリでhooks/post-receiveというファイル名でスクリプトを仕込んでやれば良いです。gitはpushされる度にこのスクリプトを起動してくれます。

例えば↓こんなことがしたいわけですよね。

git push したらサイトを更新するようにした « layer13


リモートリポジトリとWEBサイトが同じサーバで権限の問題もなければこのサイトのようにローカルでコマンドを叩くもよし、WEBサーバが別にあるのであればsshでリモートサーバのコマンドを叩いたりrsyncで公開したりとpushされたときに実行したいコマンドを好きに書いてください何をするかは自由です。

id:gothedistance

ほぼベストアンサーに近いです!一応回答期限近くまで待ってみますが。

ありがとうございます!

2011/07/13 15:07:06

その他の回答(1件)

id:y-kawaz No.1

y-kawaz回答回数1420ベストアンサー獲得回数2252011/07/12 03:27:57ここでベストアンサー

ポイント200pt

リモートのリポジトリでhooks/post-receiveというファイル名でスクリプトを仕込んでやれば良いです。gitはpushされる度にこのスクリプトを起動してくれます。

例えば↓こんなことがしたいわけですよね。

git push したらサイトを更新するようにした « layer13


リモートリポジトリとWEBサイトが同じサーバで権限の問題もなければこのサイトのようにローカルでコマンドを叩くもよし、WEBサーバが別にあるのであればsshでリモートサーバのコマンドを叩いたりrsyncで公開したりとpushされたときに実行したいコマンドを好きに書いてください何をするかは自由です。

id:gothedistance

ほぼベストアンサーに近いです!一応回答期限近くまで待ってみますが。

ありがとうございます!

2011/07/13 15:07:06
id:a-kuma3 No.2

a-kuma3回答回数4443ベストアンサー獲得回数18252011/07/17 18:29:39

ポイント100pt

ぼくも、No.1 の回答がズバリだとは思いますが、敢えて。


ソース管理をするときには、基本的にレポジトリはひとつにしておくべきだと思うんですよ。

開発中資源と、リリース用の資源を考えた場合、開発中資源の過去の状態がリリース用の資源に

なっているはずなので、trunk の head が開発中資源の最新で、

途中のリビジョン (もしくは、head) に「リリース用」というタグが付いてて、

開発環境では head を checkout、リリース環境では、リリース用のタグを指定して checkout という姿が正しいと思います。


たまに、リリース直前で修正を当てなきゃいけないことがありますが、それは branch にしておいて、

その branch にリリースタグを付けて、trunk の方にも、同じ修正を当てておく。


git の push が便利だなあ、と思うのは、開発に携わる面子が広いときです。

例えば、オープンソースのように、開発者が日本だけにとどまらず、各チームで head を持っておきたいとか、

開発規模が大きくて、フレームワークと、○○機能なんかで head を分けて持っておきたいとか。

id:gothedistance

回答ありがとうございます。

開発環境ではheadをcheckoutリリース環境では、リリース用のタグを指定してcheckout、僕もローカル環境ではこれに近いことをやっています。リリース用のタグにversionNo打ち込んでるカンジで。

確かにローカルとリモートで2個持たずに、1個に統一したほうが運用はキレイになると思います。考え直します。

2011/07/18 01:46:58

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません