Derzeit verfügt mein Unternehmen über eine Visual Studio-Lösung in einem SVN-Repository, das wie folgt organisiert ist:
SolutionFolder (~3.5 GB)
|-> SolutionName.sln
|-> .. Some source code folders... (~250 MB)
|-> ThirdParty (~3 GB)
|-> Tools
| -> Tool1
| -> Tool2
Tool1 und Tool2 werden unabhängig voneinander erstellt (haben ihre eigenen Lösungen), produzieren jedoch ausführbare Dateien, die im Haupt-Build verwendet werden. Der ThirdParty-Ordner enthält alle Abhängigkeiten für das Projekt, einschließlich einiger vorkompilierter LIB-Dateien mit mehr als 100 MB und großer Bibliotheken wie boost.
Es ist praktisch, alles in einem SVN-Repo zu haben, damit (1) der Entwickler nur einmal auschecken muss und (2) wir nicht nachverfolgen müssen, welche Versionen von Abhängigkeiten für jede Version des Builds benötigt werden. Auf der anderen Seite dauert es eine Weile, um dieses Repo zu überprüfen.
Was wäre der beste Weg, um diese Projektstruktur auf git umzustellen? Vermutlich ist es am besten, ThirdParty und möglicherweise Tools vom Haupt-Repo auszuschließen, aber wir möchten, dass ThirdParty in einem Schritt einfach heruntergeladen werden kann, und wir möchten, dass es versioniert wird (und Versionsinkongruenzen zwischen dem Haupt-Repo und ThirdParty / Tools wären schlecht).
An diesem Punkt bin ich nicht daran interessiert, die Geschichte zu bewahren, sondern nur herauszufinden, wie man ein solches Projekt organisiert.