これが以前に尋ねられた場合、そのように明確にラベル付けされていない場合はお詫び申し上げます。
2 つの異なる国に 2 つの開発チームがあり、それぞれが同じプロジェクトに取り組んでいますが、開発者はローカル オフィスの Git リポジトリに対して作業しています。各オフィスは異なるタイムゾーンで運営されており、約 8 時間の間隔がありますが、1 時間ごとに最新の状態に保つようにしています。したがって、OfficeA の開発者は自分のリポジトリにプル/プッシュし、OfficeB は自分のリポジトリにプル/プッシュします。プロジェクトのコード/構造は同じです。
OfficeA は真のマスターであり、CI および UAT への展開が行われる場所です。したがって、次のように設定します。
OfficeB には、OfficeA のレポのクローン ミラーとして設定されたレポがあります。
git clone --mirror git@gitlab:project.git
OfficeB が OfficeA からの変更でレポを更新するための 1 時間ごとのタスクがセットアップされます (誰も分岐していません。私たちは皆、マスター ブランチで作業するだけです。
git フェッチ
git プッシュ
タイムゾーンが原因で、しばらくの間問題は発生しませんでしたが、コードが失われているため、上記のこの解決策は私たちがすべきことではないようです。多くの場合、OfficeB は午前中にコミットが 1 つまたは 2 つ欠けており、これはからの単純なプッシュによって修正されます。ローカル マシン リポジトリから変更が失われないため、各開発者のマシン。
さらに調べてみたところ、この全体的なアプローチは正しくなく、ミラーがまさにそれであるという点で私たちがすべきことではないようです。それでは、HQ リポジトリをリモートで維持し、各リポジトリがローカル開発者によって使用され、両方の側からの変更がマージされてプッシュされ、両方のサーバーが相互に反映されるようにするための最良のソリューションは何ですか? OfficeB には 2 つのリポジトリが必要だと思います。1 つは開発者が使用するもので、もう 1 つは HQ のミラー化されたクローンです。同期スクリプトは、OfficeB のこれら 2 つのリポジトリ フォルダー間で更新とマージを実行します。
これが進むべき道であるかどうかを確認し、あなたの考えやスクリプト、または役立つ可能性のあるものを提供してください. Git は強力に見えますが、非常に紛らわしく、ドキュメントには git 用語がたくさんあり、組織全体で非常に悪い名前になっています :-(
これは、国際企業で働く人々にとって非常に一般的な設定であると予想していたので、明確で簡潔なヒントや、おそらく私の「ググった」ことを簡単に見つけることができなかったことに驚いています :-)
よろしくお願いします
提案
OfficeA はそのままです... OfficeB は OfficeA のベア ミラー クローンを作成します... ミラー クローンから追加のクローンが作成され、DEV はすべてこのクローンを使用します。元のミラーは純粋に、競合を安全に処理するための仲介者として機能する同期プロセス用であり、いったん注意を払い解決すると、リモート マスターにプッシュされます。
それとも、両方の複製されたリポジトリを作業ディレクトリを持つ標準の複製にする必要がありますか?