SVNBOOK AppC WebDAV and Autoversioning

De Framalang Wiki.

Cette page fait partie du projet Version control with subversion.

Pseudo Code Rôle Statut
Hotshot92 Traduction Fait
SVF 1ère Relecture Fait
Validation

Source : http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.webdav


Sommaire

WebDAV and Autoversioning

WebDAV and Autoversioning
WebDAV et le suivi de versions automatique

WebDAV is an extension to HTTP, and it is growing more and more popular as a standard for file sharing. Today's operating systems are becoming extremely web-aware, and many now have built-in support for mounting “shares” exported by WebDAV servers.

If you use Apache as your Subversion network server, to some extent you are also running a WebDAV server. This appendix gives some background on the nature of this protocol, how Subversion uses it, and how well Subversion interoperates with other software that is WebDAV-aware.

WebDAV est une extension de HTTP qui devient de plus en plus courante comme standard pour le partage de fichiers. De nos jours, les systèmes d'exploitation sont de plus en plus « connectés » et beaucoup maintenant supportent nativement le montage de « partages » proposés par les serveurs WebDAV.

Si vous utilisez Apache comme serveur réseau pour Subversion, on peut dire que d'une certaine manière vous faites aussi tourner un serveur WebDAV. Cet appendice donne quelques notions générales sur ce protocole, la manière dont Subversion l'utilise et l'état actuel de l'interopérabilité entre Subversion et d'autres logiciels compatibles WebDAV.

What Is WebDAV?

What Is WebDAV?
À propos de WebDAV

DAV stands for “Distributed Authoring and Versioning.” RFC 2518 defines a set of concepts and accompanying extension methods to HTTP 1.1 that make the Web a more universal read/write medium. The basic idea is that a WebDAV-compliant web server can act like a generic file server; clients can “mount” shared folders over HTTP that behave much like other network filesystems (such as NFS or SMB).

The tragedy, though, is that despite the acronym, the RFC specification doesn't actually describe any sort of version control. Basic WebDAV clients and servers assume that only one version of each file or directory exists, and that it can be repeatedly overwritten.

Because RFC 2518 left out versioning concepts, another committee was left with the responsibility of writing RFC 3253 a few years later. The new RFC adds versioning concepts to WebDAV, placing the “V” back in “DAV”—hence the term “DeltaV.” WebDAV/DeltaV clients and servers are often called just “DeltaV” programs, since DeltaV implies the existence of basic WebDAV.

The original WebDAV standard has been widely successful. Every modern computer operating system has a general WebDAV client built in (details to follow), and a number of popular standalone applications are also able to speak WebDAV—Microsoft Office, Dreamweaver, and Photoshop, to name a few. On the server end, Apache HTTP Server has been able to provide WebDAV services since 1998 and is considered the de facto open source standard. Several other commercial WebDAV servers are available, including Microsoft's own IIS.

DAV signifie "Distributed Authoring and Versioning", que l'on pourrait traduire par « Écriture distribuée et suivi de versions ». La RFC 2518 définit un ensemble de concepts et d'extensions sur la base du protocole HTTP 1.1 afin de faire du Web un périphérique de lecture/écriture plus universel. L'idée est qu'un serveur Web compatible WebDAV peut être considéré comme un serveur de fichiers générique ; les clients peuvent "monter" des répertoires partagés, au-dessus d'une couche HTTP, et ces répertoires se comportent pratiquement comme les autres systèmes de fichiers en réseau (tels que NFS ou SMB).

Là où le bat blesse, c'est que, malgré l'acronyme, les spécifications de la RFC ne décrivent en fait aucun moyen de suivi de versions. Les clients et serveurs WebDAV de base considèrent que chaque fichier ou répertoire n'existe qu'en une seule version, qui peut être ré-écrite autant de fois que l'on veut.

Comme la RFC 2518 a ignoré les concepts de suivi de versions, un autre groupe de travail a hérité de la responsabilité d'écrire la RFC 3253 quelques années plus tard. La nouvelle RFC ajoute le concept de suivi de versions à WebDAV, en rendant sa signification au V de DAV, d'où le terme "DeltaV". Les clients et serveurs WebDAV/DeltaV sont souvent appelés "DeltaV" tout court, puisque le DeltaV implique obligatoirement la prise en compte du WebDAV.

Le standard WebDAV initial a connu un grand succès. Tous les systèmes d'exploitation modernes ont un client WebDAV intégré (nous les verrons en détail plus tard) et de nombreux logiciels sont également capables de communiquer via ce protocole : Microsoft Office, Dreamweaver, Photoshop pour n'en citer que quelques uns. Côté serveur, le serveur HTTP Apache dispose des services WebDAV depuis 1998 et est considéré de facto comme la référence en logiciels libres. Il existe plusieurs autres serveurs WebDAV commerciaux, dont le propre serveur de Microsoft, IIS.

DeltaV, unfortunately, has not been so successful. It's very difficult to find any DeltaV clients or servers. The few that do exist are relatively unknown commercial products, and thus it's very difficult to test interoperability. It's not entirely clear as to why DeltaV has remained stagnant. Some opine that the specification is just too complex. Others argue that while WebDAV's features have mass appeal (even the least technical users appreciate network file sharing), its version control features just aren't interesting or necessary for most users. Finally, some believe that DeltaV remains unpopular because there's still no open source server product that implements it well.

When Subversion was still in its design phase, it seemed like a great idea to use Apache as a network server. It already had a module to provide WebDAV services. DeltaV was a relatively new specification. The hope was that the Subversion server module (mod_dav_svn) would eventually evolve into an open source DeltaV reference implementation. Unfortunately, DeltaV has a very specific versioning model that doesn't quite line up with Subversion's model. Some concepts were mappable; others were not.

Malheureusement, DeltaV n'a pas connu autant de succès. Il est très difficile de trouver des clients ou des serveurs DeltaV. Les rares qui existent sont des serveurs commerciaux plus ou moins inconnus, et il est donc très difficile de tester l'interopérabilité. Il n'est pas évident de trouver pourquoi DeltaV n'a pas percé. Certains mettent en cause des spécifications trop complexes. D'autres arguent du fait que, contrairement à WebDAV qui est une technologie de masse (même les utilisateurs les moins férus d'informatique sont contents de partager des fichiers en réseau), ses fonctionnalités de suivi de versions intéressent peu ou ne sont pas nécessaires à la majorité des gens. Enfin, certains sont persuadés que DeltaV n'intéresse pas grand monde parce qu'il n'existe aucun serveur libre qui l'implémente correctement.

Quand Subversion était encore en phase de conception, l'utilisation d'Apache comme serveur réseau paraissait une très bonne idée. Il possédait déjà un module pour fournir des services WebDAV, et DeltaV était une spécification relativement jeune. L'idée était que le module serveur de Subversion (mod_dav_svn) évoluerait pour devenir l'implémentation libre de référence de DeltaV. Malheureusement, DeltaV possède un modèle de suivi de versions très particulier, qui n'est pas vraiment compatible avec le modèle de Subversion. Certains concepts pouvaient être adaptés, mais d'autres non.

What does this mean, then?

First, the Subversion client is not a fully implemented DeltaV client. It needs certain types of things from the server that DeltaV itself cannot provide, and thus is largely dependent on a number of Subversion-specific HTTP REPORT requests that only mod_dav_svn understands.

Second, mod_dav_svn is not a fully realized DeltaV server. Many portions of the DeltaV specification were irrelevant to Subversion, and thus were left unimplemented.

There is still some debate in the developer community as to whether or not it's worthwhile to remedy either of these situations. It's fairly unrealistic to change Subversion's design to match DeltaV, so there's probably no way the client can ever learn to get everything it needs from a general DeltaV server. On the other hand, mod_dav_svn could be further developed to implement all of DeltaV, but it's hard to find motivation to do so—there are almost no DeltaV clients to interoperate with.

Et alors, quelles en sont les conséquences ?

Premièrement, le client Subversion n'est pas un client DeltaV complet. Il a besoin d'informations de la part du serveur que DeltaV est incapable de lui fournir, ce qui implique qu'il dépend en grande partie de requêtes HTTP REPORT spécifiques à Subversion que seul mod_dav_svn sait interpréter.

Deuxièmement, mod_dav_svn n'implémente pas toutes les fonctionnalités d'un serveur DeltaV. De nombreux éléments des spécifications du protocole DeltaV ne sont pas pertinents dans le cas de Subversion et n'ont donc pas été implémentés.

Le débat est toujours d'actualité au sein de la communauté des développeurs pour savoir si cela vaut la peine de combler ces lacunes. Il serait irréaliste de modifier l'architecture de Subversion pour rallier celle de DeltaV, et donc le client ne sera sans doute jamais capable d'obtenir toutes les informations nécessaires d'un serveur DeltaV. D'un autre côté, mod_dav_svn pourrait être complété pour intégrer les fonctionnalités manquantes de DeltaV, mais il est difficile de se motiver pour le faire : il n'existe pratiquement aucun client DeltaV avec qui communiquer.

Autoversioning

Autoversioning
Suivi de versions automatique

While the Subversion client is not a full DeltaV client, and the Subversion server is not a full DeltaV server, there's still a glimmer of WebDAV interoperability to be happy about: autoversioning.

Autoversioning is an optional feature defined in the DeltaV standard. A typical DeltaV server will reject an ignorant WebDAV client attempting to do a PUT to a file that's under version control. To change a version-controlled file, the server expects a series of proper versioning requests: something like MKACTIVITY, CHECKOUT, PUT, CHECKIN. But if the DeltaV server supports autoversioning, write requests from basic WebDAV clients are accepted. The server behaves as though the client had issued the proper series of versioning requests, performing a commit under the hood. In other words, it allows a DeltaV server to interoperate with ordinary WebDAV clients that don't understand versioning.

Because so many operating systems already have integrated WebDAV clients, the use case for this feature can be incredibly appealing to administrators working with non-technical users. Imagine an office of ordinary users running Microsoft Windows or Mac OS. Each user “mounts” the Subversion repository, which appears to be an ordinary network folder. They use the shared folder as they always do: open files, edit them, and save them. Meanwhile, the server is automatically versioning everything. Any administrator (or knowledgeable user) can still use a Subversion client to search history and retrieve older versions of data.

This scenario isn't fiction—it's real and it works, as of Subversion 1.2 and later. To activate autoversioning in mod_dav_svn, use the SVNAutoversioning directive within the httpd.conf Location block, like so:

Bien que le client Subversion ne soit pas un client DeltaV complet et que le serveur Subversion n'implémente pas toutes les fonctionnalités d'un serveur DeltaV, il faut se féliciter de l'existence d'une petite lueur d'intéropérabilité WebDAV : le suivi de versions automatique.

Le suivi de versions automatique est une fonctionnalité optionnelle définie dans le standard DeltaV. Un serveur DeltaV classique n'autorisera pas un client WebDAV non compatible à effectuer des opérations PUT sur un fichier suivi en versions. Pour modifier un tel fichier, le serveur exige un enchaînement précis de requêtes de suivi de versions : quelque chose comme MKACTIVITY, CHECKOUT, PUT, CHECKIN (c'est-à-dire : créer une activité, extraire le fichier versionné, renvoyer le fichier modifié et assortir cette modification d'un commentaire) . Mais si le serveur DeltaV supporte la fonctionnalité de suivi de versions automatique, les requêtes en écriture des clients WebDAV ordinaires sont acceptées. Le serveur agit comme si le client avait envoyé l'enchaînement de requêtes approprié, en faisant une propagation « sous le manteau ». En d'autres termes, le suivi de versions automatique permet à un serveur DeltaV de communiquer avec des clients WebDAV ordinaires qui ne gèrent pas le suivi de versions.

Comme beaucoup de systèmes d'exploitation ont des clients WebDAV intégrés, cette fonctionnalité est particulièrement intéressante pour les administrateurs qui travaillent avec des utilisateurs non techniciens. Imaginez un bureau avec des utilisateurs « ordinaires » sous Microsoft Windows ou Mac OS. Chaque utilisateur "monte" le dépôt Subversion qui apparaît comme un lecteur réseau classique. Ils utilisent le partage réseau comme ils l'ont toujours fait : ils ouvrent les fichiers, les modifient et les sauvegardent. Pendant ce temps, le serveur assure automatiquement le suivi de versions. L'administrateur (ou tout autre utilisateur sachant le faire) peut toujours utiliser un client Subversion pour effectuer des requêtes sur l'historique des fichiers ou récupérer une vieille version.

Ce scénario n'est pas de la science-fiction : c'est du concret, qui fonctionne depuis la version 1.2 de Subversion. Pour activer le suivi de versions automatique dans mod_dav_svn, utilisez la directive SVNAutoversionning dans le bloc Location de httpd.conf, comme dans l'exemple suivant :

<Location /repos>
  DAV svn
  SVNPath /var/svn/repository
  SVNAutoversioning on
</Location>
<Location /depot>
  DAV svn
  SVNPath /var/svn/depot
  SVNAutoversioning on
</Location>

When Subversion autoversioning is active, write requests from WebDAV clients result in automatic commits. A generic log message is automatically generated and attached to each revision.

Before activating this feature, however, understand what you're getting into. WebDAV clients tend to do many write requests, resulting in a huge number of automatically committed revisions. For example, when saving data, many clients will do a PUT of a 0-byte file (as a way of reserving a name) followed by another PUT with the real file data. The single file-write results in two separate commits. Also consider that many applications auto-save every few minutes, resulting in even more commits.

Quand le suivi de versions automatique de Subversion est actif, les requêtes en écriture de clients WebDAV sont transformées automatiquement en propagations. Un message de propagation générique est créé et associé automatiquement à chaque révision.

Cependant, avant d'activer cette fonctionnalité, comprenez bien dans quoi vous vous engagez. Les clients WebDAV ont tendance à effectuer beaucoup de requêtes en écriture, ce qui engendrera un nombre astronomique de propagations automatiques. Par exemple, lors d'une sauvegarde d'un fichier, beaucoup de clients vont effectuer un PUT pour un fichier de 0 octets (pour signifier qu'ils réservent le nom) suivi par un autre PUT avec les données effectives du fichier. La simple écriture d'un fichier entraînera ainsi deux propagations distinctes. Tenez également compte du fait que de nombreuses applications effectuent des sauvegardes automatiques régulièrement, toutes les cinq minutes par exemple, qui se traduiront par autant de propagations.

If you have a post-commit hook program that sends email, you may want to disable email generation either altogether or on certain sections of the repository; it depends on whether you think the influx of emails will still prove to be valuable notifications or not. Also, a smart post-commit hook program can distinguish between a transaction created via autoversioning and one created through a normal Subversion commit operation. The trick is to look for a revision property named svn:autoversioned. If present, the commit was made by a generic WebDAV client.

Another feature that may be a useful complement for Subversion's autoversioning comes from Apache's mod_mime module. If a WebDAV client adds a new file to the repository, there's no opportunity for the user to set the the svn:mime-type property. This might cause the file to appear as a generic icon when viewed within a WebDAV shared folder, not having an association with any application. One remedy is to have a sysadmin (or other Subversion-knowledgeable person) check out a working copy and manually set the svn:mime-type property on necessary files. But there's potentially no end to such cleanup tasks. Instead, you can use the ModMimeUsePathInfo directive in your Subversion <Location> block:

Si vous avez une procédure automatique qui envoie un e-mail après chaque propagation (post-commit), il serait souhaitable de désactiver cet envoi soit complètement soit au moins pour certaines parties du dépôt, selon que vous pensez que ces e-mails apportent toujours de la plus-value ou pas. De plus, une procédure automatique post-commit bien pensée peut distinguer une propagation générée par le suivi de versions automatique d'une propagation classique. L'astuce consiste à examiner la propriété de révision dénommée svn:autoversioned. Si elle est présente, la propagation est issue d'un client WebDAV quelconque.

Une autre caractéristique utile et complémentaire du suivi de versions automatique de Subversion est fournie par le module mod_mime d'Apache. Si un client WebDAV ajoute un nouveau fichier au dépôt, l'utilisateur n'a pas l'occasion de lui adjoindre la propriété svn:mime-type. Dans ce cas, il se peut que, lors de la navigation dans un répertoire partagé WebDAV, l'icône du fichier soit générique et qu'aucune application ne soit associée à ce fichier. Une solution peut être qu'un administrateur système (ou toute autre personne sachant utiliser Subversion) extraie une copie de travail et définisse manuellement la propriété svn:mime-type sur les fichiers concernés. Mais c'est un peu comme tenter de remplir le tonneau des Danaïdes, alors qu'il suffit de placer la directive ModMimeUsePathInfo dans le bloc <Location> de Subversion :
<Location /repos>
  DAV svn
  SVNPath /var/svn/repository
  SVNAutoversioning on

  ModMimeUsePathInfo on

</Location>
<Location /depot>
  DAV svn
  SVNPath /var/svn/depot
  SVNAutoversioning on

  ModMimeUsePathInfo on

</Location>

This directive allows mod_mime to attempt automatic deduction of the MIME type on new files that enter the repository via autoversioning. The module looks at the file's named extension and possibly the contents as well; if the file matches some common patterns, the file's svn:mime-type property will be set automatically.

Cette directive autorise mod_mime à déduire automatiquement le type MIME des nouveaux fichiers qui entrent dans le dépôt du suivi de versions automatique. Ce module regarde l'extension du nom de fichier et éventuellement le contenu de celui-ci ; si certains motifs sont repérés, la propriété svn:mime-type du fichier sera automatiquement renseignée.

Client Interoperability

{{Trans|TransSource| Client Interoperability

Interopérabilité des clients

All WebDAV clients fall into one of three categories—standalone applications, file-explorer extensions, or filesystem implementations. These categories broadly define the types of WebDAV functionality available to users. Table C.1, “Common WebDAV clients” gives our categorization as well as a quick description of some common pieces of WebDAV-enabled software. You can find more details about these software offerings, as well as their general category, in the sections that follow.

Les clients WebDAV peuvent être classés en trois catégories : applications autonomes, greffons pour explorateur de fichiers et implémentations de système de fichiers. Ces catégories définissent grossièrement les types de fonctionnalités WebDAV offertes aux utilisateurs. Le tableau C.1 "Principaux clients WebDAV" contient notre répartition en catégories et fournit une brève description des principaux logiciels compatibles WebDAV. Vous trouverez plus d'informations sur ces logiciels, ainsi que sur les catégories auxquelles ils appartiennent, dans les sections à suivre.

Table C.1. Common WebDAV clients

Tableau C.1 « Principaux clients WebDAV »
SoftwareTypeWindowsMacLinuxDescription
Adobe PhotoshopStandalone WebDAV applicationX Image editing software, allowing direct opening from, and writing to, WebDAV URLs
cadaverStandalone WebDAV application XXCommand-line WebDAV client supporting file transfer, tree, and locking operations
DAV ExplorerStandalone WebDAV applicationXXXJava GUI tool for exploring WebDAV shares
Adobe DreamweaverStandalone WebDAV applicationX Web production software able to directly read from and write to WebDAV URLs
Microsoft OfficeStandalone WebDAV applicationX Office productivity suite with several components able to directly read from and write to WebDAV URLs
Microsoft Web FoldersFile-explorer WebDAV extensionX GUI file explorer program able to perform tree operations on a WebDAV share
GNOME NautilusFile-explorer WebDAV extension XGUI file explorer able to perform tree operations on a WebDAV share
KDE Konqueror File-explorerWebDAV extension XGUI file explorer able to perform tree operations on a WebDAV share
Mac OS XWebDAV filesystem implementation X Operating system that has built-in support for mounting WebDAV shares.
Novell NetDriveWebDAV filesystem implementationX Drive-mapping program for assigning Windows drive letters to a mounted remote WebDAV share
SRT WebDriveWebDAV filesystem implementationX File transfer software, which, among other things, allows the assignment of Windows drive letters to a mounted remote WebDAV share
davfs2WebDAV filesystem implementation XLinux filesystem driver that allows you to mount a WebDAV share


LogicielTypeWindowsMacLinuxDescription
Adobe Photoshopapplication WebDAV autonomeX logiciel de retouche d'images, capable d'accéder directement à des URL WebDAV, en lecture et en écriture
cadaverapplication WebDAV autonome XXclient WebDAV en ligne de commande, supportant des opérations de transfert de fichiers, d'arborescences et de verrouillage
DAV Explorerapplication WebDAV autonomeXXXinterface graphique en Java dont le but est de parcourir des partages WebDAV
Adobe Dreamweaverapplication WebDAV autonomeX Logiciel de création Web, capable d'accéder directement à des URL WebDAV, en lecture et en écriture
Microsoft Officeapplication WebDAV autonomeX Suite bureautique dont plusieurs composants sont capables d'accéder directement à des URL WebDAV, en lecture et en écriture
Microsoft Web Foldersgreffon WebDAV pour explorateur de fichiersX explorateur de fichiers avec interface graphique capable d'effectuer des opérations sur les arborescence de partages WebDAV
GNOME Nautilusgreffon WebDAV pour explorateur de fichiers Xexplorateur de fichiers avec interface graphique capable d'effectuer des opérations sur les arborescence de partages WebDAV
KDE Konquerorgreffon WebDAV pour explorateur de fichiers Xexplorateur de fichiers avec interface graphique capable d'effectuer des opérations sur les arborescence de partages WebDAV
Mac OS Ximplémentation d'un système de fichiers WebDAV X Système d'exploitation capable de monter des partages WebDAV nativement
Novell NetDriveimplémentation d'un système de fichiers WebDAVX Logiciel qui permet d'affecter des partages réseaux WebDAV à des lecteurs réseaux Windows
SRT WebDriveimplémentation d'un système de fichiers WebDAVX Logiciel de transfert de fichiers qui, entre autres choses, permet d'affecter des partages réseaux WebDAV à des lecteurs réseaux Windows
davfs2implémentation d'un système de fichiers WebDAV Xpilote de système de fichiers Linux qui permet de monter des partages WebDAV

Standalone WebDAV Applications

Standalone WebDAV Applications

Applications WebDAV autonomes

A WebDAV application is a program that speaks WebDAV protocols with a WebDAV server. We'll cover some of the most popular programs with this kind of WebDAV support.

Une application WebDAV est un programme qui communique avec un serveur WebDAV en utilisant les protocoles WebDAV. Nous allons passer en revue les programmes les plus populaires dans cette catégorie.

Microsoft Office, Dreamweaver, Photoshop

Microsoft Office, Dreamweaver, Photoshop
Microsoft Office, Dreamweaver, Photoshop

On Windows, several well-known applications contain integrated WebDAV client functionality, such as Microsoft's Office, [61] Adobe's Photoshop and Dreamweaver programs. They're able to directly open and save to URLs, and tend to make heavy use of WebDAV locks when editing a file.

Note that while many of these programs also exist for Mac OS X, they do not appear to support WebDAV directly on that platform. In fact, on Mac OS X, the File→Open dialog box doesn't allow one to type a path or URL at all. It's likely that the WebDAV features were deliberately left out of Macintosh versions of these programs, since OS X already provides such excellent low-level filesystem support for WebDAV.

Sous Windows, plusieurs applications bien connues intègrent nativement un client WebDAV, comme par exemple Microsoft Office [61], Photoshop d'Adobe et Dreamweaver. Ils sont capables d'accéder à des URL WebDAV à la fois en lecture et en écriture, et ont tendance à faire un usage intensif des verrous WebDAV lors de l'édition d'un fichier.

Notez que bien que beaucoup de ces programmes fonctionnent également sous Mac OS X, ils ne semblent pas directement supporter WebDAV sur cette plate-forme. En fait, sous Mac OS X, la boîte de dialogue « Fichier → Ouvrir » ne permet pas l'entrée d'un chemin ou d'une URL. Il est probable que le support de WebDAV ait été délibérément laissé de côté sur les versions Macintosh de ces programmes, puisque le système de fichiers de bas niveau d'OS X est déjà lui-même hautement compatible avec WebDAV.

cadaver, DAV Explorer

cadaver, DAV Explorer
cadaver, explorateur DAV

cadaver is a bare-bones Unix command-line program for browsing and changing WebDAV shares. Like the Subversion client, it uses the neon HTTP library—not surprisingly, since both neon and cadaver are written by the same author. cadaver is free software (GPL license) and is available at http://www.webdav.org/cadaver/.

Using cadaver is similar to using a command-line FTP program, and thus it's extremely useful for basic WebDAV debugging. It can be used to upload or download files in a pinch, to examine properties, and to copy, move, lock, or unlock files:

cadaver (cadavre en anglais) est un programme Unix en ligne de commande rudimentaire pour parcourir et modifier des partages WebDAV. Comme le client Subversion, il utilise la bibliothèque HTTP neon — ce qui n'est pas surprenant puisque neon et cadaver sont écrits par le même auteur. cadaver est un logiciel libre (licence GPL) disponible à l'adresse http://www.webdav.org/cadaver/ (site en anglais).

L'utilisation de cadaver est similaire à l'utilisation d'un programme FTP en ligne de commande et se révèle donc extrêmement utile pour effectuer du débogage sur WebDAV. Il peut être utilisé pour transférer rapidement plusieurs fichiers du serveur vers son ordinateur ou de son ordinateur vers le serveur, pour examiner les propriétés et pour copier, déplacer, verrouiller ou déverrouiller les fichiers :
$ cadaver http://host/repos
dav:/repos/> ls
Listing collection `/repos/': succeeded.
Coll: > foobar                                 0  May 10 16:19
      > playwright.el                       2864  May  4 16:18
      > proofbypoem.txt                     1461  May  5 15:09
      > westcoast.jpg                      66737  May  5 15:09

dav:/repos/> put README
Uploading README to `/repos/README':
Progress: [=============================>] 100.0% of 357 bytes succeeded.

dav:/repos/> get proofbypoem.txt
Downloading `/repos/proofbypoem.txt' to proofbypoem.txt:
Progress: [=============================>] 100.0% of 1461 bytes succeeded.
$ cadaver http://hote/depot
dav:/depot/> ls
Listing collection `/depot/': succeeded.
Coll: > machintruc                             0  May 10 16:19
      > auteur.el                       2864  May  4 16:18
      > preuve-en-poeme.txt                 1461  May  5 15:09
      > cote-d-azur.jpg                    66737  May  5 15:09

dav:/repos/> put LISEZMOI
Uploading LISEZMOI to `/depot/LISEZMOI':
Progress: [=============================>] 100.0% of 357 bytes succeeded.

dav:/repos/> get preuve-en-poeme.txt
Downloading `/depot/preuve-en-poeme.txt' to preuve-en-poeme.txt:
Progress: [=============================>] 100.0% of 1461 bytes succeeded.

DAV Explorer is another standalone WebDAV client, written in Java. It's under a free Apache-like license and is available at http://www.ics.uci.edu/~webdav/. It does everything cadaver does, but has the advantages of being portable and being a more user-friendly GUI application. It's also one of the first clients to support the new WebDAV Access Control Protocol (RFC 3744).

Of course, DAV Explorer's ACL support is useless in this case, since mod_dav_svn doesn't support it. The fact that both cadaver and DAV Explorer support some limited DeltaV commands isn't particularly useful either, since they don't allow MKACTIVITY requests. But it's not relevant anyway; we're assuming all of these clients are operating against an autoversioning repository.

DAV Explorer est un autre client WebDAV autonome, écrit en Java. Il est sous une licence libre de type Apache et est disponible à l'adresse http://www.ics.uci.edu/~webdav/ (site en anglais). Il peut faire tout ce que fait cadaver et a l'avantage d'être portable, ainsi que d'avoir une interface graphique plus conviviale. C'est aussi un des premiers clients à supporter le nouveau protocole "WebDAV Access Control Protocol" (RFC 3744).

Bien sûr, le fait que DAV Explorer supporte les listes de contrôle d'accès (ACL) de DAV Explorer n'a aucun intérêt pour nous, puisque mod_dav_svn ne les supporte pas. Le support limité de certaines commandes DeltaV par cadaver et DAV Explorer n'est pas particulièrement utile non plus puisqu'ils n'autorisent pas les requêtes MKACTIVITY. Mais cela n'est pas pertinent de toute manière ; nous considérons que tous ces clients se connectent à des dépôts avec suivi de versions automatique.

File-Explorer WebDAV Extensions

File-Explorer WebDAV Extensions
Les greffons WebDAV des explorateurs de fichiers

Some popular file explorer GUI programs support WebDAV extensions that allow a user to browse a DAV share as though it was just another directory on the local computer, and to perform basic tree editing operations on the items in that share. For example, Windows Explorer is able to browse a WebDAV server as a “network place.” Users can drag files to and from the desktop, or can rename, copy, or delete files in the usual way. But because it's only a feature of the file explorer, the DAV share isn't visible to ordinary applications. All DAV interaction must happen through the explorer interface.

Certains explorateurs de fichiers avec interface graphique bien connus disposent de greffons pour WebDAV qui permettent à l'utilisateur de parcourir un partage DAV comme si c'était un répertoire sur l'ordinateur local et d'effectuer des opérations de base sur l'arborescence partagée. Par exemple, Windows Explorer est capable de parcourir un serveur WebDAV en tant qu'"emplacement réseau". Les utilisateurs peuvent glisser-déposer des fichiers depuis et vers le bureau, ou peuvent renommer, copier ou effacer des fichiers comme d'habitude. Mais comme cette fonctionnalité est propre à l'explorateur de fichiers, le partage DAV n'est pas visible par les applications ordinaires. Toutes les interactions DAV doivent passer par l'intermédiaire de l'interface de l'explorateur.

Microsoft Web Folders

Microsoft Web Folders
Dossiers Web de Microsoft

Microsoft was one of the original backers of the WebDAV specification, and first started shipping a client in Windows 98, which was known as Web Folders. This client was also shipped in Windows NT 4.0 and Windows 2000.

The original Web Folders client was an extension to Explorer, the main GUI program used to browse filesystems. It works well enough. In Windows 98, the feature might need to be explicitly installed if Web Folders aren't already visible inside My Computer. In Windows 2000, simply add a new “network place,” enter the URL, and the WebDAV share will pop up for browsing.

With the release of Windows XP, Microsoft started shipping a new implementation of Web Folders, known as the WebDAV Mini-Redirector. The new implementation is a filesystem-level client, allowing WebDAV shares to be mounted as drive letters. Unfortunately, this implementation is incredibly buggy. The client usually tries to convert HTTP URLs (http://host/repos) into UNC share notation (\\host\repos); it also often tries to use Windows Domain authentication to respond to basic-auth HTTP challenges, sending usernames as HOST\username. These interoperability problems are severe and are documented in numerous places around the Web, to the frustration of many users. Even Greg Stein, the original author of Apache's WebDAV module, bluntly states that XP Web Folders simply can't operate against an Apache server.

Microsoft faisait partie du groupe de travail sur les spécifications WebDAV et a commencé à livrer un client WebDAV avec Windows 98, sous le nom de « Dossiers Web ». Ce client était également livré avec Windows NT 4.0 et Windows 2000.

Le client originel « Dossiers Web » était une extension de l'explorateur Windows, la principale interface utilisée pour parcourir le système de fichiers. Il fonctionne plutôt bien. Sous Windows 98, l'extension doit être explicitement installée si « Dossiers Web » n'est pas visible dans « Mon Ordinateur ». Sous Windows 2000, ajoutez simplement un nouveau « Favori réseau », entrez l'URL et le partage WebDAV apparaîtra, prêt à être parcouru.

Avec la sortie de Windows XP, Microsoft a commencé à livrer une nouvelle version de « Dossiers Web », connu sous le nom de mini-redirecteur WebDAV. Cette nouvelle implémentation est un client permettant au niveau du système de fichiers de monter les partages WebDAV en tant que lecteurs réseau. Malheureusement, cette implémentation est incroyablement boguée. Le client essaie généralement de convertir les URL HTTP (http://hote/depot) en notation UNC (\\hote\depot) ; il essaie aussi souvent d'utiliser l'authentification de domaine Windows pour répondre aux défis d'authentification de la méthode basic-auth d'HTTP en envoyant les identifiants sous la forme HOTE\identifiant. Ces problèmes d'interopérabilité sont graves et sont décrits un peu partout sur le Web, à la grande frustration de beaucoup d'utilisateurs. Même Greg Stein, l'auteur initial du module Apache WebDAV, affirme sèchement que les « Dossiers Web » de Windows XP ne peuvent tout simplement pas fonctionner avec un serveur Apache.

Windows Vista's initial implementation of Web Folders seems to be almost the same as XP's, so it has the same sort of problems. With luck, Microsoft will remedy these issues in a Vista Service Pack.

However, there seem to be workarounds for both XP and Vista that allow Web Folders to work against Apache. Users have mostly reported success with these techniques, so we'll relay them here.

On Windows XP, you have two options. First, search Microsoft's web site for update KB90730, “Software Update for Web Folders.” This may fix all your problems. If it doesn't, it seems that the original pre-XP Web Folders implementation is still buried within the system. You can unearth it by going to Network Places and adding a new network place. When prompted, enter the URL of the repository, but include a port number in the URL. For example, you should enter http://host/repos as http://host:80/repos instead. Respond to any authentication prompts with your Subversion credentials.

La version initiale des « Dossiers Web » de Windows Vista semble être pratiquement la même que celle de Windows XP et les problèmes sont donc les mêmes. Avec de la chance, Microsoft corrigera ces problèmes dans un Service Pack de Vista.

Cependant, il semble qu'il existe des solutions de contournement, à la fois pour XP et pour Vista, qui permettent aux « Dossiers Web » de fonctionner avec un serveur Apache. Les témoignages des utilisateurs de ces solutions sont majoritairement positifs, c'est pourquoi nous les signalons ici.

Avec Windows XP, vous avez deux options : la première, chercher sur le site Web de Microsoft le correctif KB907306, « Mise à jour de logiciels pour les dossiers Web ». Ceci devrait résoudre vos problèmes. Si ce n'est pas le cas, il semble que la version originale pré-XP des « Dossiers Web » soit toujours fournie avec le système. Vous pouvez la déterrer en allant sur « Favoris Réseau » et en ajoutant un nouveau « Favori réseau ». Quand le système vous demandera d'entrer une URL, saisissez l'URL du dépôt en incluant un numéro de port dans cette URL. Par exemple, vous devrez entrer http://hote:80/depot au lieu de http://hote/depot. Répondez ensuite avec vos identifiants Subversion à toute demande d'authentification.

--Hotshot92 17 mai 2009 à 00:02 (CEST): Le correctif semble être le KB907306 et non KB90730

On Windows Vista, the same KB90730 update may clear everything up. But there may still be other issues. Some users have reported that Vista considers all http:// connections insecure, and thus will always fail any authentication challenges from Apache unless the connection happens over https://. If you're unable to connect to the Subversion repository via SSL, you can tweak the system registry to turn off this behavior. Just change the value of the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel key from 1 to 2. A final warning: be sure to set up the Web Folder to point to the repository's root directory (/), rather than some subdirectory such as /trunk. Vista Web Folders seems to work only against repository roots.

In general, while these workarounds may function for you, you might get a better overall experience using a third-party WebDAV client such as WebDrive or NetDrive.

Avec Windows Vista, le même correctif KB907306 devrait faire l'affaire. Mais il est possible qu'il reste d'autres problèmes. Certains utilisateurs rapportent que Vista considère toute connexion http:// comme non sécurisée et fera donc échouer toute tentative d'authentification avec Apache à moins que la connexion n'utilise https://. Si vous ne pouvez pas vous connecter à un dépôt Subversion en SSL, vous pouvez modifier la base de registre du système pour inhiber ce comportement. Changez uniquement la valeur de la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel de 1 à 2. Et finalement, en guise d'avertissement : assurez-vous de faire pointer votre favori réseau vers le répertoire racine du dépôt, plutôt que vers un sous-répertoire comme /trunk. Les « Dossiers Web » de Vista semblent ne fonctionner qu'avec les répertoires racines des dépôts.

En général, et bien que ces astuces puissent fonctionner pour vous, vous aurez peut-être un meilleur service en utilisant un client WebDAV tiers tel que WebDrive ou NetDrive.

Nautilus, Konqueror

Nautilus, Konqueror
Nautilus, Konqueror

Nautilus is the official file manager/browser for the GNOME desktop (http://www.gnome.org), and Konqueror is the manager/browser for the KDE desktop (http://www.kde.org). Both of these applications have an explorer-level WebDAV client built in, and they operate just fine against an autoversioning repository.

In GNOME's Nautilus, select the File→Open location menu item and enter the URL in the dialog box presented. The repository should then be displayed like any other filesystem.

In KDE's Konqueror, you need to use the webdav:// scheme when entering the URL in the location bar. If you enter an http:// URL, Konqueror will behave like an ordinary web browser. You'll likely see the generic HTML directory listing produced by mod_dav_svn. When you enter webdav://host/repos instead of http://host/repos, Konqueror becomes a WebDAV client and displays the repository as a filesystem.

Nautilus est l'explorateur/navigateur de fichiers officiel du bureau GNOME (http://www.gnome.org) et Konqueror est l'explorateur/navigateur de fichiers officiel du bureau KDE (http://www.kde.org). Ces deux applications disposent d'un client WebDAV intégré dans l'explorateur de fichiers et elles peuvent se connecter sans problème à un dépôt utilisant le suivi de versions automatique.

Dans Nautilus (GNOME), choisissez l'élément de menu Fichier→Ouvrir un emplacement et entrez l'URL dans la boîte de dialogue qui s'affiche. Le dépôt s'affichera alors comme n'importe quel autre système de fichiers.

Dans Konqueror (KDE), vous devez utiliser la syntaxe webdav:// pour entrer une URL dans la barre d'adresse. Si vous entrez une URL en http://, Konqueror se comportera comme un navigateur classique. Vous risquez alors de voir le contenu du répertoire dans une page HTML classique produite par mod_dav_svn. Si vous entrez webdav://hote/depot à la place de http://hote/depot, Konqueror devient un client WebDAV et affiche le dépôt comme un système de fichiers.

WebDAV Filesystem Implementation

WebDAV Filesystem Implementation
Implémentations de WebDAV en système de fichiers

The WebDAV filesystem implementation is arguably the best sort of WebDAV client. It's implemented as a low-level filesystem module, typically within the operating system's kernel. This means that the DAV share is mounted like any other network filesystem, similar to mounting an NFS share on Unix or attaching an SMB share as a drive letter in Windows. As a result, this sort of client provides completely transparent read/write WebDAV access to all programs. Applications aren't even aware that WebDAV requests are happening.

L'implémentation en système de fichiers peut être considérée avec raison comme le meilleur type de client WebDAV. Il est alors implanté en tant que module bas-niveau, généralement au sein du noyau du système d'exploitation. Cela signifie qu'un partage DAV est monté comme tout autre système de fichiers en réseau, de la même manière qu'un partages NFS est monté sous Unix ou qu'un lecteur réseau est affecté à un partage SMB sous Windows. Au final, ce type de client fournit l'accès WebDAV en lecture/écriture de manière transparente à tous les programmes. Les applications ne sont même pas conscientes des requêtes WebDAV qu'elles génèrent.

WebDrive, NetDrive

WebDrive, NetDrive
WebDrive, NetDrive

Both WebDrive and NetDrive are excellent commercial products that allow a WebDAV share to be attached as drive letters in Windows. As a result, you can operate on the contents of these WebDAV-backed pseudodrives as easily as you can against real local hard drives, and in the same ways. You can purchase WebDrive from South River Technologies (http://www.southrivertech.com). Novell's NetDrive is freely available online, but requires users to have a NetWare license.

WebDrive et NetDrive sont tous deux d'excellents produits commerciaux qui permettent, sous Windows, d'affecter un lecteur réseau à un partage WebDAV. Vous pouvez ainsi effectuer des opérations sur ces pseudo-lecteurs WebDAV aussi facilement et de la même manière que sur un disque dur local. Vous pouvez vous procurer WebDrive auprès de South River Technologies (http://www.southrivertech.com). NetDrive de Novell est disponible gratuitement en ligne mais exige d'avoir une licence Netware.

Mac OS X

Mac OS X
Mac OS X

Apple's OS X operating system has an integrated filesystem-level WebDAV client. From the Finder, select the Go→Connect to Server menu item. Enter a WebDAV URL, and it appears as a disk on the desktop, just like any other mounted volume. You can also mount a WebDAV share from the Darwin terminal by using the webdav filesystem type with the mount command:

Le système d'exploitation OS X d'Apple possède un client WebDAV intégré sous forme de système de fichiers. Depuis le Finder, choisissez l'élément de menu "Go→Connect to Server". Entrez l'URL WebDAV et elle apparaît en tant que disque sur le bureau, comme tout autre volume monté. Vous pouvez également monter un partage WebDAV depuis le terminal Darwin en utilisant le type de système de fichiers « webdav » avec la commande mount :
$ mount -t webdav http://svn.example.com/repos/project /some/mountpoint
$
$ mount -t webdav http://svn.exemple.com/depot/projet /mon/point/de/montage
$

Note that if your mod_dav_svn is older than version 1.2, OS X will refuse to mount the share as read/write; it will appear as read-only. This is because OS X insists on locking support for read/write shares, and the ability to lock files first appeared in Subversion 1.2.

Also, OS X's WebDAV client can sometimes be overly sensitive to HTTP redirects. If OS X is unable to mount the repository at all, you may need to enable the BrowserMatch directive in the Apache server's httpd.conf:

Notez que si votre mod_dav_svn est plus ancien que la version 1.2, OS X refusera de monter le partage en lecture/écriture ; il apparaîtra en lecture seule. C'est parce que OS X exige le verrouillage pour les partages en lecture/écriture, et la possibilité de verrouiller des fichiers n'est apparue que dans Subversion 1.2.

Par ailleurs, le client WebDAV d'OS X peut de temps en temps se montrer très sensible aux redirections HTTP. Si OS X est incapable de monter le dépôt, vous devrez peut-être activer la directive BrowserMatch dans le fichier httpd.conf du serveur Apache :
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully

Linux davfs2

Linux davfs2
davfs2 (Linux)

Linux davfs2 is a filesystem module for the Linux kernel, whose development is organized at http://dav.sourceforge.net/. Once you install davfs2, you can mount a WebDAV network share using the usual Linux mount command:

davfs2 est un module de système de fichiers du noyau Linux. Le projet est hébergé à l'adresse http://dav.sourceforge.net/. Une fois davfs2 installé, vous pouvez monter un partage réseau WebDAV en utilisant la commande mount habituelle de Linux:
$ mount.davfs http://host/repos /mnt/dav
$ mount.davfs http://hote/depot /mnt/dav

NOTE DE FIN DE CHAPITRE

[61] WebDAV support was removed from Microsoft Access for some reason, but it exists in the rest of the Office suite.

[61] Microsoft a décidé de supprimer le support WebDAV d'Access mais il existe toujours pour le reste de la suite Office.