webentwicklung-frage-antwort-db.com.de

Alternativen zu Git-Submodulen?

Ich finde, dass die Verwendung von Git-Submodulen für meinen Entwicklungsarbeitsablauf irgendwie lästig ist. Ich habe von Git-Unterstruktur und Gitslave gehört. 

  • Gibt es mehr Tools für mehrere Repository-Projekte und wie werden sie miteinander verglichen? 
  • Können diese Tools unter Windows ausgeführt werden?
65
Chau Chee Yang

Welches für Sie am besten ist, hängt von Ihren Bedürfnissen, Wünschen und Arbeitsabläufen ab. Sie sind in gewissem Sinne semi-isomorph, es sind nur einige, die für bestimmte Aufgaben viel einfacher zu verwenden sind als andere.

  • gitslave ist nützlich, wenn Sie die Unterprojekte mehr oder weniger zur selben Zeit wie das Superprojekt steuern und entwickeln und wenn Sie normalerweise alle Repositorys gleichzeitig markieren, verzweigen, verzweigen, verschieben, verschieben usw. möchten. gitslave wurde noch nie an Fenstern getestet, die ich kenne. Es erfordert Perl.

  • git-submodule ist besser, wenn Sie die Teilprojekte nicht steuern oder das Teilprojekt an einer bestimmten Revision fixieren möchten, selbst wenn sich das Teilprojekt ändert. Git-Submodul ist ein Standard-Teil von Git und würde daher unter Windows funktionieren.

  • git-subtree bietet ein Frontend für gits integrierte Teilbaum-Zusammenführungsstrategie. Es ist besser, wenn Sie eine "vereinheitlichte" Git-Historie mit einem einzigen Repository bevorzugen. Anders als bei der Teilbaum-Zusammenführungsstrategie ist es einfacher, Änderungen in die verschiedenen (Verzeichnis-) Bäume zurück zum ursprünglichen Projekt zu exportieren, aber es ist nicht so automatisch wie bei gitslave oder sogar git-submodule.

  • repo ist theoretisch gitslave ähnlich, aber für Nicht-Android-Vorgänge, die ich gefunden habe, nicht so gut dokumentiert. Es ist ziemlich dem Google Android-Entwicklungsmodell gewidmet und unterstützt nur nativ eine Handvoll git-Befehle (obwohl Sie beliebige Befehle ausführen können), und die eingeschränkte native Unterstützung unterstützt beispielsweise kein zentrales Repository für Push to und das Auschecken von a Zweig scheint ziemlich schwierig.

  • kitenets mr ist das, was Sie verwenden möchten, wenn Sie mehrere Versionskontrollsysteme verwenden. Meistens ist es jedoch nur für git-only-Superprojekte begrenzt, da sie den kleinsten gemeinsamen Nenner haben. Es gibt Möglichkeiten, beliebige Befehle auszuführen, diese sind jedoch nicht so gut integriert.

85
Seth Robertson

Bei der Verwendung von Git-Submodulen in Projekten, in denen Abhängigkeiten in verschiedenen Sprachen vorhanden waren, ist ein ähnliches Problem aufgetreten. Um mit ihnen umzugehen, haben wir ein Tool namens MDLR ("Modular") entwickelt und aus einer Quelle bereitgestellt, mit dem Sie deklarationsabhängige, versionsgesteuerte Git-Abhängigkeiten mit ähnlichen Funktionen wie Git-Submodule erhalten, jedoch ohne den lästigen Workflow. Sie können es installieren und Ihre Abhängigkeiten mit den Anweisungen/downloads auf dem GitHub Repo verwalten.

0
svarlamov

Ich verwende derzeit Submodule für die Entwicklung und nicht nur für die Anbindung von Bibliotheken von Drittanbietern. Es gibt einige Möglichkeiten, wie Sie das Leben mit Submodulen erleichtern können, insbesondere wenn sie die Ursache für Konflikte bei der Zusammenführung oder Neubewertung sind. Schauen Sie sich ls-tree an, um die 2 Commits in einen Konflikt im Submodul einzubinden. Dies ist wahrscheinlich der schwierigste Teil der Submodule, mit dem sich Menschen auseinandersetzen müssen. Im Moment wird das Arbeiten mit Skripten wesentlich einfacher. Zukünftige Versionen von Git sollten eine bessere native Unterstützung für den Umgang mit ihnen haben.

Hoffe das hilft.

0
Adam Dymitruk