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:

Trunk

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

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.

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.

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



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



  • Dateien zur Ignore-List hinzufügen: Rechtsklick auf betreffende Datei

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:

    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




  • Einen Kommentar eintragen und die Option „HEAD“ anklicken, es soll ja die neueste Version der Software getaggt werden:

    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 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