2012-04-06 11 views
6

私はGitの周りを包み込み、ウェブサイトをデプロイする(あるいはデプロイしない)ようにしています。私はグーグルで検索して読んでいますが、私の特定のケースや懸念に対する答えを見つけることはできません。私はまだこれを行う計画段階にありますが、最初からすぐにそれを取得し、私のために働くワークフローを見つけたいと思います。GitリポジトリからPHPウェブサイトをデプロイ

www.example.comでライブウェブサイトを実行し、dev.example.comで開発版を実行するリモートVPSを持っています(それらは/ var/wwwにあります)。/example/htdocs /と/ var/www/example/subdomains/dev /)を指定します。

開発は/opt/git/example.git/の裸のリポジトリから実行されます。裸のレポにはマスターと開発の支店があります。私と他の開発者の両方は、ローカルマシン上にこのリポジトリのクローンを持っています。私たちは開発拠点から引き抜いてそこから作業します。 dev.example.comには開発ブランチの最新のコードがあり、適切にテストされればmasterにマージし、タグを追加してexample.com(基本的にはgit flow)を更新します。

私がGit IRCチャンネルで見つけた最初のアプローチは、リポジトリを更新するためにフックを使用していますが、これは非常に除外され、時には望ましくなく、私はプッシュ後に自分自身でコマンドを実行したい、 。別のコマンド(またはシェルスクリプト)は、開発がマージされた後に、ライブサイトをマスターブランチから更新します。私もカピストラーノを見つけましたが、それは今の私の頭の中に少ししかないようです。

読んでいるうちに、リモートサイトに2つのクローンを作成することを提案している多くの人が見つかりました.1つはライブサイト用で、もう1つは開発サイト用で、必要に応じて分岐します。これにより、バージョン管理ファイルもWeb経由でアクセスできるようになります。これは私が望まないものです。理想的には、gitファイルやフォルダを使わずに「クリーン」なコピーを作成したい。

私はgitアーカイブを使用したアプローチも見つけましたが、裸のリポジトリからgitアーカイブを実行すると、masterブランチのみをアーカイブすることができます。 /opt/git/example.git/にあるgit archive --format=tar HEAD | (cd /var/www/example/htdocs/ && tar xf -)というコマンドを使ってこれを行います。

私はgit archiveのアプローチが私に最も近い答えをもたらすように感じますが、私はGit知識の欠如によって制限されています。 HEADの代わりにブランチを使用するようにコマンドを変更できますか(HEADの代わりにorigin/masterを使用しようとしたときにエラーが発生しました)。正しい方向に私を向けることができる人はいますか?

答えて

4

git archiveの引数として任意のtree-ish(任意のブランチ、タグ、sha1ハッシュなど)を使用できます。あなたは裸のレポにあって起源を持っていないので、原点/マスタを使用することはできません。ローカルブランチ名を使用する必要があります(例:

git archive --format=tar develop 
+0

私はこれを5回upvoteできますか?だからシンプルなのでとてもシンプルです。 – Bram

+0

Heheheありがとう:) – ralphtheninja

+0

最終的にこれを受け入れる前に最後の質問:.gitignoreファイルを削除することは可能ですか? – Bram

関連する問題