12

これが私がやろうとしていることです:

GitHubリポジトリがあり、その一部をWebで表示できるようにしたいと考えています。現在、自分のサーバーにリポジトリのクローンを作成しましたが、正常に機能しますが、最新の状態に保つには、手動でログインして最新の変更をプルする必要があります。

これが最良のアイデア(または最良のアプローチ)であるかどうかはわかりませんが、誰かがリポジトリにプッシュするたびにリモートサーバーが自動的にプルするようにしたいと思います。GitHubを使用すると、誰かがプッシュしたときにスクリプトを簡単に実行できますが、誰かがプッシュした後、どのようにプルするかはわかりません。

私は単純化のためにPHPを使用していましたが、パーミッションのために、自然にそのようなことをするだけでgit pullは機能しません。これは悪い考えですか、それとも私がやりたいことを達成する別の方法がありますか?これは一般的な設定のようですが、よくわかりませんでした。

ありがとう。

4

3 に答える 3

3

プッシュするスクリプトを実行するのが簡単な場合は、プッシュするフックをセットアップできます。

  • GitHub から Web サーバー上のベア (空のワークツリー) リポジトリへ
  • Web サーバー上のベア リポジトリから「ライブ」リポジトリへ (Web サイトを表すワークツリーを使用)

次に、それを「ライブ」レポのフックに関連付けて、ベアレポが何かをプッシュするたびに、それ自体を更新します (「git マージ」を介して、ベアレポのコンテンツを「ライブ」レポにマージします)。

必要な効果が得られます。GitHub リポジトリへのプッシュ (特定のブランチの場合) は、「ライブ」Web サーバー リポジトリの更新をトリガーします。

于 2010-03-08T11:30:02.530 に答える
1

プッシュを受け取る「リモート」レポが、後でプルするレポと同じマシン上にあることを除いて、ほぼこの方法で動作するものを作成しました。まったく同じユーザーのセットが両方のリポジトリに対する権限を持っていることは事実です (そして重要です)。(しかし、これは問題ないはずです。ランダムな人があなたのレポをプッシュするのは望ましくありません。)いずれにせよ、git post-update フックでプルを実行するシェル スクリプトを呼び出すだけです。1 つのトリッキーな点は、環境をきれいにする必要があることです (私は を使用しましenv -iた。または、git 関連の変数の設定を解除できます)。そうしないと、プルが混乱します。

于 2010-04-21T05:04:07.393 に答える