1

これが状況です。サーバーAにリモートのgitリポジトリがあります。また、このリポジトリにある同じソースコードを使用してデスクトップBで作業する必要があります。サーバーAにアクセスするための帯域幅が限られているため、リポジトリ用にデスクトップBにローカルミラーを設定したいと思います。

今、私はミラーリポジトリを設定しました

git clone --mirror https://repository-on-server-a /local/repo/path.git

私はローカルリポジトリをテストしました

git clone file://localhost/local/repo/path.git

次に、crontabを変更して実行しました

cd /local/repo/path git fetch -q

5分ごとに同期します。それはうまくいきます。

当初は使うことを考えていました

git config --global url.file://localhost/local/repo/path.git.insteadOf https://repository-on-server-a

gitにリモートリポジトリではなくローカルディレクトリからすべてのオブジェクトをフェッチさせる。ただし、機能しません。

私の質問は

  1. リモートgitリポジトリ用にそのようなローカルミラーを設定する簡単な方法はありますか?
  2. 'git push'の処理方法は?代わりにOfはローカルディレクトリにすべてのプッシュを取得するので、どうすればすべての変更をサーバーAにプッシュバックできますか?

ローカルディレクトリはテスト用ですが、最終的な解決策ではありません。後でデスクトップBからソースコードを取得するための別のデスクトップCがあります。別の同僚も私に加わります。つまり、デスクトップBにすべての変更を加えて、「中心的な」ソリューションを提供したいと考えています。

4

1 に答える 1

5

鏡は何のためにあるのですか?ローカルのgit作業ディレクトリ、すでにオリジンリポジトリのミラーです。これがDVCSの仕組みです。ファイルシステム上の2番目のローカルコピーの利点がわかりません。

編集 リポジトリの1つを、残りのネットワークとアップストリームオリジンの間の変更のためのローカルネットワーク収集ポイントとして使用する場合は、cronジョブで問題ありません。実行したpush --mirror後、実行してもらいますfetch -a

ただし、プロキシ/エイリアスの設定は気にしません。全員にクローンを作成して、ローカルミラーに明示的にプッシュしてもらいます。そうすれば、何らかの理由で実際の原点に到達する必要がある場合でも、邪魔になりません。両方のURLをリモートとして設定し、デフォルトでローカルURLを使用し、必要に応じてリモート名で実際のURLを使用できるようにすることもできます。

于 2012-05-30T03:15:04.780 に答える