Quellcodeverwaltung mit TortoiseSVN

    • Allgemein

    Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Christoph1972.

      Quellcodeverwaltung mit TortoiseSVN

      Quellcodeverwaltung mit TortoiseSVN ist ganz einfach.
      Andere Quellcodeverwaltungssysteme gehen ebenfalls einfach, lediglich der TFS (Team Foundation Server) von Microsoft ist bei der Installation eher eine Wissenschaft.
      Was ist Quellcodeverwaltung?
      Quellcodeverwaltung speichert alle Änderungen zu einem vorherigen Zustand bzw. zu einem Initialzustand, so dass jede dieser Änderungen schrittweise abgerufen und visualisiert werden kann.
      Dadurch ist der Speicherverbrauch minimal.
      So lassen sich die Unterschiede einer Datei von Version 123 (z.B. vorgestern) zu Version 89 (z.B. vor 2 Wochen) anzeigen, während wir mittlerweile bei Version 135 sind.
      Wird ein Release erstellt, sollte diese Version in der Quellcodeverwaltung "ge-tagt" werden, so dass immer klar ist, welcher Code zur Version 1.2.3.4 gehört.
      Soll mal etwas ausprobiert werden, was nicht unbedingt in die nächste Release gehört, aber elementarer Bestandteil des Projekts ist, wird ein "Branch" angelegt. In diesem Zweig kann dann nach Bedarf weiter entwickelt und gespeichert werden.
      Wenn klar ist, was davon für das Produkt benötigt wird, werden die betreffenden Quellen vom Branch in den Hauptzweig zurückgeführt. Anm.: Dies tue ich selber im Studio und nicht in der Quellcodeverwaltung.

      Wie auch immer.
      Die Quellcodeverwaltung ist ein wichtiges und mächtiges Tool, um Quellen vor der Vernichtung zu schützen und Versionen als solche zu bewahren.

      Folgende Bestandteile müssen vorhanden sein bzw. installiert werden:
      1. Eine externe Festplatte, auf der die Quellen gespeichert werden sollen, hier kann auch ein Server eingerichtet werden, was für den Zugriff von mehreren Entwickler-PCs aus notwendig ist.
        Sicher geht auch die Festplatte im PC selbst, aber raucht die einmal ab, ist alles umsonst.
      2. Die Quellcodeverwaltung als solche, das ist TortoiseSVN. Sie handelt die Quellcode-Datenbank und die zusätzlichen Einträge im Projekt sowie die zusätzlichen Menüpunkte und Icons im Explorer.
        Bei der Installation muss das Laufwerk, auf dem die Quellen gespeichert werden sollen, ausgewählt werden.
        Mit diesem Tool alleine kann man bereits arbeiten, nur ist das etwas mühselig. Deswegen ist unverzichtbar
      3. Das Plugin für das Visual Studio: VisualSVN, das uns die Arbeit mit der Quellcodeverwaltung abnimmt.
      4. Wird SVN von einem Server aus installiert (das kommt mit, wenn Server-Festplatten ins Netzwerk gestellt werden), kann dort als Administrator die Repository-Verwaltung durchgeführt werden.
        Repository auf dem Server anlegen, auf dem Arbeitsrechner das (leere) Repository auschecken, Projekte hinzufügen und einchecken.
      Sind Quellcodeverwaltung und Plugin installiert, kann jedes Projekt aus dem Studio der Quellcodeverwaltung hinzugefügt werden:

      Nachdem einige Fragen zur Quellen-Herkunft und dem Ziel-Repository (Gruppe von Quelldateien, die als eine gemeinsame Source-Gruppe behandelt werden, z.B. mehrere Tools-Projekte) und dessen Verzeichnis vorgegeben wurde, wird das Repository angelegt und das Projekt diesem hinzugefügt:
      ==>
      Ist das geschehen, werden die entsprechenden Icons und im Explorer und im Studio angezeigt:

      Nun kann das Projekt "hochgeladen" werden.
      Es werden alle betroffenen Dateien angezeigt. Nachdem ein signifikanter Kommentar vorgegeben wurde, wird das Projekt übergeben.

      Es wird noch einmal die Liste der gespeicherten Dateien angezeigt und die Farbe der Icins wechselt zu grün:

      Jetzt kann Feierabend gemacht werden. ;)
      ======
      Wird nun das Projekt geändert, werden die Änderungen sofort in der Farbe der Icons angezeigt:

      Wird dann im Commit-Fenster auf eine geänderte Datei doppelgeklickt, werden im eingestellten Vergleichstool (hier: WinMerge) beide Datei-Versionen angezeigt und die Änderungen hervorgehoben:

      ======
      Nun wollen wir das Projekt auschecken.
      Nichts leichter als das:
      Wir legen ein neues Verzeichnis an und klicken im Explorer mit der rechten Maustaste da rein:

      Nach der Auswahl des Repositories wird die komplette Projektmappe in das Verzeichnis geladen und es kann weiter gearbeitet werden.
      ======
      Wenn gleichzeitig an mehreren PCs dieselben Quellen bearbeitet werden, werden wir beim Einchecken darauf hingewiesen, dass der Quellenstand nicht aktuell iest, wir müssen erst die aktuelle Version auschecken.
      Haben wir zufällig dieselbe Datei an 2 Orten bearbeitet, kommt es zu einem Konflikt. Ist dieser trivial, werden die beiden Versionen vom SVN ge-merged.
      Ist er es nicht, werden beide Versionen geladen und eine Differenzversion erzeugt, die Farbe der Icons ändert sich zu Rot.
      ==> ==>

      Diese Differenzversion muss manuell bearbeitet werden. Außerdem müssen die Quelldateien im Explorer beräumt werden, die Dateien, die SVN zusätzlich erzeugt hat, müssen zunächst im Explorer gelöscht werden:

      Ist das geschehen, kann das Projekt eingecheckt und Feierabend gemacht werden.
      ======
      Noch ein paar Tipps:
      • Checkt nur Versionen ein, die compilierbar sind. Nichts ist schrecklicher, als wenn ein Kollege mal schnell seine letzten Edits hochschiebt bevor er in Urlaub fährt und Ihr müsst daran weiterarbeiten, aber sie compilieren nicht.
        Üblicherweise arbeitet der Kollege an einem Teil, in den Ihr nicht eingearbeitet seid und Ihr habt einen riesen Aufwand, das ganze zum Compilieren, geschweige zum Laufen zu bekommen.
      • Schreibt prägnante Kommentare zu den Änderungen.
        Wenn Ihr die Versionen vergleicht, bekommt Ihr alle Kommentare angezeigt, sie dienen als Orientierung, was wann geschehen ist.
      • Wenn Ihr mehrere Baustellen im Projekt gleichzeitig bearbeitet, checkt diese einzeln ein.
        Das erleichtert die Rückverfolgung und die Zuordnung der Kommentare.
      Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
      Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
      Ein guter .NET-Snippetkonverter (der ist verfügbar).
      Programmierfragen über PN / Konversation werden ignoriert!
      Man sollte evtl. erwähnen, dass Visual Studio von Haus aus bereits Git mitbringt. Wenn nichts wirklich FÜR Subversion spricht, dann sollte man lieber direkt die Git-Unterstützung von VS nutzen
      @Quadsoft Jou. Mach einfach ein GIT-Tutorial. ;)
      Welches System verwendet wird, ist letzten Endes fast egal. Wenn das System in der Firma zum Einsatz kommt, wird es eben genommen.
      Wie gesagt, es war auf einem Festplattenserver vorinstalliert.
      Mir ging es nicht darum, für SVN Werbung zu machen, sondern die grundsätzlichen Arbeitsabläufe zur Sicherung von Quellcode aufzuzeigen, da dies im Forum von Interesse war.
      Wenn hier mehrere Quellcodeverwaltungssysteme detailliert beschrieben werden, können sich User nach dem Lesen aller selbst entscheiden, welches sie nehmen.
      Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
      Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
      Ein guter .NET-Snippetkonverter (der ist verfügbar).
      Programmierfragen über PN / Konversation werden ignoriert!
      @RodFromGermany @Quadsoft
      Ein Vergleich wäre ebenfalls interessant, durch meinen neuen Laptop hab ich die Qual der Wahl und Bitbucket erlaubt mir auch beides, nur was ich nehmen soll weiß ich nicht. Wäre cool wenn sich da irgendjemand findet der sich daran mal setzt :)
      Software being "Done" is like lawn being "Mowed". (Jim Benson)
      @KidRick
      Eigentlich definitiv Git, da dieses durch die feste Integration in VS seitens Microsoft deutlich einfacher zu nutzen, einfacher einzurichten und auch generell besser integriert ist.
      Jo - wie's aussieht komm ich nu endlich auch klar mit SourceCodeverwaltung.
      Ich verwende das von Rod angegebene TortoiseSVN, aber als VS-Plugin haben wir AnkhSVN in Betrieb, das ist kostenlos.
      Hat auch brauchbare Hilfe-Sites, leider nur englisch.
      Auf deutsch, zumindest zu Tortoise fund ich dieses: TortoiseTut
      Hi,
      muss mich nochmal zu Wort melden wegen Tortoise und AnkH.
      Also:
      bei Tortoise liegt ja das Original im Repo Ordner und lokal wird mit einer Arbeitskopie gearbeitet, die dann die aktualisierungen ins Repo lädt.
      Soweit hab ich alles verstanden und es funktioniert auch bestens (sogar über OneDrive als Repo-Speicher)
      Jetzt habe ich AnkH installiert und öffne nun die lokale Arbeitskopie meines Projektes (soweit, sogut).
      Nun ist es so, dass ich im VS ein neues Fenster habe "Pending Changes". dort werden alle Änderungen meines Projektes erfasst und ich kann sie commiten. (auch OK)
      Was ich aber nicht verstehe ist: AnkH bezieht sich IMMER auf das Repo, welches auf meinem OneDrive liegt und NICHT auf die lokale Arbeitskopie.
      D.H. wenn ich in AnkH auf Commit drücke, schiebt er die Änderungen direkt ins Repo. Lokal sind die Änderungen aber ja nur lokal gespeichert und Tortoise zeigt dies durch ein rotes Ausrufezeichen im Ordner.
      Frage:
      Muss ich nun also damit Leben, das ich immer rote Ausrufezeichen im Ordner habe, oder lasse ich AnkH weg und aktualisiere im lokalen Ordner über rechte Maustaste das Projekt??
      Oder kann ich AnkH irgendwei sagen das er den lokalen Ordner nutzen soll??
      Ich verstehs nicht...
      "Hier könnte Ihre Werbung stehen..."
      hmm.
      Also ich speichere mein Projekt - bzw. wenn ich einen erfolgreichen Testlauf gemacht habe, ist es ja gespeichert. Natürlich im Ordner, der von Tortoise als "Arbeitskopie" angesehen wird.
      Und wenn ich dann per Ankh committe, ist meine aktuelle Version im Repo.
      Das PendingChanges-Fenster benutze ich garnet, ich mach immer "ProjektmappenExplorer-Projekt-ContextMenü-SolutionFile-Commit Solution", und committed ist.
      Allenfalls bei mehreren Projekten in der Solution wird gefragt, ob die anderen Projekte mit-committed werden sollen, was ich bislang immer bejahe.
      EDIT:
      Problem behoben: Hast Du denn dann mal in den lokalen Arbeitsordner geschaut? Sind da auch rote Ausrufezeichen?

      EDIT2:
      Hi,
      nachdem ich mich nun einige Tage mit Tortoise und AnkH beschäftigt habe, finde ich diese Lösung (gerade für Quellcodeverwaltunganfänger) ziemlich cool.
      Ergänzend zu @RodFromGermany ´s Beitrag wollte ich aus Anfängersicht nochmal die einzelnen Schritte skizzieren:
      1. Tortoise installieren, einen Repo Ordner anlegen und darin das Projektarchiv erstellen, dann noch Quellordner erstellen drücken!! (darin seht ihr auch den Pfad zum Repo, diesen einfach dort raus kopieren und irgendwo zwischenspeichern -> das wars auch schon mit Tortoise!
      1.1 ich habe das Repo in meiner Cloud angelegt, so kann ich von mehreren Rechnern aus darauf zugreifen.
      2. AnkH installieren, VS schließen und neu öffnen -> nur für alle Fälle
      2.1 Unter Extras-Optionen-Quellcodeverwaltung -> AnkH auswählen, dann stehen auch die zusätzlichen Fenster zur Verfügung
      3. Projekt, welches in die Quellcodeverwaltung soll, öffnen
      4. rechte Maustaste auf das Projekt im Projektexplorer (oder direkt auf die Projektmappe), dann im Kontextmenü "Add Solution to Subversion" drücken und dem Assistenten folgen
      4.1 ich hab noch "Add trunk folder for Projekt" angeklickt
      5. projekt ist jetzt im RepoOrdner
      6. entweder mit Rechtsklick auf das Projekt im Projektexplorer -> Commit Changes oder über das neue Fenster "Pending Changes" die Commits hoch laden
      6.1 Bitte nehmt den Hinweis von Rod Ernst und schreibt beim Commit wirklich einen aussagekräftigen Kommentar rein, denn wenn das Projekt oft geändert wird, findet man sich so besser zurecht, falls mal ein älterer Stand zurück geholt werden muss!
      7. siehe da, keine roten Ausrufezeichen mehr

      Um ein Projekt auf einem anderen Rechner zu bearbeiten braucht es auch nur ganz wenige Schritte (Vorraussetzung ist ein installiertes VS, Tortoise und AnkH, auf dem anderen Rechner braucht ihr kein Projektarchiv zu erstellen, das gibt es ja schon :) )
      1. ist alles installiert, öffnen wir Visual Studio
      2. unter Datei-Subversion-Open from Subversion drücken
      3. das Repo öffnet sich (eventuell vorher den Pfad rein kopieren)
      4. Projekt aus dem Repo suchen und die .sln Datei anklicken
      5. dem Assitenten folgen, OK drücken, fertig.

      Nun habt ihr eine Arbeitskopie auf dem Rechner und könnt am gleichen Projekt weiter arbeiten!
      "Hier könnte Ihre Werbung stehen..."

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MichaHo“ ()

      Ich verwende auch TortoiseSVN mit AnkhSVN, funktioniert super! Das ganze teste ich gerade mit einem Server (VisualSVN(kostenlos)) wie von Tortoise empfholen. Die Lösung mit dem VisualSVN Server finde ich genial, leider ist das Backup und Restore unhandlich.

      Hast Du denn dann mal in den lokalen Arbeitsordner geschaut? Sind da auch rote Ausrufezeichen?

      Das habe ich auch schon mal beobachtet. Ich wollte das rekonstruieren, dann war es verschwunden. Kann es sein das es lediglich ein aktualisierungs Problem ist? Als ich das hatte, wollte ich noch mal commiten, da kam die Info keine changes.
      Gruß
      Christoph