Viele Projekte entstehen durch mehr als eine Person. Das ist toll. Viele solcher Projekte entstehen mit einem Versionscontrollsystem -- also einer Art elaboriertem gemeinsamen Verzeichnis. Bei den meisten kann man Dateien als aktuelle Fassung Anderen zur Verfuegung stellen ("committen") und dabei eine Nachricht hinterlassen. Das ist auch toll, denn so kann jeder Beteiligte die Zwischenschritte nachvollziehen und alle koennen gemeinsam wieder zurueckrudern, wenn man das Projekt gegen den Baum gefahren (oder um im Bild zu bleiben -- auf Grund gesetzt) hat und es sich wahlweise nicht mehr uebersetzen oder ausfuehren lassen will.

Hier soll es aber nun nicht um Branchen und Mergen gehen. Hier soll es um Do's und Dont's fuer das Committen von geaenderten Dateien und die Committmessages gehen. Damit es nicht zu trocken wird, gibt es zunaechst eine Einteilung der Committer-Typen (und Typinnen, natuerlich).

Der Schuechterne

[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U func.c
At revision 90.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

minor changes.
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$
Bei genauerer Inspektion stellt sich dann heraus, dass sich hinter den "minor Changes" doch eher... eine komplett umgeschriebene Datei verbirgt.

Der, der "Commit" mit "Speichern" verwechselt

[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U func.c
U func.h
At revision 91.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

added function doSomeFancy()
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$
2 Minuten spaeter.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U func.c
At revision 92.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

oops, typo.
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$
4 Minuten spaeter.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U func.c
At revision 93.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

another typo.
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$
7 Minuten spaeter.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U func.c
U func.h
At revision 94.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

changed interface to doSomeFancy()
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$
Und schliesslich nach Konsultation der Aufgabenstellung...
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U func.c
U func.h
At revision 95.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

removed doSomeFancy().
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$
Macht besonders viel Freude, wenn das Repo Commit-Mails an eine (dem Committer nicht ueberschaubare) Menge von Beteiligten verschickt. Was die wohl von so jemandem halten...?

Der Redundante

[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U commfunc.c
U commfunc.h
At revision 96.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

changed communication functions.
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$

Der Rundumschlagende

[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U commfunc.c
U commfunc.h
U main.c
U datatypes.h
U dataparser.h
U dataparser.c
U ui.h
U ui.c
U ui_i18n.h
U inputvalidation.h
U inputvalidation.c
U copyrightnotice.h
U databasecomm.h
U databasecomm.c
At revision 97.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

* communication now also via HTTPS.
* main() accepts fancy new parameters from command line!
* datatypes include now coffe and milk!
* ui now also in traditional chinese on traditional unix console!
* input validation treats 2-digit-years now as 19xx
* copyright-notice announces death of our enemies now!
* database support now also for postgresql.
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$

Der blind Rundumschlagende

[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U commfunc.c
U commfunc.h
U main.c
U datatypes.h
U dataparser.h
U dataparser.c
U ui.h
U ui.c
U ui_i18n.h
U inputvalidation.h
U inputvalidation.c
U copyrightnotice.h
U databasecomm.h
U databasecomm.c
At revision 98.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

major changes.
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$

Der Raecher

[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U commfunc.c
U commfunc.h
At revision 100.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

fixed bugs from joes last commit.
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$
6 Minuten spaeter...
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn up
U ui.c
U ui.h
At revision 102.
[ad001@glas /usr/home/ad001/svn/somerepo]$ svn log -r HEAD
------------------------------------------------------------------------
r999 | One | 2012-02-99 99:66:33 +0100 (Thu, 29 Feb 2012) | 1 line

fixed bugs from bettys last commit.
------------------------------------------------------------------------
[ad001@glas /usr/home/ad001/svn/somerepo]$

Meine Vorschlaege

Natuerlich bin ich niemand, mir da anzumassen, Regeln aufzustellen.
Aber Folgendes duerfte trotzdem eine halbwegs brauchbare Policy fuer Commit-Messages abgeben:

Stichworte:


Impressum