3

私たちは Git を学んでおり、メインの Git サーバー (git.example.com) にのみプッシュしたいと考えています。これは、(レポに基づいて) 開発 Web サーバー (dev.example.com) や Redmine (redmine.example.com) プロジェクト管理サーバーなどの他のサーバーにデプロイする必要があります。

.git/configこれは、次のようなワークステーションでの小さな構成で実行できることを理解しています。

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = https://git.example.com/testing.git
    # Development server only needs to serve the files.
    url = https://dev.example.com/testing.git
    # Redmine must be a bare one.
    url = https://redmine.example.com/testing.git

上記の解決策に関する私たちの意見。まず第一に、追加の帯域幅/アップロードを消費します。2 つ目は、これをクライアント側で構成する必要があることです.git/config。少なくとも git.example.com でこれを設定する方法はありますか?

同じ質問をする人にとって、このサイトは私たちを大いに助けてくれました: git を使ったプロの方法. そのページの下部にある小さなスニペット:

必要に応じて、この手順を少し調整することができます。自宅のコンピューターから直接ではなく、git.example.com のベア リポジトリからステージング サーバーにのみ変更をプッシュしたいとします。これを行うには、remote.staging.push 構成オプションを refs/remotes/origin/master:refs/heads/masterの代わりに read に変更しますrefs/heads/master:refs/heads/master。これは、ステージング サーバーにプッシュする必要がある開発者が複数いる場合に便利です。

この可能な解決策を完全には理解していません。しかし、それが私たちの問題の解決策になる可能性があるようです. また、Git のドキュメントも読んでおり、引き続きお知らせします。

どんな助けでも本当に感謝しています。前もって感謝します。

4

2 に答える 2

2

これは、サーバー側のフックスクリプトを使用して実行できます。この場合、更新が受け入れられてサーバーリポジトリに適用され、すべてが完了すると実行される受信後フックに追加する必要があります。このフックを使用して、すべてのパッチを他のリポジトリに再適用することにより、git-tfsリポジトリをより多くの履歴を持つ適切なgitリポジトリにミラーリングしました。あなたの目的のためには、git push --mirror各ターゲットを呼び出すだけでおそらく十分でしょう。または、サーバー上でcronジョブを実行して、同じことを定期的に実行することもできます。

サンプルのpost-receive-emailフックスクリプトは、ターゲットリポジトリを構成変数として保存し、先に進む前にリポジトリが適切な状態にあることを確認することで、いかに凝ったものになるかを示しています。フックスクリプトからの出力は、プッシュしているユーザーに表示できます。これは、何らかの理由で失敗した場合に役立ちます。

git push --mirror mirror1; git push --mirror redmine最も簡単なのは、サーバーのフック/受信後のスクリプトにいくつかの行を追加することです。

于 2012-12-13T23:43:51.943 に答える
1

私たちはまだ目標を改善しようとしています。このページが役立つようです: http://sitaramc.github.com/gitolite/mirroring.html

于 2013-01-21T23:54:02.927 に答える