Check In – Check Out

Einfache Skripte mit Versionskontrolle verwalten

01.05.2006
Das Revision Control System (RCS) verwaltet Dateien, die häufigen Änderungen unterworfen sind. Es erleichtert Ihnen die Kontrolle über Ihre Schreib- und Programmierprojekte durch automatisierte Versionsnummern, Logfiles und Textvergleiche.

Wenn Sie viel und gern mit Ihrem freien Betriebssystem arbeiten, sammeln sich schnell zahlreiche Skripte an, die tagtägliche Aufgaben routiniert erledigen: Vom Perl-Schnipsel, das allmorgentlich den neuesten Online-Comic aus dem Netz zieht, bis hin zu ein paar Shell-Zeilen [1], die auf die Sekunde genau eine Sicherungskopie der Daten erstellen.

Damit Sie den Überblick im Text-Dschungel der selbst geschriebenen Tools behalten, bietet sich ein Versionsmanagement an. Das bedeutet für Sie nicht zwangsläufig den Einstieg in die ebenso bekannten wie komplexen Programme CVS [2] oder Subversion [3]. Etwas abseits der ausgetretenen Pfade erledigt der Oldtimer RCS die Aufgabe genauso gewissenhaft und unkompliziert.

Falls das Revision Control System nicht Teil der von Ihnen genutzten Distribution ist, erhalten Sie es von der GNU-Projektseite [4] im Internet oder direkt von dessen offizieller Homepage [5]. Hinweise zur Installation aus dem Quelltext [6], auf die der Artikel aus Platzgründen nicht eingeht, finden Sie in den Dateien INSTALL und INSTALL.RCS im entpackten Tarball rcs-5.7.tar.Z.

Vorbereitung

Wie sieht dieses Versionsmanagement praktisch aus? Im Grunde gleicht die Arbeit mit dem RCS einem Flughafen-Terminal: Auf dem Weg zu Ihrer Gangway müssen Sie sich ein- und auschecken. Auf ähnliche Weise funktioniert auch das Revision Control System in Bezug auf Dateien. Ein ausführlicher Artikel zu den Grundlagen des Versionsmanagements im Schwerpunkt dieser Ausgabe erläutert die Details.

Nehmen wir an, Sie möchten die selbst geschriebenen Skripte im Verzeichnis ~/bin verwalten, dann erstellen Sie zunächst mit dem Befehl mkdir ~/bin/RCS das RCS-Arbeitsverzeichnis. In dieses sogenannte Repository (dt. Aufbewahrungsort) legt RCS die Revisionsdatei, die den Namen des zu verwaltenden Files trägt, plus eine Endung mit der Zeichenfolge ,v.

Es handelt sich dabei um das Original-File, das – mit einigen zusätzlichen Angaben versehen – von jetzt an immer im RCS-Verzeichnis bleibt. Nehmen Sie Änderungen an der Datei vor oder brauchen Sie eine Version zum Arbeiten, dann tun Sie dies immer mit einer Kopie.

Im nächsten Schritt schreiben Sie ein Beispiel-Skript, das es zu kontrollieren gilt, und mit dem Sie nach Herzenslust experimentieren, ohne Ihren Datenbestand zu gefährden. Um auf der Kommandozeile zu bleiben, nehmen Sie dafür einfach den Befehl Cat. Damit erstellen Sie das Skript in einem sogenannten Here-Dokument.

[akneib]~ > cat > ~/bin/wel↩t.sh <<__EOF__#!/bin/shecho "Hallo Welt!"__EOF__

Ein- und Auschecken

Damit sich das Revision Control System der Beispieldatei annimmt, übergeben Sie sie an das Programm. Dies passiert mit dem Befehl ci (check in). Nach der Eingabe des Kommandos fordert Sie das Versionsmanagement auf, die Datei zu beschreiben oder eine Arbeitsnotiz zu verfassen. Die Beschreibung beenden Sie mit einem Punkt in einer alleinstehenden Zeile. Das Einchecken ist nun abgeschlossen und das RCS quittiert Ihre Notiz mit einem Hinweis auf die Version 1.1, die es dem Beispiel-Skript zuteilt:

[akneib]~/bin > ci welt.sh
RCS/welt.sh,v  <--  welt.sh
enter description, terminated wi↩
th single '.' or end of file:
NOTE: This is NOT the log messag↩
e!
>> Beschreibung zur Datei
>> .
initial revision: 1.1
done

Wie Ihnen der Befehl ls ~/bin verrät, ist die Datei welt.sh jetzt aus dem Verzeichnis verschwunden. Sie liegt nun in umgewandelter Form im Pfad ~/bin/RCS/welt.sh,v als Revisionsdatei vor (Listing 1).

Listing 1

head    1.1;
access;
symbols;
locks; strict;
comment @# @;
1.1
date    2006.02.01.14.16.10;    author akneib;  state Exp;
branches;
next    ;
desc
@Beschreibung zur Datei
@
1.1
log
@Initial revision
@
text
@#!/bin/sh
echo "Hallo Welt!"
@

Dieses Verhalten ist nicht in jedem Fall erwünscht, da nun das Skript aus dem Pfad entfernt wurde und nicht mehr funktioniert. Entweder checken Sie die Datei also einfach wieder aus, oder verwenden bei Check in die Option -u (unlocked). Der Befehl ci -u welt.sh bewirkt, dass direkt nach dem Einchecken eine nicht editierbare Kopie im Verzeichnis ~/bin landet.

Wollen Sie den Kommentar nicht immer interaktiv angeben, so setzen Sie ihn einfach in Anführungszeichen direkt an die Option -m beim Einchecken der Datei. Der Befehl co -u -m"<§§I>Beschreibung<§§I>" welt.sh checkt also die Datei ein, fügt automatisch den Kommentar hinzu und checkt gleicht eine nur lesbare Kopie wieder aus.

Durch den Parameter -u steht die Datei nicht mehr beim RCS im Lock, dass heißt, sie ist nicht mehr gesperrt, falls mehrere Benutzer an einer Datei arbeiten. Ein Versionskontrollsystem erlaubt nämlich nicht nur das Rückverfolgen von Änderungen an einer Datei, es stellt auch sicher, dass sich die Modifikationen von zwei Benutzern nicht ins Gehege kommen.

Möchten Sie das Skript im Editor öffnen, um etwas zu ändern, checken Sie es mit der Option -l (locked) aus und sperren es so vor dem Zugriff durch weitere User, die eventuell Zugriff auf das File haben. Dies erreichen Sie mit dem folgenden Befehl:

[akneib]~/bin > co -l welt.sh
RCS/welt.sh,v  -->  welt.sh
revision 1.1 (locked)
done

In der Tat ist die Datei welt.sh jetzt ausschließlich für Sie beschreibbar, wie der Befehl ls -l welt.sh Ihnen zeigt.

Als nächstes öffnen Sie das Script in Ihrem Lieblings-Editor und fügen eine Kommentarzeile ein. In unserem Beispiel nehmen wir den interaktiven Editor Ed. Er steht heute auf vielen System als Variante des bekannteren Vim zur Verfügung. Der Umgang mit ihm mag erst ungewohnt erscheinen, aber für schnelle Änderungen an einem Text-File eignet er sich wunderbar.

[akneib]~/bin > ed welt.sh
28.
echo "hallo welt"i# Dies ist eine Kommentarzeile.wq
59

Am Anfang sowie am Ende gibt das Tool die Anzahl der Zeichen in dieser Datei aus. Der Punkt weist Ed an, die aktuelle Zeile auszugeben. Er beendet aber auch die Eingabe, die Sie mit der Taste [I] starten. Nach dieser Modifikation checken Sie die Datei wieder ein. Dabei bittet RCS Sie um eine Notiz über die gerade erfolgten Änderungen in der Datei. Die Notiz schließen Sie, wie zuvor, mit einem einzelnen Punkt in einer Zeile ab.

[akneib]~/bin > ci -u welt.sh
RCS/welt.sh,v  <--  welt.sh
new revision: 1.2; previous revi↩
sion: 1.1
enter log message, terminated wi↩
th single '.' or end of file:
>> Kommentarzeile erstellt
>> .
done

Auf diese Weise erzeugen Sie aus der Version 1.1 der Datei welt.sh die Version 1.2. Vielleicht gefällt Ihnen aber die neue Version nicht, und Sie möchten erneut auf die Revisionsnummer 1.1 Ihres Skriptes zurückgreifen? Für solche Aufgaben dient die Option -r des Checkout-Befehls. Sie legt die Revision fest, die es herzustellen gilt:

[akneib]~/bin > co -r1.1 welt.sh
RCS/welt.sh,v  -->  welt.sh
revision 1.1
done

Wie Ihnen der Befehl Cat zeigt, steht das Skript nun wieder in seiner ursprünglichen Version ohne Kommentarzeile bereit:

[akneib]~/bin > cat welt.sh
#!/bin/sh
echo "Hallo Welt!"

Mit dem Kommando co -r1.2 welt.sh zaubern Sie erneut Version 1.2 aus dem Repository hervor.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • RPM-Datenbank in der Konsole
    Installations-Tools für RPM-Pakete gibt es in allen Farben und Formen, von Gnorpm über Kpackage bis hin zu YaST. Wer jedoch schnell und zielstrebig arbeitet, wird sich gern mit dem Kommandozeilenwerkzeug rpm anfreunden.
  • Digitaler Atlas
    Wissen Sie, wie die Nationalhymne von Marokko klingt? Wussten Sie, dass Grönland über eine Küste von 44087 Kilometern verfügt? Falls nicht, ist es an der Zeit, das Tool Xrmap zu installieren.
  • Stark und schnell
    Wer schnell ist, verfügt nicht unbedingt über nennenswerte Stärke. Beim Bildbetrachter Qiv verhält sich das anders: Er legt ein rasantes Arbeitstempo vor und punktet zusätzlich mit starken Funktionen. Wir haben uns den vitalen Viewer genauer angeschaut.
  • The Answer Girl
    Dass der Computeralltag auch unter Linux des Öfteren für Überraschungen gut ist, ist eher eine Binsenweisheit: Immer wieder funktionieren Dinge nicht oder nicht so, wie eigentlich angenommen. Das Answer-Girl im LinuxUser zeigt, wie man mit solchen Problemchen elegant fertig wird.
  • Einführung in die Bash-Programmierung
    Skripte sollen meist wiederkehrende oder lästige Arbeiten automatisieren. Die Standard-Shell Bash stellt Ihnen dazu eine ganze Reige von Funktionen bereit. Dieser Artikel erklärt, wie Sie ihre eigenen Shell-Skripte schreiben.
Kommentare

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.