5

私はますます Git に夢中になっており、これを正さなければなりません。

Web 経由でアクセスできるフォルダー内に .git リポジトリーを配置するのは、セキュリティ対策として不適切であるとどこかで読みました (合理的に聞こえます!)。

私の質問は、それが正しい場合に加えて、これに対する最善の解決策は何ですか? もちろん、Web開発中にリモートホストで作業している場合に主に発生する問題。

たとえば、「プロジェクト」がリポジトリである domain.com/project で作業している場合、何ができますか?

.git-folder を htdocs の外に移動してリンクすることはできますか? または、それに保護層を追加できますか?

私は主に共有ホストで開発しているため、インストールしてセットアップできるものは限られています。

リポジトリ/フォルダー全体をサーバー上のどこかに隠してから、プッシュするときにコンテンツをコピーするスクリプトを設定できることを読みました。

しかし、「ライブ」サーバーで開発する場合、コミット間でコードをリアルタイムでテストできるようにしたいと考えています。

私の言いたいことが分かりますか?

助けてください!

4

4 に答える 4

3

過去に、私はこれをしました:

project/
  .git/
  README,etc
  public/
    index.html

次に、 public/ サブディレクトリの世界を見えるようにしますが、親の project/ ディレクトリを非表示にします。これは、シンボリック リンクまたは適切な .htaccess 呪文を使用して行うことができます。

于 2012-05-08T11:36:44.233 に答える
2

はい、.gitディレクトリを移動し、環境変数を使用してディレクトリGIT_DIRを指すことができます。

GIT_DIR

    If the GIT_DIR environment variable is set then it specifies a path to use instead of the
    default .git for the base of the repository.
于 2012-05-08T11:44:50.497 に答える
1

私の答えは、DebianでApacheを使用していることを前提としていますが、他のディストリビューションやサーバーにも簡単に適応できます。

2つの可能性があります。

1:リポジトリへのシンボリックリンクを作成します

これで、public_htmlフォルダーから作業コピーへのシンボリックリンクを作成できます。たとえば、vhost構成でDocumentRootが「/ var / www / site / public_html」に配置されている場合、これをgit作業コピーにシンボリックリンクできます。

ln -s /var/git/site/html /var/www/site/public_html

または、サブフォルダにアクセスできるようにするだけの場合:

ln -s /var/git/site/feature/ /var/www/site/public_html/feature

これでも一部の.gitファイルにアクセスできるようになるため、.htaccessファイルまたはvhostファイルを変更して使用できないようにする必要があります

2:リポジトリをエクスポートします

私の意見では、はるかに優れたオプションは、(ベア)リポジトリを作成し、必要なときに必要なバージョンをエクスポート(アーカイブ)することです。通常、プッシュするたびにサイトを更新するのではなく、特定のタグ、ブランチをエクスポートします。またはコミットします。

git archive master | tar -x -C /var/www/site/public_html

ここで、masterを、受け入れられているツリー風の構造(ブランチ、コミット、タグなど)に置き換えることができます。

于 2012-05-08T11:46:02.837 に答える
0

あなたの問題に対する2つの主な解決策は、まだ十分に単純です(コピースクリプトとは対照的に)。

まず、アクセス可能なディレクトリhttp://example.com/を次のよう/var/www/example-com/にして、git ディレクトリを に配置し/var/www/.gitます。example-comこれは、ホストがディレクトリ内にのみある場合にのみ機能します/var/www/(または、少なくとも他の v-server のいずれも git リポジトリを必要としません)。管理者にルートディレクトリをに移動するように指示できれば、これを回避できます。/var/www/example-com/siteファイルが直接に/var/www/example-comアクセスできません。

もう 1 つは、別のユーザーを介して、またはそれが利用できない場合は別のユーザーを介して、.gitディレクトリへのアクセスを拒否することです。.htaccessサーバーがwww-dataメイン グループwww-dataと同じように実行されユーザー名がmeである場合、ルート ディレクトリを所属me:www-dataさせ、グループ権限を に設定できます。r-Sこれは、グループのメンバーがすべてを読み取りwww-data、ディレクトリ (およびディレクトリのみ) を実行できることを意味します。グループ スティッキー ビットが設定されます。次に、.gitディレクトリをそのままにするrwx------か、自分のグループに割り当てます。

于 2012-05-08T11:43:38.503 に答える