Ich möchte die Idee von Monorepo innerhalb meiner Firma zu fördern.
Ich würde planen, sie auf diese Weise zu verwenden:Git Submodul Spur Zweig wirksam
Ich habe einen ‚Eltern‘ Repo hält ein Submodul für jede Komponenten unseres Stapel, damit die Aufrechterhaltung einer globalen Versionierung für den gesamten Stapel (wir können einfach Überprüfen Sie alle Komponenten in einem bestimmten Zweig)
Das klingt perfekt, weil wir immer noch von jedem CI-Service aus der Box profitieren können (haben wir noch auf unabhängige Git Repo, die Submodule schieben).
Die einzige (schrecklich) Schwäche bei diesem Ansatz ist, dass ein, wenn eine der folgenden Config
git submodule update --remote
tun:
[submodule "commonLib"]
path = commonLib
url = [email protected]:org/commonLib.git
branch = MY_BRANCH
Jedes Modul wird effektiv an der rechten geoutet Scheck begehen .
Aber: Sie sind alle in freistehendem Leiter
Warum gibt es keine Möglichkeit, um effektiv gitsumodule mit Zweig zu verwenden. d. H: bei der Aktualisierung die Verzweigung und nicht die von dieser Verzweigung angegebene Festschreibung effektiv auschecken? Gibt es einen technischen Grund oder einfach nicht in Git implementiert?
Dank
Wir stießen auf das gleiche Problem. Das Problem besteht darin, dass das Master-Repository jedes Mal, wenn ein Submodul aktualisiert wird, Submodule aktualisieren muss, um den Master-Zweig auf den neuesten Stand zu bringen. Am Ende haben wir die Kernprojekte in einem einzigen Repo zusammengefasst, der das Problem gelöst hat. Submodule funktionieren am besten für Abhängigkeiten von Drittanbietern und andere private Projekte, die sich nicht oft ändern. Im Idealfall sollte jedes Submodul unabhängig aufgebaut werden, so dass es selbst in CI laufen kann. Sie können Google Git-Repo, die dieses Problem teilweise behandelt. https://gerrit.googlesource.com/git-repo/ –
Können Sie näher auf das Problem eingehen, über das Sie sprechen, ich bin mir nicht sicher, ob Sie es richtig verstehen. – Clement
Von dem, was ich verstehe, wenn Sie die Verzweigungsverfolgung verwenden, zeigt das ausgecheckte Submodul direkt auf die richtige Festschreibung, aber nicht auf die Verzweigung, die auf diese Festschreibung zeigt. Was bedeutet, dass sich jeder vor dem Arbeiten um den richtigen Zweig kümmern muss ... Und das, was mich stört. – Clement