Facebook
Twitter
Google+
Kommentare
9

Externals mit Git … eure Konzepte.

Wie ihr ja gemerkt habt, versuche ich gerade ein wenig an einem Open-Source-Projekt zu basteln und als jemand, der gerne mit „neuen“ Technologien rumspielt, habe ich natürlich ein Git-Repository auf GitHub.com aufgesetzt. Wie das als Neuling so ist, steht man oft vor den einfachsten Problemen, wie der Ochs vorm Berg. Glücklicherweise gibt es aber Leute, die haben einen Blog, auf dem man mal nach Hilfe fragen kann. Das will ich jetzt auch tun.

Fangen wir an mit der aktuellen Situation. Das Tool an dem ich arbeite heißt LiveTest und besteht aus einem Kern und einigen Bibliotheken, die es nutzt. Genau diese Libraries sind aber das Problem. Nehmen wir uns mal eine x-beliebige Bibliothek. Würde sie nur aus Sourcen bestehen, wäre es kein Problem. Da man aber noch Tests und vielleicht andere Helferlein irgendwo hinpacken muss, kommt es vor, dass man eine Verzeichnisstruktur wie folgt hat:

/src
/bin
/test

Eine solche Struktur war in SVN-Zeiten gang und gebe.

Soweit ich Git jetzt verstanden habe, kann man nur komplette Repositories in sein Projekt als Submodule reinhängen. Falls ich also diese Bibliothek nutzen will, habe ich bin und test auch in meinen Sourcen verankert. Irgendwie doof, da ich das wirklich nicht brauchen kann. Jetzt würde ich gerne mal wissen, wie ihr oder wie man allgemein mit diesem „Problem“ umgeht. Alle Lösungen, die mir im Moment einfallen, machen irgendwie keinen Sinn. Also schon mal Danke für eure Hilfe.

Ach ja, ich werde die restliche Woche nicht bloggen, da ich in Paris auf der Symfony Live 2011 bin. Von dort werde ich aber bestimmt einige schöne Geschichten mitbringen.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

9 Comments

  1. Benutze normale Submodules, zusammen mit einem Build-File. Hab das wegen Cruise-Control sowieso.

    Alternativ kann man wohl auch mit Subtree-Merge Verzeichnisse „einhängen“. Damit habe ich mich aber nicht weiter beschäftigt.

    Reply
  2. Was ich gelesen habe ist die Subtree-Merge Methode tatsächlich am ehesten für das einbinden von Unterverzeichnissen geeignet in Git.

    Hat das mit dem .gitignore bei submodules jemand getestet? Das scheint mir wenig Sinn zu machen, da submodule als Einheit commited werden.

    Ich habe in dem Zusammenhang aber derzeit bei einem Projekt mit noch einem größeren Problem zu kämpfen gehabt, nämlich das einbinden von Bibliotheken, die nicht via git verfügbar sind.
    Habe mir dafür eine eigene kleine Bibliothek geschrieben um das Problem möglichst Arbeitsarm in Zukunft lösen zu können.
    https://github.com/Flyingmana/pere

    Die ließe sich für git auch dahingehend erweitern, dass nur ein bestimmtes Unterverzeichnis am Ziel landet. Ein Beispiel dafür gibt es auch schon bei dem zip fetcher.

    Reply
  3. Der einfachste weg ist tatsächlich „submodules“

    das sieht dann in etwa wie folgt aus:

    $ git submodule add git://github.com/digitalkaoz/ProjectUtilitiesBundle.git src/rs/ProjectUtilitiesBundle
    $ git submodule init

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen