Source Code Management

Aus Physik
Zur Navigation springen Zur Suche springen

Was ist "Source Code Management" und warum ist es praktisch?

Für die Bearbeitung von Sourcecodes (SCM - source code management) sind Versions-Verwaltungs-Programme, vor allem wenn in Gruppen gearbeitet wird, recht praktisch.

Dabei werden die Nutzdaten in einer Art von Datenbank, dem Repository gespeichert; gearbeitet wird in einem gesondertem working area. Wenn die Änderung an der Arbeitskopie zufriedenstellend ausgefallen ist, werden die Änderungen ins Repository comitted. Projektpartner können diese Änderungen auschecken, mit ihren eigenen lokalen Änderungen mergen und wieder ins Repository committen. Das Szenario beschreibt kurz Versionsverwaltungen die nach dem Schema Copy Modify Merge arbeiten, daneben gibt es noch das traditionellere Paradigma Lock Modify Write, das aber eher in kommerziellen Implementierungen eingesetzt wird und für Teamarbeit weniger geeignet ist.

Wir unterstützen nur Subversion aktiv, bieten in diesem Bereich aber mehrere unterschiedliche Löungen an:

  • RCS (revision control system) ist ein sehr einfaches und rudimentäres System, nicht besonders für mehrere parallel arbeitende Entwickler geeignet.
  • CVS (concurrent versioning system) war über viele Jahre das vorherrschend verwendete Programm auf diesem Gebiet, wird aber vom funktional und semantisch ähnlichen Subversion abgelöst, das einige lästige Beschränkungen von CVS beseitigt.

Es gibt viele weitere Systeme, die wir nicht installiert haben: git, darcs, aegis, bitkeeper, ....

Zusätzliche Informationen findet Ihr auf Wikipedia, eine ausführliche Übersicht zu SCMs mit Diskussion verschiedener Anforderungen gibt es im Artikel Comments on Open Source Software / Free Software (OSS/FS) Software Configuration Management (SCM) Systems von David Wheeler und in Happenings in the VCS world von "Elijah".

Subversion

Das "Subversion Book" ist eine sehr übersichtliche und einfach zu lesende Einführung in die Arbeit mit Subversion. Auf fast allen unseren Rechnern ist das "Subversion Book" auch lokal in file:///usr/share/doc/subversion/book/svn-book.html installiert.

Aufbau eines Repositories

Bei der Erstellung eines eigenen Repositories muss unbedingt beachtet werden, dass die Homdirectories im AFS liegen; von einem Repository mit dem Berkeley Database backend rate ich daher dringend ab. Am einfachsten erstellt man das Repository mit

  $ svn --version            # initialisiert Konfiguration in ~/.subversion/
  $ svnadmin create --fs-type fsfs ~/.subversion_root

Wenn das Repository auch von Kollegen genutzt werden soll, können sie mit dem Programm "afs_acl_rec" die Acces Control Listen des AFS entsprechend modifizieren.

Gemeinsame Repositories für Arbeitsgruppen

Arbeitsgruppen am Institut legen ihre gemeinsamen Repositories am einfachsten in ihrem Projektverzeichnis "/proj/<AG-name>" ab, dann sind die Zugangsmöglichkeiten automatisch richtig gesetzt. Auch dabei müssen die Auswirkungen des AFS berücksichtigt werden.

Import von CVS-Archiven

Für den Import von CVS-Archiven WIRD das Programm cvs2svn installiert; man kann, wenn noch kein Subversion von Repository existiert, mit

  $ cvs2svn -s ~/.subversion_root ~/.cvsroot

konvertieren. Das Programm bricht aber bei inkonsistenten CVS-Repositories gnadenlos ab.

Externer Zugang

Neben den Möglichkeiten, die AFS ohnehin bietet, kann auch über Secure Shell auf die Repositories zugegriffen werden: verwenden sie dazu die Pfadangabe "svn+ssh://<rechnername>/afs/itp.tugraz.at/user/<name>/.subversion_root" statt "file:///afs/itp.tugraz.at/user/<name>/.subversion_root".

Alternative Möglichkeiten wie WebDAV oder ein permanent laufender Subversion-Server sind nicht vorgesehen - Anfragen zwecklos :)

Backup

Die Repositories werden mit dem nächtlichen Backup des AFS automatisch mit gesichert, ein gesondertes Backup ist nicht vorgesehen.


GNU Arch

Als Kurzanleiung für Umsteiger von CVS eignet sich der Artikel "Arch for CVS Users", eine umfassendere Einführung bietet das Handbuch "ARCH meets Hello World".

Aufbau eines Repositories

Damit die Projektpartner Lesezugriff aufs Repository erhalten, empfehle ich die Ablage des Repository in Bereich einer persönlichen Webpage, zum Bespiel im Subdirectory ~/public_html/arch.

Gemeinsame Repositories für Arbeitsgruppen

Gemeinsam genutzte Repositories sind bei Arch nicht zwingend vorgesehen und eigentlich entgegen der Philosophie, können aber mit dem selben Mitteln wie bei Subversion eingerichtet werden.

Import von CVS-Archiven

Mit dem Programm tla-cvs-sync kann Arch mit einem CVS-Repository synchronisiert werden - für Subversion gibt es tla-svn-sync.

Externer Zugang

Anonymer Lesezugriff ist über den Webserver möglich, Schreibzugriffe müssen über Secure Shell getunnelt werden.

Backup

Die Repositories werden mit dem nächtlichen Backup des AFS automatisch mit gesichert, ein gesondertes Backup ist nicht vorgesehen.


Git

Als vermutlich modernste und leistungsfähigste, aber nicht unbedingt benutzerfreundlichste Lösung zum Source Code Management steht Git zur Verfügung.

Einige Links zur Hilfe:

Achtung: Dazu gibt es am Institut noch wenig Expertise!