Ich habe gerade begonnen, unser Git-Repository aufzulösen, in dem unser gesamter Produktcode gespeichert ist, der gemeinsam genutzte Bibliotheken, Server-, Client- und Tooling-Codes enthält.
Als Teil der Beseitigung einiger der technischen Schulden, die wir mit unserem DCVS haben, schlagen wir vor, unsere gemeinsamen Client- und Server-Bibliotheken in ein Nuget-Archiv zu verschieben, das streng kontrollierte Push-Berechtigungen für die zu erzwingenden Entwicklungs- und Release-Zweige hat Erleichterung von Pull-Requests, mit denen wir uns abgemüht haben.
Der spaltende Teil ist keine große Sache; Ich habe git filter-branch
nach meinem Geschmack in Bezug auf die Historienspeicherung angepasst, und nun schaue ich mir an, wie man Repositories wieder zusammenfügt.
Im Moment sind die Bibliotheken nicht völlig klar und brauchen ein paar umfangreiche Refactoring-Arbeiten, bevor ich sie verpacken kann (ebenso wie einen richtigen Unit-Test und ähnliches) und Änderungen vornehmen möchte beide Repositorien mit Schwerpunkt auf Code-Review als kurz- bis mittelfristige Lösung.
Ich habe genug über beide git subtree
und git submodule
gelesen, um ihre relativen Stärken und Schwächen zu verstehen, bin aber immer noch in Konflikt darüber, was zu tun ist. Während eine überwältigende Anzahl von Ressourcen gegen die Verwendung von git submodule
protestiert wegen seiner Fragilität für diejenigen, die nicht wissen, wie man sie benutzt (schuldig!), Ist es die Alternative git subtree
scheint zu fehlen, dass explizite Referenzierungsmerkmale, die ich suche.
Wenn jemand ein ähnliches Setup wie ich suche oder einen ähnlichen Workflow hat, könnten Sie das kommentieren? Ich werde weggehen und die beiden Strategien testen, während ich "auf einen Bissen warte", und werde hoffentlich eine höhere Einschätzung haben.
Wir sind vor kurzem von einem traditionelleren Versionskontrollsystem zu Git gewechselt. Lange bevor ich anfing, hatten wir uns angewöhnt, Bibliotheken in die Versionskontrolle einzubinden. Offensichtlich funktioniert das nicht gut in Git, noch war es eine gute Idee in der anderen VC. Also haben wir eine ähnliche Auswahl getroffen. Nach der Überprüfung von Teilbäumen und Submodulen haben wir uns entschieden, keines von beiden zu verwenden. Wir haben mehrere Repositories, die als Peers geklont werden:
%Vor%Wir benutzen auch Nuget, um mit unseren Bibliotheken zu arbeiten (beachten Sie, dass wir in C und C ++ nicht .Net entwickeln). Nuget funktioniert gut genug für native Bibliotheken und wir haben keine Alternative gefunden. Der Prozess ist viel manueller, als ich möchte, aber es vermeidet eine ganze Reihe von "interessanten" Problemen, die sowohl Untermodul als auch Unterbaum plagen.
Ich hoffe, das hilft.
Tags und Links git shared-libraries nuget git-submodules git-subtree