Tortoise-SVN und externals



  • Hi,

    Tortoise SVN ist mir nicht fremd, aber selbst habe ich noch keine Repositories eingerichtet. Genau das wollte ich nun mal nachholen. Also habe ich die entsprechende Doku gelesen und folgenden Thread hier im Forum angeschaut:

    http://c-plusplus.net/forum/viewtopic-var-t-is-221527-and-highlight-is-svn+external.html

    Ich bin soweit auch gut zurechtgekommen und habe direkt mal meine Projekte in diverse lokale Repositories gepackt. Auch "spezielle" Dinge wie etwa statische Libraries über Externals (svn:externals) laufen rund.

    Warum nun dieser Thread? Nun, ich bin mir nicht ganz sicher, ob die von mir gewählte Vorgehensweise tatsächlich optimal ist. Darum würde ich hier gerne mal mein bisheriges Vorgehen schildern und dann um mögliche Verbesserungsvorschläge bitten. (Wie man sieht, hat mir der oben verlinkte Thread nicht geholfen. Vielleicht bin ich auch einfach nur blind).

    **
    Generelle Aufteilung:
    **

    C:\Projekte\ <- Hier liegen meine Projekte
    D:\SVNRepositories\ <- Hier liegen meine Repositories

    **
    Neues (unabhängiges) Projekt hinzufügen:
    **

    D:\SVNRepositories\TestProjekt\
    -> "Create Repository here".
    
    C:\Projekte\TestProjekt\
    -> "Import". Dabei file:\\\D:\SVNRepositories\TestProjekt angeben.
    -> "Checkout".
    
    C:\Projekte\Projekt1\trunk\Projekt1
    -> Hier hab ich nun ein Projekt angelegt. Sourcen kommen in separaten Folder namens "source".
    -> "Add" und "Commit".
    

    Ist das soweit in Ordnung, oder hab ich was mit dem trunk-Folder nicht richtig verstanden?

    Nun zu einer etwas aufwendigeren Struktur. Ich habe beispielsweise ein Projekt (statische Library), welches Code enthält, den ich in mehreren Projekten benutzen möchte. Bisher habe ich folgendes gemacht.

    [b]TollerBasiscode[/b]    (Das ist die statische Library)
    [b]TolleAnwendung[/b]     (Ein beliebiges Projekt. Soll "TollerBasiscode" enthalten)
    [b]TollerEditor[/b]       (Ein beliebiges Projekt. Soll "TollerBasiscode" enthalten)
    

    Nun habe ich auf die oben beschriebene Art und Weise 3 neue Projekte angelegt und versioniert. Diese habe ich nur zu Testzwecken mit dummy-Code versehen.
    Als nächstes habe ich beispielsweise beim Projekt "TolleAnwendung" über die Ordnereigenschaften den SVN-Reiter gewählt und ein "svn:externals" angelegt, welches auf "TollerBasiscode" verweist. Das Gleiche nochmal für "TollerEditor".
    In beiden Solutions habe ich dann eben die externe Version von "TollerBasiscode" als vorhandenes Projekt hinzugefügt.

    Das Ganze hat prima geklappt und ich kann in den Projekten "TolleAnwendung" und "TollerEditor" den Code von "TollerBasiscode" verwenden und ändern. Änderungen an "TollerBasiscode" werden beim Commit ausgegraut angezeigt und ich kann sie dann separat commiten. Ein "Update" der anderen Projekte holt sich dann ganz brav den aktualisierten Code. Ich kann also aus jedem Projekt heraus den Basis-Code ändern, ganz wie ich es mir gewünscht habe.

    Und jetzt kommt das große Aber: Meine Verzeichnis-Struktur schaut nun folgendermaßen aus (am Beispiel von "TolleAnwendung")

    C:\Projekte
      -> TolleAnwendung
         -> trunk
            -> TolleAnwendung
               -> source
               -> TolleAnwendung.sln
            -> TollerBasiscode
               -> trunk
                  -> TollerBasiscode
                     -> source
                     -> TollerBasiscode.sln
    

    Lange Rede, kurzer Sinn: Es funktioniert, schaut mir aber nach ein bisschen zu viel "getrunke" und "gesubfoldere ;)" aus. Ist das die Struktur, die man wählen sollte, oder ist das völlig daneben?

    Für eine Antwort wäre ich Dankbar.

    Gruß,
    Machbar



  • Hallo,

    nach drei Tagen mal ein ganz dezentes *push* 🙂

    Es gibt doch sicherlich eine Menge Leute, die mit Tortoise arbeiten.

    Gruß,
    Machbar


Anmelden zum Antworten