3

私は、私を近づけるように見える多くの投稿を読みましたが、私が望むものにはほど遠いものではありません. 私は1つのサーバーを持っています。その上に、www.domain.com、staging.domain.com、および dev.domain.com の 3 つの Web サイトがあります。また、local.domain.com で開発を行っており、GitHub を中央リポジトリとして使用しています。

git リポジトリを Web ルートから遠ざけたいと思います。私はこれを行う方法にオープンです。私がしようとしているのは:

/home/user/git/production.git 
/home/user/git/staging.git
/home/user/git/development.git

GIT_DIR と GIT_WORK_TREE を設定することで、サイトとレポが 1 つしかない場合にこれを行う方法を知っています (パスを .bash_profile にエクスポートします)。

次のように、各リポジトリ内で作業ツリーを設定できるconfigようです。

[core]
    bare = false
    worktree = /home/user/domains/www.domain.com/public_html

しかし、どうすれば設定できGIT_DIRますか?

したがって、/home/user/domains/ www .domain.com/public_html にいて などを実行すると、本番のgit リポジトリgit statusが参照されます。また、/home/user/domains/ staging .domain.com/public_html にいる場合は、staging .git に関連付けられています。

4

2 に答える 2

3

設定$GIT_DIRする代わりに、gitlink ファイルを使用できます。これを行うには、各作業ツリーのルートに移動して実行します。

echo "gitdir: /home/user/git/production.git" > .git

これにより、.gitWeb ルートにファイルが作成されますが、誰かがアクセスした場合にリークする唯一のものは、リポジトリへのパスです。$GIT_DIRこれにより、現在のディレクトリに基づいて変数を設定してゲームをプレイする必要がなくなります。

于 2012-11-02T02:08:27.373 に答える
0

あなたは何をしようとしているのですか?

/home/user/git/production.git作業ディレクトリが検出され/home/user/domains/www.domain.com/public.html、push/pull/checkout がそこで正常に動作するはずです。残念ながら、gitはサイキックではありません-.gitフォルダーのないランダムなディレクトリから、gitは構成ファイルを探す場所さえ知りません(「gitdir」ファイルがなければ、他の回答から学んだばかりです)。

いつでも渡すことができますがgit --git-dir=~git/production.git checkout ...、自動化されたソリューションを探しているに違いありません。

シェルスクリプトで git をラップしてみてはいかがでしょうか? これを次のようにするとどうなりますか~/bin/autogit

#!/bin/bash
DIR=$(pwd)
if (fgrep -q domains/www.domain.com <<< "$DIR"); then
  git --git-dir=/home/user/git/production.git $@
elif (fgrep -q domains/staging.domain.com <<< "$DIR"); then
  git --git-dir=/home/user/git/staging.git $@
elif (fgrep -q domains/local.domain.com <<< "$DIR"); then
  git --git-dir=/home/user/git/development.git $@
fi
echo "Autogit failed from directory $DIR."
exit 1      

(補足: なぜ 3 つのリポジトリがあるのですか? 3 つの異なるブランチ名を持つ 1 つのリポジトリと、各ブランチを適切なディレクトリにチェックアウトするスクリプトを使用する方が一般的です。)

于 2012-11-02T02:19:32.407 に答える