Git und Softwareorganisation



  • Stellt euch vor ihr hättet Software A und Software B, die beide die Dll D verwenden. Das ganze soll in ein Versionskontrollsystem gepackt werden, so daß wenn man A holt auch D mitkommt (genauso für B). Wenn man Tags setzt soll dies auch für A/d oder B/D gelten. In einer zentralisierten Verwaltung wie Subversion würde man jetzt alles in ein Repository packen und gut. Wie aber mache ich das bei Git? Submodules gucke ich mir gerade an. Die scheinen aber auf den ersten Blick nicht das richtige zu sein, da die Module nur in genau einer Version drin sind. Also nicht mit Tags und passende Version holen. Hat da jeman d ne Idee?



  • Alle 3 Projekte separat versionieren, und D als 3rdParty in A und B submitten, wäre eine möglichkeit.
    An sonsten, weiterhin alle 3 Projekte separat pflegen und einfach immer mit auschecken.
    Mach dir doch einfach ein "Projects" ordner, dort hast du dann alle 3 repos.



  • Naja die Dll in A und B reinzukopieren hätte ja den Nachteil , daß sie füher oder später in beiden Versionen auseinanderläuft.
    Alles im eigenen Repository hat halt den Nachteil, daß ich selber wissen muß welche Version zu welcher paßt. Ich hatte gehofft da gibts ne Lösung, weil ich ja nicht der einzige sein kann mit dem Problem.



  • Hallo, es gibt eine Lösung von Git, jedoch ist sie noch nicht ausgereift.

    Software A = Project a
    Software B = Project b
    LibraryToolkit = Project librarytoolkit

    Um das ganze zu verwenden sagst du das librarytoolkit ein Submodule von Project a ist. Somit solltest du bei einen Update auch immer die aktuelle Version von Librarytoolkit haben.

    Wenn du am Librarytoolkit was änderst musst du natürlich dafür sorgen, das die anderen Projekte auch noch funktionieren die dieses eingebunden haben, das ist aber überall so, so du regelst das via Branches, was jedoch schnell kompliziert werden kann.

    https://git.wiki.kernel.org/index.php/GitSubmoduleTutorial



  • Ich will aber nicht immer die aktuelle, sondern die passende Version von der Dll haben.



  • Tyrdal schrieb:

    Ich will aber nicht immer die aktuelle, sondern die passende Version von der Dll haben.

    Du hast nicht immer die aktuelle. Submodules merken sich die commitete Version.

    Bsp: foo benötigt bar. Du erstellst ein bar-Submodule zu foo. Du commitest eine bestimmte Version beider Tools. Du machst siebzehn Updates bis zum nächsten stable-Release von bar. Das bar-Submodule von foo verwendet in der Zwischenzeit immer die letzt commitete Version, bis Du irgendwann mal das Submodule updatest. Dann wird die frische bar-Version verwendet.



  • Ach ja, Details dazu lassen sich etwa hier nachlesen:
    Pro Git: Submodules


Log in to reply