私はGitに頭を悩ませ、Gitを使用して(または使用せずに)Webサイトを展開しようとしています。私はグーグルで検索して読んでいますが、私の特定のケースや懸念に対する答えを見つけることができません。私はまだこれを行う計画段階にありますが、最初から正しく理解し、自分に合ったワークフローを見つけたいと思っています。私は状況をできるだけ明確に説明しようとします:
www.example.comにライブWebサイトを実行し、dev.example.comに開発バージョンを実行するリモートVPSがあります(これらは/ var / www / example /htdocs/および/var/ www / example / subdomains/devにあります。 /)。
開発は/opt/git/example.git/のベアリポジトリから実行されます。ベアリポジトリにはマスターと開発のブランチがあります。私と他の開発者は両方とも、ローカルマシンにこのリポジトリのクローンを持っています。開発ブランチからプルして、そこから作業します。dev.example.comには開発ブランチからの最新のコードがあり、それが適切にテストされたら、masterにマージし、タグを追加してexample.comを更新します(基本的に、このgitフロー)。
Git IRCチャネルで最初に見つけたアプローチでは、フックを使用してリポジトリを更新しますが、これは非常に制限があり、場合によっては望ましくないこともあります。プッシュした後、サーバーでコマンドを実行して、開発環境を更新したいと思います。別のコマンド(またはシェルスクリプト)は、開発がマージされた後、マスターブランチからライブサイトを更新します)。キャピストラーノも見つけましたが、今は少し頭がおかしいようです。
読んでいると、リモートでさらに2つのクローンを作成することを提案している人がたくさんいました。1つはライブサイト用、もう1つは開発サイト用で、必要に応じてブランチをプルします。ただし、これにより、バージョン管理ファイルにWeb経由でアクセスできるようになります。これは、私が望まないことです。理想的には、gitファイルやフォルダーを含まない「クリーンな」コピーが必要です。
gitアーカイブを使用するアプローチも見つけましたが、ベアリポジトリからgitアーカイブを実行すると、マスターブランチをアーカイブすることしかできません。これは、/ opt / git /example.git/のコマンドを使用してgit archive --format=tar HEAD | (cd /var/www/example/htdocs/ && tar xf -)
行います。
git archive
このアプローチは私を答えに最も近づけるように感じますが、Gitの知識が不足しているために制限があります。HEADの代わりにブランチを使用するようにコマンドを変更できますか(HEADの代わりにorigin / masterを使用しようとすると、エラーが発生しました)?私を正しい方向に向けることができる人はいますか?