You are here: Foswiki>IC Web>ACOIND_SVN_HowtoUseIt (04 Apr 2019, ChristianMueller)Edit Attach

Verwendung von SVN bei ACOIND

Inhalt

Zielsetzung

SVN ist ein Version Control System und dient zur Verwaltung und Archivierung von Quellcode und Komponenten, aus denen lauffähige Software erstellt wird.

Dabei sollen folgende Ziele erreicht werden
  • Sämtliche Quellen werden auf dem SVN-Server in einem Software-Repository gesichert
  • Jede Software-Version, die auf Anlagen der GSI läuft, soll aus dem Repository wieder hergestellt werden können
  • Es wird eine vollständige Änderungshistorie erstellt
  • Die Speicherung der Daten erfolgt möglichst platzsparend

Funktion von SVN

SVN ist entwickelt (und optimiert) zur Ablage von ASCII bzw. Textdateien. Bei Änderung einer Textdatei wird nur die Änderung gespeichert.

Es können auch Binärdateien im Repository abgelegt werden. Bei Änderung einer Binärdatei wird die komplette Binärdatei gespeichert.

Mit jedem einzelnen Commit bekommt das gesamte Repository eine neue Revisionsnummer. Die Version des Repositories wird über genau diese eine Revisionsnummer identifiziert. Jede einzelne Revisionsnummer ist wieder herstellbar.

Installation

SVN ist ein Kommandozeilen-Tool, das über die Oberfläche "Tortoise SVN" bedient wird.

Die aktuelle Version kann hier herunter geladen werden

Mit Ausführen der Installationsdatei werden SVN und Toirtoise SVN in einem installiert.

Grundlagen zur Verwendung

Struktur des Repositories

Die Grundstruktur des Repositories besteht aus den Verzeichnissen trunk, tag, und branch:

225f32373c5546027fc27da1746716f5.png

Trunk

Im Trunk-Verzeichnis befindet sich für jedes Projekt der jeweils aktuelle Entwicklungsstand z. B: AQY1:

6d8af2beb0be39eb829237661bc54b20.png

Tag

Wenn ein Projekt einen definierten Entwicklungsstand erreicht hat und produktiv verwendet wird, ist es sinnvoll einen Namen (Tag) zu vergeben und den Softwarestand unter diesem Tag zu sichern. Dazu dient das Verzeichnis „tag“ im Repository.

566b0ae0d76f1236cb0ea37b6e21d844.png

Das Anlegen eines Tags führt im Repository übrigens nicht zum Kopieren des gesamten Verzeichnisinhalts, es werden lediglich Verweise hinzugefügt. Ein Tag ist somit vergleichsweise „billig“ zu haben.

Branch

Angenommen eine Anlage läuft mit der Version 1.23 und der Operator meldet einen lästigen Fehler, der schnellst möglich behoben werden soll. Die Entwicklung ist gerade mitten in der Entwicklung neuer Features und kann unmöglich die aktuelle Version auf die Anlage spielen, weil diese im momentanen Zustand ungetestet ist und möglicherweise schwerwiegende Fehler enthält.

In so einem Fall ist es am sichersten die Quellen der Version 1.23 zu bearbeiten und genau den einen gemeldeten Fehler zu beheben und eine neue Version zu erzeugen.

7891b212c83998401f07cbdf6c6ad63a.png

Tägliche Arbeit

Commit der täglichen Arbeit

  • Es sollte möglichst oft commited werden
  • Vor dem Commit das Updaten nicht vergessen. Falls mittlerweile eine Änderung eines Kollegen erfolgt ist, sollte die Software vor dem einchecken erneut übersetzt und getestet werden.
  • 1 commit pro Bugfix, 1 Commit pro feature usw. Das macht es später einfacher, Änderungen zurückzuverfolgen und von anderen nachzuvollziehen.
  • Aussagekräftigen Kommentar in Commit-Message vergeben
  • NICHT alles kritiklos einchecken!!!
  • Dateien, die nicht eingecheckt werden sollen, über Rechtsklick: Add to ignore zur Ignore-Liste hinzufügen

Vorgehen beim Committen

  • Rechtsklick auf gewünschtes Verzeichnis:, dann SVN Commit
    e81348304e982409b0bca484f0523e73.png


  • Aussagekräftigen Kommentar schreiben. Dateien, die nicht eingescheckt werden sollen, abwählen und ggf. zur Ignore-List hinzufügen
    08ad77af91dfc40bf2ad7fa6cfeb4d78.png


  • Dateien zur Ignore-List hinzufügen: Rechtsklick auf betreffende Datei
    80c570306c167b18882520226b930b6a.png

Tag erstellen

Wann sollte ein Tag vergeben werden?
  • Wenn eine Version auf eine produktive Maschine aufgespielt wird
  • Wenn eine Version einen gewissen „runden“ Stand erreicht hat, der produktiv einsetzbar ist.

Vorgehen zum Erstellen eines Tags:

  • Alle Dateien, die noch nicht commited sind, comitten!
  • Im Arbeitsverzeichnis auf der Platte das Wurzelverzeichnis des Projekts rechtsklicken:
    36169bef4e215c9bd4443dd5768cdeb6.png
    und TortoiseSVN ->“branch/tag...“ auswählen

  • Für den Eintrag „To Path““ auf den Auswahlbutton „...“ klicken und zu einem passenden Verzeichnis unter tag navigieren. Oben in der URL dann die gewünschte neue Versionsnummer eintragen
    4b80cb579d940c620e263e1bb7ae4331.png



  • Einen Kommentar eintragen und die Option „HEAD“ anklicken, es soll ja die neueste Version der Software getaggt werden:
    16410aeba62d997ebf0705cfeb6f643c.png
    Danach sollte im Repository die Kopie des aktuellen Standes im tag-Zweig des Repositories gespeichert sein
  • Das Verzeichnis auf dem Arbeitsplatzrechner ist jetzt immer noch mit dem Verzeichnis aus dem trunk-Zweig des Repositories verbunden. Es kann jetzt direkt weiter entwickelt werden., da die Version im Repository gesichert ist.
Topic attachments
I Attachment Action Size Date Who Comment
08ad77af91dfc40bf2ad7fa6cfeb4d78.pngpng 08ad77af91dfc40bf2ad7fa6cfeb4d78.png manage 154 K 21 Mar 2019 - 14:27 ChristianMueller Auto-attached by ImagePlugin
16410aeba62d997ebf0705cfeb6f643c.pngpng 16410aeba62d997ebf0705cfeb6f643c.png manage 28 K 21 Mar 2019 - 14:30 ChristianMueller Auto-attached by ImagePlugin
225f32373c5546027fc27da1746716f5.pngpng 225f32373c5546027fc27da1746716f5.png manage 3 K 21 Mar 2019 - 14:27 ChristianMueller Auto-attached by ImagePlugin
36169bef4e215c9bd4443dd5768cdeb6.pngpng 36169bef4e215c9bd4443dd5768cdeb6.png manage 28 K 21 Mar 2019 - 14:30 ChristianMueller Auto-attached by ImagePlugin
4b80cb579d940c620e263e1bb7ae4331.pngpng 4b80cb579d940c620e263e1bb7ae4331.png manage 110 K 21 Mar 2019 - 14:30 ChristianMueller Auto-attached by ImagePlugin
566b0ae0d76f1236cb0ea37b6e21d844.pngpng 566b0ae0d76f1236cb0ea37b6e21d844.png manage 171 K 21 Mar 2019 - 14:27 ChristianMueller Auto-attached by ImagePlugin
6d8af2beb0be39eb829237661bc54b20.pngpng 6d8af2beb0be39eb829237661bc54b20.png manage 14 K 21 Mar 2019 - 14:27 ChristianMueller Auto-attached by ImagePlugin
7891b212c83998401f07cbdf6c6ad63a.pngpng 7891b212c83998401f07cbdf6c6ad63a.png manage 27 K 21 Mar 2019 - 14:27 ChristianMueller Auto-attached by ImagePlugin
80c570306c167b18882520226b930b6a.pngpng 80c570306c167b18882520226b930b6a.png manage 127 K 21 Mar 2019 - 14:27 ChristianMueller Auto-attached by ImagePlugin
e81348304e982409b0bca484f0523e73.pngpng e81348304e982409b0bca484f0523e73.png manage 123 K 21 Mar 2019 - 14:27 ChristianMueller Auto-attached by ImagePlugin
Topic revision: r2 - 04 Apr 2019, ChristianMueller
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback