2 つの異なるチームがあり、それぞれが独自の場所にあり、git を使用しており、それぞれの場所に参照リポジトリがあります。各場所は企業ネットワークにアクセスできますが、2 つのネットワークを直接接続することはできません (信頼してください、私たちは尋ねました)。ファイルを交換することしかできません。それぞれの参照リポジトリを通じて作業を共有できるように、2 つの場所を定期的に同期できるようにしたいと考えています。
要求事項:
- 交換はどちらの方向でも許可する必要があります。
- ほとんどの場合、別々のブランチで作業することを期待している場合でも、両側から同時にいくつかのブランチで作業するか、少なくともこれが発生した場合から回復できる必要があります。これは、分岐作業を処理するために統合ステップが必要になる可能性があることを意味します。
- ほとんどの追跡は自動的に行われる必要があり、手動による介入と、それによる操作エラーのリスクが最小限に抑えられます (致命的ではありませんが、指差しを避けるのが最善です: 信頼は限られています)。特に、git-bundle の man ページで使用されている単一の移動するタグの例は、限られた数のブランチ (数十あります) にさえ拡張できないため、ばかげています。
- 参照リポジトリは、リモート プッシュ/プルおよび必要に応じて簡単な管理操作によってのみ操作できます。これは、それらが IT の管理下にあり、常に一貫性を保つ必要があるためです。つまり、最初に統合が行われ、その後でのみ変更が行われます。反対側は、統合とともに、ローカル参照リポジトリで公開されました。
- 毎回リポジトリ全体を送信することはできません (tar-gzip であっても): それ自体が少し大きいだけでなく、連続して送信されるすべてのパッケージが記録に保持されます。すぐに持続不可能になります。
- 特定の開発者のローカル リポジトリに格納されている情報に依存せずに、すべての開発者が同期手順を実行できるように、必要なすべての情報をローカル参照リポジトリに格納する必要があります。
- 少なくとも可能な限り、git に反対するのではなく、git と連携してください。ワークフローが奇妙であるほど、git の変更やその他の予期しない状況によって中断する可能性が高くなります。
非要件:
- 2 つ以上の切断されたサイトの処理。2つはすでに十分に挑戦的です。
- 夜間処理。交換は手動でトリガーされ、処理されます。
- コマンドの数または複雑さが限られている。多くの複雑なコマンドが必要な場合でも、その複雑さを常にスクリプトに隠すことができます。
- オフライン同期を越えます。ストリームと同じように、これは常に問題を意味します。したがって、オフライン同期操作は、方向に関係なく、必要に応じて交代で完全に順序付けられていると想定できます。
- 支店管理の詳細など。それは私たちの社内業務です。