Christopher hat die Nachteile eines Ein-Projekt-pro-Repository-Modells sehr gut aufgezählt. Ich möchte einige der Gründe erörtern, aus denen Sie einen Ansatz mit mehreren Repositorys in Betracht ziehen könnten. In vielen Umgebungen, in denen ich gearbeitet habe, war ein Ansatz mit mehreren Repositorys eine vernünftige Lösung, aber die Entscheidung, wie viele Repositorys vorhanden sind und wo die Kürzungen vorgenommen werden müssen, war nicht immer einfach.
In meiner aktuellen Position habe ich ein gigantisches CVS-Repository mit einem einzigen Repository und einer über zehnjährigen Geschichte in eine Reihe von Git-Repositorys migriert. Seit dieser anfänglichen Entscheidung ist die Anzahl der Repositories (durch die Aktionen anderer Teams) so weit gestiegen, dass ich den Verdacht habe, dass wir mehr haben, als optimal wäre. Einige Neueinstellungen haben vorgeschlagen, die Repositories zusammenzulegen, aber ich habe mich dagegen ausgesprochen. Das Wayland-Projekt hat eine ähnliche Erfahrung. In einem Vortrag, den ich kürzlich gesehen habe, hatten sie zu einem bestimmten Zeitpunkt über 200 Git-Repositories, für die sich die Leitung entschuldigte. Wenn ich auf ihre Website schaue , sehe ich, dass sie jetzt bei 5 sind, was vernünftig erscheint. Es ist wichtig zu beachten, dass das Zusammenfügen und Aufteilen von Repositorys eine überschaubare Aufgabe ist und es in Ordnung ist, (im Rahmen der Vernunft) zu experimentieren.
Wann möchten Sie möglicherweise mehrere Repositorys?
- Ein einziges Repository wäre zu groß, um effizient zu sein.
- Ihre Repositorys sind lose gekoppelt oder entkoppelt.
- Ein Entwickler benötigt in der Regel nur einen oder einen kleinen Teil Ihrer Repositorys, um zu entwickeln.
- In der Regel möchten Sie die Repositorys unabhängig voneinander entwickeln und müssen sie nur gelegentlich synchronisieren.
- Sie möchten mehr Modularität fördern.
- Verschiedene Teams arbeiten an verschiedenen Repositories.
Die Punkte 2 und 3 sind nur dann von Bedeutung, wenn Punkt 1 zutrifft. Durch die Aufteilung unserer Repositorys habe ich die Verzögerungen für unsere externen Kollegen erheblich verringert, den Festplattenverbrauch gesenkt und den Netzwerkverkehr verbessert.
4 und 5 sind subtiler. Wenn Sie die Repos von beispielsweise einem Client und einem Server aufteilen, ist die Koordinierung von Änderungen zwischen dem Client- und dem Server-Code teurer. Dies kann insofern positiv sein, als eine entkoppelte Schnittstelle zwischen beiden gefördert wird.
Selbst mit den Nachteilen von Multi-Repository-Projekten wird auf diese Weise viel seriöse Arbeit geleistet - Wayland und Boost kommen in den Sinn. Ich glaube nicht, dass sich ein Konsens in Bezug auf Best Practices entwickelt hat, und ein gewisses Urteilsvermögen ist erforderlich. Tools für die Arbeit mit mehreren Repositorys (Git-Teilbaum, Git-Submodul und andere) werden noch entwickelt und getestet. Mein Rat ist, zu experimentieren und pragmatisch zu sein.