|
Benötigt: Emacs, Elib
URLS:
ftp://rum.cs.yale.edu/pub/monnier/pcl-cvs/
Autoren: Per Cederqvist und Stefan Monnier (derzeitige Betreuung)
Pcl-cvs ist eine von zwei Emacs/CVS-Bedienungsoberflächen. Die andere
ist die native VC-(Version Control-)Oberfläche, die in Emacs
eingebaut ist. Ich bevorzuge pcl-cvs, weil es speziell für CVS
geschrieben wurde und daher sehr angenehm mit der Art harmoniert, in
der CVS arbeitet. VC andererseits wurde entwickelt, um mit mehreren
unterschiedlichen Versionskontrollsystemen zusammenzuarbeiten - RCS
und SCCS genau wie CVS -, und ist daher nicht wirklich optimal auf CVS
abgestimmt. Zum Beispiel präsentiert VC eine dateibasierte anstatt
einer verzeichnisbasierten Oberfläche zur Revisionskontrolle.
Die Vorteile von pcl-cvs wiegen stark genug, um viele Benutzer zum
Download und zur Installation zu bewegen, anstatt VC zu benutzen.
Unglücklicherweise hat pcl-cvs zwei Nachteile: Es kann etwas
problematisch in der Installation sein (ein Großteil dieses Abschnitts
befasst sich mit möglichen Installationshürden), und seine neuen
Versionen laufen etwas instabil.
Das letzte Problem ist wahrscheinlich eher temporärer Natur, es stellt
sich jedoch die Frage, welche Version zu benutzen ist. Stefan Monnier
hat erst kürzlich die Betreuung des pcl-cvs übernommen; die neueste
Version, 2.9.6 (erhältlich vom ersten URL in der obigen Liste), lief
ein bisschen holprig, als ich sie ausprobierte. Zweifellos werden die
Probleme binnen kurzem ausgebügelt sein, aber in der Zwischenzeit
möchten Sie möglicherweise eine etwas ältere Version benutzen. Da ich
Version 1.0.5 lange Zeit täglich benutzt habe, wobei sie sich sehr gut
verhielt, werde ich diese Version hier dokumentieren. Glücklicherweise
ändert sich an der Installation von Version zu Version nicht allzu
viel. Falls Sie sich also dazu entschließen, pcl-cvs zu benutzen, so
schlage ich vor, dass Sie auf Stefan Monniers Seite nach einer neueren
Version als 2.9.6 schauen; falls es eine gibt, versuchen Sie die,
bevor Sie ganz auf 1.0.5 zurückgehen.
Sie werden feststellen, dass ich zwei URLs für Version 1.0.5 angegeben
habe. Die erste ist Per Cederqvists Site, wo er ein Archiv alter
pcl-cvs-Versionen unterhält. Da ich nicht sicher bin, wie lange dieses
Archiv noch Bestand haben wird, mache ich außerdem die Version 1.05
auf ftp.red-bean.com verfügbar.
Obwohl der Rest dieser Anweisungen Beispiele aus einer
1.05-Distribution verwendet, sollten diese ebenfalls problemlos auf
neuere Versionen anwendbar sein.
|
Falls Sie sich normalerweise nicht mit Problemen der
Emacs-Installation und -Instandhaltung beschäftigen, könnte Ihnen die
pcl-cvs-Installationsprozedur etwas entmutigend erscheinen. Ein paar
Hintergrundinformationen zur Arbeitsweise von Emacs hilft dem
vielleicht etwas ab.
Die meisten abstrakteren Funktionen von Emacs sind in einer
Programmiersprache namens Emacs Lisp geschrieben (Emacs selbst ist
praktisch ein Interpreter für diese Programmiersprache). Die Leute
fügen Emacs neue Funktionen hinzu, indem sie Dateien mit Emacs
Lisp-Programmcode verbreiten. Pcl-cvs ist in dieser Programmiersprache
geschrieben und benötigt eine Sammlung (Bibliothek) nützlicher
allgemeiner Emacs Lisp-Funktionen namens Elib (auch von Per
Cederqvist geschrieben, wird aber nicht zusammen mit pcl-cvs
verbreitet), um zu funktionieren.
Elib ist in der normalen Emacs-Distribution nicht enthalten (zumindest
nicht im FSF Emacs; bei XEmacs weiß ich es nicht), sodass Sie Elib
zunächst selber herunterladen und installieren müssen, bevor Sie
pcl-cvs nutzen können. Sie können es von
ftp://ftp.lysator.liu.se/pub/emacs/elib-1.0.tar.gz bekommen.
Installationsanweisungen sind in dem Archiv enthalten.
Wenn Elib installiert ist, sind Sie in der Lage, pcl-cvs einzurichten.
Die folgenden Anweisungen sind gleichermaßen für Version 1.05 und 2.x
gültig (auch wenn Sie in den NEWS- und INSTALL-Dateien in neuen
Distributionen nachschauen sollten, ob sich etwas geändert hat).
Entpacken Sie zunächst pcl-cvs. (Ich benutze Version 1.05, es könnte
aber genauso gut 2.9.6 sein.)
user@linux ~$
zcat pcl-cvs-1.05.tar.gz | tar xvf -
pcl-cvs-1.05/ pcl-cvs-1.05/README pcl-cvs-1.05/NEWS pcl-cvs-1.05/INSTALL pcl-cvs-1.05/ChangeLog pcl-cvs-1.05/pcl-cvs.el pcl-cvs-1.05/pcl-cvs.texinfo pcl-cvs-1.05/compile-all.el pcl-cvs-1.05/pcl-cvs-lucid.el pcl-cvs-1.05/pcl-cvs-startup.el pcl-cvs-1.05/pcl-cvs.info pcl-cvs-1.05/Makefile pcl-cvs-1.05/texinfo.tex
|
und gehen Sie dann in das Hauptverzeichnis des Quelltextes:
user@linux ~$
cd pcl-cvs-1.05/
|
In diesem Verzeichnis ist ein Makefile. Entsprechend der Anweisungen
in der INSTALL-Datei müssen Sie nun einige Dateipfade am Anfang des
Makefile anpassen und dann eingeben:
user@linux ~$
make install
|
Wenn das funktioniert, toll! Allerdings gibt es manchmal auch eine
Fehlermeldung. (Der pcl-cvs-Programmcode ist sehr portabel, die
Installationsprozeduren sind es aber manchmal nicht!) Machen Sie
Solgendes, wenn Sie eine Fehlermeldung erhalten:
user@linux ~$
make clean
user@linux ~$
make
|
Wenn bis dahin alles gut geht, dann haben diese beiden Kommandos einen
beträchtlichen Teil der Installation bereits erledigt, indem sie alle
nötigen Emacs Lisp-Dateien byte-kompiliert haben. (Byte-Compiling
verwandelt eine Datei mit lesbarem Emacs Lisp-Programmcode - eine
.el-Datei - in eine kompaktere und effizientere Repräsentation - eine
.elc-Datei. Emacs kann .elc-Dateien effizienter laden und ausführen
als .el-Dateien.)
Ich fahre nun fort, in der Annahme, dass das mit dem Byte-Compiling
geklappt hat. Sollte das nicht der Fall sein, keine Panik: Die
.elc-Dateien sind ein Luxus, keine Notwendigkeit. Sie verbessern die
Leistung ein wenig, aber pcl-cvs kann problemlos mit den normalen
.el-Dateien laufen.
Falls das make install fehlgeschlagen ist, ist der nächste Schritt
der, die Emacs Lisp-Dateien (.elc oder .el) in ein Verzeichnis zu
packen, aus dem Emacs sie automatisch laden kann. Emacs hat ein
spezielles Verzeichnis auf Ihrem System für solche lokal installierten
Lisp-Dateien. Um dieses Verzeichnis zu finden - es enthält eine Datei
namens default.el -, suchen Sie an den folgenden Orten in dieser
Reihenfolge:
-
/usr/share/emacs/site/lisp/
-
/usr/local/share/emacs/site-lisp/
-
/usr/lib/emacs/site-lisp/
-
/usr/local/lib/emacs/site-lisp/
Wenn Sie Ihr site-lisp-Verzeichnis gefunden haben, kopieren Sie alle
Lisp-Dateien dort hinein (dafür müssen Sie möglicherweise Superuser
(root) sein):
user@linux ~$
cp -f *.el *.elc /usr/share/emacs/site-lisp/
|
Im letzten Schritt muss nun Emacs mitgeteilt werden, wo sich die
Eintrittspunkte zu den pcl-cvs-Funktionen befinden (wobei der
Haupteintrittspunkt cvs-update ist), sodass Emacs weiß, wie es bei
Bedarf den pcl-cvs-Code laden muss. Da Emacs grundsätzlich die Datei
default.el liest, wenn er startet, müssen dort die Eintrittspunkte
aufgelistet werden.
Glücklicherweise liegt bei pcl-cvs die für default.el notwendige Liste
schon bei. Kopieren Sie also einfach den Inhalt von pcl-cvs-startup.el
in die Datei default.el hinein (oder in Ihre .emacs-Datei, falls Sie
die Installation nur für sich selbst vornehmen), und starten Sie Ihren
Emacs neu.
Am besten kopieren Sie auch die .info-Dateien in Ihr Info-Verzeichnis,
und fügen Sie pcl-cvs dem Inhaltsverzeichnis in der Datei dir hinzu.
|
Wenn es erst einmal installiert ist, ist pcl-cvs ganz einfach zu
benutzen. Sie starten einfach die Funktion cvs-update, und pcl-cvs
erzeugt eine Liste mit den Dateien, die in Ihrer Arbeitskopie
verändert oder aktualisiert wurden. Von dieser Liste aus können Sie
dann Commits durchführen, diffs machen und so weiter.
Da cvs-update der Haupteintrittspunkt ist, schlage ich vor, dass Sie
ihn an eine einfach zu merkende Tastenkombination binden, bevor Sie
weitermachen. Ich habe ihn in meiner .emacs-Datei an die
Tastenkombination
Ctrl+c
v
gebunden:
(global-set-key "\C-cv" 'cvs-update)
Sie können die Funktion aber auch einfach starten, indem Sie
M+x
cvs-update
eingeben (auch bekannt als
Esc+x
cvs update
.
Wenn es gestartet wurde, lässt cvs-update cvs update laufen, als ob es
in dem Verzeichnis gestartet worden wäre, in dem sich die gerade in
Emacs geladene Datei befindet - so, als hätten Sie dort auf der
Kommandozeile cvs update eingegeben. Hier ist ein Beispiel für das,
was Sie dann in Emacs sehen könnten:
Beispiel
|
PCL-CVS release 1.05 from CVS release $Name: $.
Copyright (C) 1992, 1993 Per Cederqvist
Pcl-cvs comes with absolutely no warranty; for details consult the manual.
This is free software, and you are welcome to redistribute it under certain
conditions; again, consult the TeXinfo manual for details.
Modified ci README.txt
Modified ci fish.c
---------- End ----
|
Zwei Dateien sind lokal verändert worden. (Manche Versionen von
pcl-cvs zeigen die Unterverzeichnisse der Dateien mit an.) Der nächste
logische Schritt ist nun, den Commit einer oder beider Dateien
vorzunehmen, was durch die Buchstaben ci auf jeder der beiden Zeilen
angezeigt wird. Für den Commit einer Datei bewegen Sie einfach den
Cursor auf deren Zeile, und drücken c. Es öffnet sich dann ein
Buffer, in den Sie eine Log-Mitteilung beliebiger Länge eingeben
können (echtes Bearbeiten von Log-Mitteilungen ist der Hauptvorteil
von pcl-cvs gegenüber der Kommandozeile). Wenn die Mitteilung
geschrieben ist, drücken Sie
Ctrl+c
Ctrl+c
, um den Commit
durchzuführen.
Wenn sich der Commit auf mehrere Dateien, die sich eine Log-Mitteilung
teilen, auswirken soll, dann markieren Sie zunächst die gewünschten
Dateien mit der Taste m. Ein Sternchen erscheint neben jeder
markierten Datei:
Beispiel
|
PCL-CVS release 1.05 from CVS release $Name: $.
Copyright (C) 1992, 1993 Per Cederqvist
Pcl-cvs comes with absolutely no warranty; for details consult the manual.
This is free software, and you are welcome to redistribute it under certain
conditions; again, consult the TeXinfo manual for details.
* Modified ci README.txt
* Modified ci fish.c
---------- End ----
|
Wenn Sie nun irgendwo c eingeben, dann sind davon alle (und nur die)
markierten Dateien betroffen. Schreiben Sie die Log-Mitteilung, und
übermitteln Sie die Daten wie gehabt mit
Ctrl+c
Ctrl+c
.
Sie können auch d drücken, um cvs diff mit einer Datei (oder mehreren
markierten Dateien) zu starten, und f, um eine Datei in Emacs zu
bearbeiten. Es sind noch andere Kommandos möglich; drücken Sie
Ctrl+h
m
im Buffer mit der Dateiliste, um zu sehen, was sonst noch geht.
|
Das Programm pcl-cvs hatte schon immer eine etwas ungeschickte Art,
mit Fehlermeldungen und Informationen von CVS umzugehen (auch wenn das
möglicherweise in aktuelleren Versionen verbessert wurde). Wenn es auf
eine Nachricht von CVS stößt, die es nicht kennt, wird es hysterisch,
und Sie landen in einem Mail-Buffer, vorbereitet, um einen Bug-Report
an den Autor von pcl-cvs abzuschicken. Dummerweise sind aber unter den
CVS-Nachrichten, die pcl-cvs möglicherweise nicht erkennt, auch
solche, die bei einer problematischen Integration (Merge) von
Quelltext entstehen, was zwar selten, aber doch immer mal wieder
vorkommt.
Falls pcl-cvs Sie also plötzlich in einen Mail-Buffer umschaltet -
keine Panik. Lesen Sie den vorbereiteten Text der E-Mail sorgfältig
durch - die problematische CVS-Ausgabe sollte da irgendwo drin stehen.
Wenn es aussieht wie ein fehlgeschlagenes merge, dann verwerfen Sie
die E-Mail einfach, und starten Sie erneut cvs-update. Diesmal sollte
es keine Probleme mehr geben, da die Integration des problematischen
Quelltexts bereits stattgefunden hat.
|
Auch wenn ich den Eindruck erweckt haben mag, dass pcl-cvs kaum
weiterentwickelt wird und eine riskante Investition sein könnte,
scheint mir die Instabilität eine zeitweilige Erscheinung zu sein.
Stefan Monnier reagiert sehr schnell auf Anfragen. (Ich schrieb ihn
mehrfach an, während ich dieses Kapitel verfaßte, und erhielt immer
sofort eine Antwort; er kümmert sich bereits um mehrere Fehler in der
Version 2.9.6.) Sehr wahrscheinlich werden Sie zu dem Zeitpunkt, zu
dem dieses Buch erschienen ist, bereits eine stabile Version 2.9.7
oder höher herunterladen können. [Anm.d.Übers.: 2.9.8 ist da.]
Ich habe sogar eine ermutigende E-Mail zu diesem Thema von Greg Woods
erhalten, einem früheren Betreuer von pcl-cvs, die ich hier
wiedergeben möchte:
E-Mail
|
From: woods@most.weird.com (Greg A. Woods)
Subject: Re: Status der pcl-cvs Betreuung, Stabilität der neueren Versionen?
To: kfogel@read-bean.com
Date: Sun, 29 Aug. 1999 18:59:19 -0400 (EDT)
[...]
Ich habe Stefans Versionen inzwischen einige Zeit benutzt und
tatsächlich meinen eigenen Entwicklungszweig aufgegeben.
Er hat eine Menge wirklich gute Arbeit in PCL-CVS gesteckt, und
abgesehen von einigen wenigen Merkwürdigkeiten in Version 2.9.6, die
ich inzwischen täglich nutze, ist es wirklich benutzbar (und es ist so
unendlich viel benutzbarer mit aktuellen CVS-Versionen als die
Version, die in der CVS-Distribution enthalten war! ;-).
Ich habe eine Datei pcl-cvs.README auf meinem ftp-Server abgelegt, in
der steht, dass die Dateien wirklich ziemlich alt sind (zumindest nach
Internet-Zeit ;-), und einen Verweis auf Stefans ftp-Server angegeben.
[...]
|
In einer späteren E-Mail sagte Greg, dass die FSF erwägt, pcl-cvs in
ihre nächsten Ausgabe von Emacs (20.5) als Bestandteil zu integrieren,
was den größten Teil der oben stehenden Installationshilfen
überflüssig machen würde. Seufz. Manchmal ist es wirklich schwierig,
mit der Entwicklung freier Software Schritt zu halten.
|
|