Source Code Management
Inhaltsverzeichnis
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:
- http://eagain.net/articles/git-for-computer-scientists/
- http://linux.yyz.us/git-howto.html
- http://www.kernel.org/pub/software/scm/git/docs/
Achtung: Dazu gibt es am Institut noch wenig Expertise!