Ich überlege gerade, ob und wie ich von svn auf git umsteigen soll.
Ich habe derzeit eine mehrschichtige Reihe von Projekten in svn, die so geschichtet sind, dass D C verwendet, die B verwendet, die A verwendet. Tatsächlich bereitgestellte Projekte wie X, Y, Z verwenden eine der gemeinsamen Bibliotheken A-D. Ziel ist es, dass zukünftige Projekte und andere Teams die Basisbibliotheken (A-D) gemeinsam nutzen und eine bessere Kontrolle über die Verzweigungen ermöglichen.
Wenn wir in svn anderen Teams erlauben wollen, die Bibliothek C zu benutzen, ohne sich mit X,Y,Z zu befassen, dann ist es ganz einfach, sie checken einfach den C-Teil des svn-Baums aus, und wenn das dazu führt, dass sie B patchen wollen, dann dito. Sie fassen X,Y,Z nie an, selbst wenn sie in der gleichen aktuellen Repo sind. Es ist nicht so offensichtlich, was mit Git passiert.
Wenn ich etwas mit Git einrichten möchte, wie würden Sie vorschlagen, dass ich es einrichte und was sind die Vor-/Nachteile mit Ihrem vorgeschlagenen Setup.
Die von mir gesuchten Merkmale sind:
- Einfaches Tagging (wenn möglich), so dass der Zustand der gesamten Codebasis leicht markiert werden kann (einfach mit einem gemeinsamen svn Root oder einem einzigen git Repo)
- Einfache Integration/Wiederverwendung der gemeinsamen Bibliotheken A-D für andere
- Einfach, damit sie uns vorgeschlagene Korrekturen/Patches zurückgeben, die wir entweder annehmen oder ignorieren können (eines der wichtigsten Dinge, die ich mir von Git wünsche).
- Teams sollen über effektive Privateigentumsfunktionen für gemeinsam genutzte Bibliotheken verfügen (damit sie diese markieren und in ihrem eigenen Zeitrahmen korrigieren können)
Git scheint zu bieten, was ich will, ich bin nur nicht sicher, wie man mit der einzelnen vs mehrere Repos Problem zu behandeln.