Commit-E-Mails sind beim Commit abgeschickte Benachrichtigungen,
welche die Log-Nachrichten und die vom Commit betroffenen Dateien
auflisten. Sie gehen normalerweise an alle Teilnehmer des Projekts,
manchmal auch an sonstige Interessierte. Da die Details, wie
Commit-E-Mails eingerichtet werden, schon von Kapitel 4 abgedeckt
worden sind, werde ich sie hier nicht wiederholen. Mir ist allerdings
aufgefallen, dass Commit-E-Mails manchmal unerwartete Seiteneffekte
auf Projekte haben können, Effekte, die Sie in Betracht ziehen
sollten, wenn Sie Commit-E-Mails für Ihr Projekt einsetzen wollen.
Erstens: Rechnen Sie damit, dass die Nachrichten meistens ignoriert
werden. Ob sie gelesen werden oder nicht, hängt zumindest zum Teil
davon ab, wie häufig Commits in Ihrem Projekt vorkommen. Tendieren
die Entwickler eher dazu, täglich eine große Änderung per Commit zu
veröffentlichen, oder eher dazu, es über viele kleine Änderungen,
verteilt über den Tag, zu tun? Je näher Ihr Projekt dem zweiten Fall
ist und je stärker die vielen kleinen Commits den ganzen Tag lang auf
die Entwickler herunter prasseln, um so weniger werden sie sich um
jede einzelne Nachricht kümmern.
Daraus folgt nicht, dass die Benachrichtigungen keinen Zweck erfüllen,
man sollte nur nicht davon ausgehen, dass jeder jede Nachricht liest.
Es ist immer noch ein bequemer Weg, die Sachen im Auge zu behalten -
wer was macht -, ohne das Aufdringliche, das Watches an sich haben.
Gehen die E-Mails an eine öffentlich zugängliche Mailingliste, so hat
man einen wundervollen Mechanismus, um interessierten Benutzern
(Entwickler in spe!) die Möglichkeit zu bieten, täglich
mitzubekommen, was am Quelltext geschieht.
Vielleicht sollten Sie in Betracht ziehen, einen Entwickler
abzustellen, die Log-Nachrichten zu verfolgen und den Überblick über
das gesamte Projekt zu behalten (ein guter Projektleiter tut das
natürlich sowieso). Wenn die Zuständigkeiten klar verteilt sind,
beispielsweise wenn bestimmte Entwickler bestimmten
Unterverzeichnissen des Projekts zugeordnet sind, könnten Sie ganz
besonders schicke Vorkehrungen in CVSROOT/loginfo treffen, sodass
jede verantwortliche Partei gesondert markierte Nachrichten darüber
erhält, was in ihrem Zuständigkeitsbereich passiert. Das hilft dabei
sicherzustellen, dass die Entwickler wenigstens die E-Mails lesen, die
zu ihren Unterverzeichnissen gehören.
Ein interessanterer Effekt tritt ein, wenn Commit-E-Mails nicht
ignoriert werden. Die Leute fangen an, sie als
Echtzeit-Kommunikationsmittel zu verwenden. Dadurch kann sich so etwas
ergeben:
Finished feedback form; fixed the fonts and background colors
on the home page. Whew! Anyone want to go to Mon Lung for lunch?
Es ist nichts Falsches daran, die Logs auf diese Art zu »mißbrauchen«.
Dadurch wird es interessant, sie später noch einmal zu lesen. Dennoch
sollte sich jeder darüber im Klaren sein, dass sich Log-Nachrichten,
wie etwa die folgende, nicht nur per E-Mail verbreiten, sondern sich
auch in der Projekthistorie verewigen. Über die Spezifikationen eines
Kunden zu hadern, mag ein verbreiteter Zeitvertreib unter
Programmierern sein; man kann sich leicht vorstellen, dass jemand
beim Commit eine Log-Nachricht wie folgende schreibt, wissend, dass
die anderen Programmierer sie als E-Mail erhalten:
Truncate four-digit years to two-digits in input. What the customer
wants, the customer gets, no matter how silly & wrong. Sigh.
Kein Zweifel - eine amüsante E-Mail, aber was passiert, wenn der Kunde
sich eines Tages die Log-Nachrichten ansieht? (Ich wette, dass
ähnliche Befürchtungen schon bei mehr als einer Site dazu geführt
haben, CVS/loginfo so einzurichten, dass Mechanismen vorgeschaltet
werden, die Anstößiges aus den Log-Nachrichten heraus halten!)
Im Großen und Ganzen scheinen Commit-E-Mails die Leute davon
abzuhalten, zu kurze oder unverständliche Log-Nachrichten zu
schreiben, was möglicherweise »eine gute Sache« ist. Jedoch müssen sie
hin und wieder daran erinnert werden, dass jeder, der irgendwann
einmal die Logs liest, ein potenzieller Adressat ist, nicht nur die
Empfänger der E-Mails.
Wie man Log-Nachrichten nach dem Commit ändert
Für den Fall, dass jemand eine Log-Nachricht nach dem Commit bereut,
ermöglicht es CVS, die Logs nachträglich zu ändern. Man erledigt dies
mit der -m-Option, die man zusammen mit dem admin-Kommando verwendet
(auf das Kommando wird später in diesem Kapitel noch detaillierter
eingegangen). Das Kommando erlaubt es, genau eine Log-Nachricht (pro
Revision, pro Datei) auf einmal zu ändern. Das funktioniert so:
user@linux ~$
floss$ cvs admin -m 1.7:"Truncate four-digit years to two in input." date.c
RCS file: /usr/local/newrepos/someproj/date.c,v done
|
Die ursprüngliche Log-Nachricht, die mit dem Commit von Revision 1.7
abgelegt wurde, ist durch eine völlig unschuldige - wenn auch weniger
scharfzüngige - ersetzt worden. (Nicht den Doppelpunkt vergessen, der
die Revisionsnummer von der Log-Nachricht trennt.)
Wenn die »falsche« Log-Nachricht beim Commit von mehreren Dateien
verwendet wurde, muss man cvs admin für jede Datei getrennt aufrufen.
Es handelt sich also um eines der wenigen Kommandos, bei denen CVS
erwartet, dass nur ein einziger Dateiname als Argument übergeben wird:
user@linux ~$
cvs admin -m 1.2:"very boring log message" hello.c README.txt foo.gif
cvs admin: while processing more than one file: cvs [admin aborted]: attempt to specify a numeric revision
|
Lassen Sie sich nicht davon verwirren, dass Sie dieselbe Fehlermeldung
erhalten, als wenn Sie gar keine Dateinamen mit angegeben hätten. Das
liegt daran, dass CVS in dem Fall alle Dateien, die im aktuellen
Verzeichnis und darunter liegen, als implizite Argumente betrachtet:
user@linux ~$
cvs admin -m 1.2:"very boring log message"
cvs admin: while processing more than one file: cvs [admin aborted]: attempt to specify a numeric revision
|
(Es ist bei CVS-Fehlermeldungen leider häufig der Fall, dass man die
Dinge aus der Sicht von CVS betrachten muss, damit sie einen Sinn
ergeben!)
Der admin -m-Aufruf ändert die Projekthistorie, seien Sie also
vorsichtig. Es wird keine Aufzeichnung geben, die besagt, dass die
Log-Nachricht jemals verändert wurde - es wird einfach so aussehen,
als ob die Revision schon beim ursprünglichen Commit die neue
Log-Nachricht erhalten hätte. Die alte Meldung wird nirgends ihre
Spuren hinterlassen (außer Sie heben die Original-E-Mail auf).
Obwohl sein Name scheinbar besagt, dass nur der designierte
CVS-Administrator es benutzen kann, kann normalerweise jeder cvs admin
aufrufen, solange er Schreibzugriff auf das fragliche Projekt hat.
Existiert jedoch eine Unix-Benutzergruppe namens cvsadmin, dann ist
die Nutzung dieses Kommandos auf die Mitglieder der Gruppe
beschränkt. (Mit der Ausnahme, dass immer noch jeder cvs admin -k
benutzen kann.) Dennoch benutzt man es besser mit großer Vorsicht,
denn die Möglichkeit, die Geschichte des Projekts umzuschreiben, ist
verglichen mit anderen, potenziell zerstörerischen Fähigkeiten noch
harmlos. In Kapitel 9 gibt es noch mehr zu admin, zusammen mit Wegen,
dessen Benutzung einzuschränken.
|