2013-11-26 7 views
6

私はいくつかのウェブサイトのプラグインをgit経由で配備し始めています。なぜウェブサイトの配備にgit bareリポジトリを使用しますか?

私はWeb上で数多くのチュートリアルを行ってきましたが、そのすべては、Webサーバー上に裸のリモートリポジトリを作成し、DocumentRootディレクトリをチェックアウトするための更新後のフックを作成することをお勧めします。あまりにも多くの問題がなくても、私はこれをすべて手に入れました。

なぜ私たちは作業ディレクトリからリポジトリを分離していますか? DocumentRootディレクトリをリポジトリとして使用し、htaccessを使用して.gitコンテンツへのパブリックアクセスを防止するだけで何が問題になりますか?

答えて

4

実際に、構成の悪いhtaccessに内在するセキュリティ上のリスクは、それ自体では十分な理由ですが、主な理由は、デフォルトでは、ベア以外のリポジトリのチェックアウトされたブランチにプッシュできません。 (これは有効になりますが、その後、作業ツリーを更新するgit reset --hardを必要とし、別のデプロイメントディレクトリを持つよりも単純であることができません。)

0

いくつかの質問が関連するが、実際に分離されている、ことここにあります

1 - なぜ私たちは作業ディレクトリからリポジトリを分離していますか?

gitはデフォルトでチェックアウトされたブランチにプッシュすることを禁止するので、したがって、ディスク上にある場合は、チェックアウトされているため、定義上、作業ディレクトリに移動することはできません。

2 - それらのすべては、Webサーバー上で裸のリモートリポジトリを作成することをお勧めし

暗黙の質問です:why a bare repo?まあ、裸のレポは、単にチェックアウト何もGitのレポです。したがって、裸のレポの任意のブランチにプッシュすることができます。一部の人々はこれをより簡単に維持すると考えています。

第2の暗黙の質問:is there an alternative to bare repos?はい、上記の制限はチェックアウトされたブランチにのみ適用されます。だから、まだチェックアウトされていないブランチに自由にプッシュすることができます。おそらくは "デプロイ"した後、チェックアウトされていないブランチを作業ディレクトリにマージするフックがあります。 gitの作業ディレクトリとして

0
  1. 利用のDocumentRoot:

    • 使用、更新のために引っ張っ外部トリガまたはクーロンを必要とするか、または手動
    • それを実行へのHTTPアクセスを制限する必要があります。gitのディレクトリ
    • は/ DocumentRootの中で瞬時に編集をハックくださいデバッグのために良い/
    • スイッチ分岐が
  2. 利用別々の裸のgit repostory

      簡単で問題を見つけ、gitの履歴と比較して差分を使用することができます
    • ユーザーはこのリポジトリにプッシュして、更新後のフックを使ってDocumentRootを更新することができます
    • 通常、git bare repoでインスタントハックをしたい人はいませんが、DocumentRootの変更はgit history
    • のDocumentRootがクリーンである
    • スイッチブランチだからフック

を変更する必要があるかもしれません、別の裸のgitリポジトリをセットアップする必要が更新後のフックを除いて、よりクリーンで使いやすいようです。

プラン1は小規模なプロジェクトで使用したり、メカを開発しても問題ありませんが、特にWebサーバーを変更する場合は.gitディレクトリへのアクセス権に注意してください。例:nginxは.htaccessをサポートしていません。これはgitに他のプロジェクトファイルを一緒に保存することがよくあります。

+0

裸のレポプランでは、documentRootでインスタントハックを行うことができますが、更新後のフックで拭き取る可能性が最も高いので、今後の使用のためにコミットできません。 – slebetman

+0

はい、インスタントハックをするのはもう少し違うので、私は答えを更新します。 – Fwolf

関連する問題