Gitolite ミラーリング コンセプトをセットアップしようとしましたが、サブモジュールを除いてすべて正常に動作しています。
スレーブ サーバーからレポ (サブモジュールを含む) を複製してサブモジュールを更新すると、サブモジュールはマスター サーバーから複製されます。
これらのサブモジュールもスレーブサーバーから複製する方法は?
Gitolite ミラーリング コンセプトをセットアップしようとしましたが、サブモジュールを除いてすべて正常に動作しています。
スレーブ サーバーからレポ (サブモジュールを含む) を複製してサブモジュールを更新すると、サブモジュールはマスター サーバーから複製されます。
これらのサブモジュールもスレーブサーバーから複製する方法は?
1 つの方法は、たとえば受信後フックで、.gitmodules
サブモジュールのアドレスを変更し、その後にgit submodule sync
.
または、「Git サブモジュールの URL が変更されました」と新しいコマンド (Git 2.25+、2020 年第 1 四半期)を参照してください。
git submodule set-url [--] <path> <newurl>
maxmelbinオブジェクト:
しかし、変更
.gitmodules
は新しいコミットを意味します-そうですか?
必ずしもそうではありません: その変更を加えてコミットせずに、純粋に「プライベート」(スレーブサーバーに対してローカル) に保つことができます。
質問は、すべてのレポがスレーブにミラーリングされているため、サブモジュールの更新中に、そのコミットの .gitmodules で構成されたサイトの URL に関係なく、ローカルのレポの URL を自動的に選択する方法があるかということでした。
--reference
コマンドのパラメーターはgit submodule update
まさにそれを達成できると思います。
--reference <repository>
このオプションは、追加および更新コマンドに対してのみ有効です。
これらのコマンドは、リモート リポジトリのクローンを作成する必要がある場合があります。この場合、このオプションはgit-clone
(1) コマンドに渡されます。
注:およびオプションの注意をgit-clone
--reference
--shared
よく読んでいない限り、このオプションを使用しないでください。