Obwohl der Subversion-Client kein vollständiger DeltaV-Client und der Subversion-Server kein vollständiger DeltaV-Server ist, gibt es trotzdem noch ein Schimmer an WebDAV-Interoperabilität, über den man sich freuen kann: Autoversionierung.
Autoversionierung ist ein optionales Merkmal, das im
DeltaV-Standard definiert wird. Ein typischer DeltaV-Server
wird einen unwissenden WebDAV-Client ablehnen, der ein
PUT
auf eine Datei unter Versionskontrolle
anwenden möchte. Um eine versionskontrollierte Datei zu ändern,
erwartet der Server eine Reihe exakter Versionierungsanfragen,
soetwas wie MKACTIVITY
,
CHECKOUT
, PUT
,
CHECKIN
. Unterstützt der DeltaV-Server
jedoch Autoversionierung, werden Schreibanforderungen von
einfachen WebDAV-Clients angenommen. Der Server verhält sich,
als habe der Client die entsprechenden
Versionierungsbefehle erteilt und vollzieht die Übergabe im
Verborgenen. Mit anderen Worten: es wird einem DeltaV-Server
erlaubt, mit gewöhnlichen WebDAV-Clients zusammenzuarbeiten, die
keine Versionierung verstehen.
Da so viele Betriebssysteme bereits über integrierte WebDAV-Clients verfügen, kann der Anwendugsfall für dieses Merkmal unglaublich attraktiv für Administratoren sein, die mit technisch unbedarften Benutzern arbeiten müssen. Stellen Sie sich ein Büro vor, in dem gewöhnliche Benutzer auf Microsoft Windows oder Mac OS arbeiten. Jeder Benutzer „hängt“ das Subversion-Projektarchiv „ein“, das sich darstellt wie ein gewöhnlicher vernetzter Ordner. Sie verwenden den freigegebenen Ordner wie immer: öffnen Dateien, bearbeiten und sichern sie. In der Zwischenzeit versioniert der Server alles. Jeder Administrator (oder sachkundige Benutzer) kann immer noch einen Subversion-Client verwenden, um die Historie zu durchsuchen oder ältere Dateiversionen abzurufen.
Dieses Szenario ist keine Fiktion – es ist
Wirklichkeit und es funktioniert seit Subversion 1.2. Um
Autoversionierung in mod_dav_svn zu
aktivieren, benutzen Sie die Anweisung
SVNAutoversioning
im Block
<Location>
der Datei
httpd.conf
:
<Location /repos> DAV svn SVNPath /var/svn/repository SVNAutoversioning on </Location>
Wenn die Autoversionierung von Subversion aktiv ist, erzeugen Schreibanfragen von WebDAV-Clients automatische Übergaben. Eine allgemeine Protokollnachricht wird erzeugt und an jede Revision gehängt.
Bevor Sie dieses Merkmal aktivieren, sollten Sie verstehen,
worauf Sie sich einlassen. WebDAV-Clients neigen dazu,
viele Schreibanfragen abzusetzen, was zu
einer riesigen Menge automatisch übergebener Revisionen führt.
Beim Sichern von Daten beispielsweise geben viele Clients ein
PUT
einer 0-Byte-Datei aus (um somit einen
Namen zu reservieren), gefolgt von einem weiteren
PUT
mit den eigentlichen Daten. Das einfache
Schreiben der Datei zieht zwei einzelne Übergaben nach sich.
Bedenken Sie auch, dass viele Anwendungen alle paar Minuten
automatische Sicherungen machen, was zu noch mehr Übergaben
führt.
Falls Sie ein Post-Commit-Hook-Programm verwenden, das
E-Mail verschickt, empfiehlt es sich, die Erstellung der Mail zu
unterbinden oder auf bestimmte Abschnitte des Projektarchivs zu
beschränken; es hängt davon ab, ob Sie das Hereinprasseln der
Mails immer noch als wertvolle Benachrichtigungen erachten oder
nicht. Desweiteren kann ein kluges Post-Commit-Hook-Programm
zwischen Transaktionen unterscheiden, die durch
Autoversionierung erzeugt wurden und solchen, die von einer
normalen Subversion Übergabeoperation ausgelöst wurden. Der
Trick besteht darin, nach einer Revisions-Eigenschaft namens
svn:autoversioned
zu sehen. Falls es
vorliegt, wurde die Übergabe durch einen gewöhnlichen
WebDAV-Client ausgelöst..
Ein weiteres Merkmal, das eine sinnvolle Ergänzung zur
Autoversionierung von Subversion sein kann, kommt aus dem Modul
mod_mime
von Apache. Falls ein WebDAV-Client
dem Projektarchiv eine neue Datei hinzufügt, hat der Benutzer keine
Gelegenheit, die Eigenschaft svn:mime-type
zu
setzen. Das könnte dazu führen, dass die Datei als allgemeines
Icon angezeigt wird, wenn sie innerhalb eines Ordners über
WebDAV-Freigabe betrachtet wird, und nicht mit einer bestimmten
Anwendung verknüpft wird. Eine Abhilfe wäre ein
Systemadministrator (oder eine andere Person mit
Subversion-Kenntnissen) zum Auschecken einer Arbeitskopie und dem
manuellen Setzen der Eigenschaft svn:mime-type
,
wenn es für bestimmte Dateien notwendig ist. Doch möglicherweise
würden solche Aufräumarbeiten zu keinem Ende führen. Stattdessen
können Sie die Anweisung ModMimeUsePathInfo
in Ihrem Subversion <Location>
-Block
verwenden:
<Location /repos> DAV svn SVNPath /var/svn/repository SVNAutoversioning on ModMimeUsePathInfo on </Location>
Diese Anweisung erlaubt es, mod_mime
zu
versuchen, den MIME-Typen von durch Autoversionierung frisch
hinzugefügten Dateien herzuleiten. Das Modul schaut auf die
Dateinamenserweiterung und möglicherweise ebenfalls auf den
Inhalt; wenn die Datei bestimmten Mustern entspricht, wird die
Eigenschaft svn:mime-type
der Datei automatisch
gesetzt.