• Client Interoperability

    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 and a quick description of some common pieces of WebDAV-enabled software. More details about these software offerings, as well as their general category, can be found in the sections that follow.

    Table C.1. Common WebDAV Clients

    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
    Macromedia 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 KonquerorFile-explorer WebDAV extension XGUI file explorer able to perform tree operations on a WebDAV share
    Mac OS XWebDAV filesystem implementation X Operating system 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 file system driver that allows you to mount a WebDAV share

    Standalone WebDAV applications

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

    Microsoft Office, Dreamweaver, Photoshop

    On Windows, there are several well-known applications that contain integrated WebDAV client functionality, such as Microsoft's Office, [63] Adobe's Photoshop, and Macromedia's 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 the 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.

    Cadaver, DAV Explorer

    Cadaver is a bare-bones Unix commandline 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 commandline FTP program, and thus it's extremely useful for basic WebDAV debugging. It can be used to upload or download files in a pinch, and also to examine properties, and to copy, move, lock or unlock files:

    $ 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.
    

    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/. DAV Explorer 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.

    File-explorer WebDAV extensions

    Some popular file explorer GUI programs support WebDAV extensions which allow a user to browse a DAV share as if 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.

    Microsoft Web Folders

    Microsoft was one of the original backers of the WebDAV specification, and first started shipping a client in Windows 98, known as “Web Folders”. This client was also shipped in Windows NT4 and 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 documented in numerous places around the web, to the frustration of many users. Even Greg Stein, the original author of Apache's WebDAV module, recommends against trying to use XP Web Folders against an Apache server.

    It turns out that the original “Explorer-only” Web Folders implementation isn't dead in XP, it's just buried. It's still possible to find it by using this technique:

    1. Go to 'Network Places'.

    2. Add a new network place.

    3. When prompted, enter the URL of the repository, but include a port number in the URL. For example, http://host/repos would be entered as http://host:80/repos instead.

    4. Respond to any authentication prompts.

    There are a number of other rumored workarounds to the problems, but none of them seem to work on all versions and patchlevels of Windows XP. In our tests, only the previous algorithm seems to work consistently on every system. The general consensus of the WebDAV community is that you should avoid the new Web Folders implementation and use the old one instead, and that if you need a real filesystem-level client for Windows XP, then use a third-party program like WebDrive or NetDrive.

    A final tip: if you're attempting to use XP Web Folders, make sure you have the absolute latest version from Microsoft. For example, Microsoft released a bug-fixed version in January 2005, available at http://support.microsoft.com/?kbid=892211. In particular, this release is known to fix a bug whereby browsing a DAV share shows an unexpected infinite recursion.

    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 operate just fine against an autoversioning repository.

    In GNOME's Nautilus, from the File menu, select Open location and enter the URL. 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. By entering webdav://host/repos instead of http://host/repos, Konqueror becomes a WebDAV client and displays the repository as a filesystem.

    WebDAV filesystem implementation

    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 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.

    WebDrive, NetDrive

    Both WebDrive and NetDrive are excellent commercial products which allow a WebDAV share to be attached as drive letters in Windows. We've had nothing but success with these products. At the time of writing, WebDrive can be purchased from South River Technologies (http://www.southrivertech.com). NetDrive ships with Netware, is free of charge, and can be found by searching the web for “netdrive.exe”. Though it is freely available online, users are required to have a Netware license. (If any of that sounds odd to you, you're not alone. See this page on Novell's website: http://www.novell.com/coolsolutions/qna/999.html)

    Mac OS X

    Apple's OS X operating system has an integrated filesystem-level WebDAV client. From the Finder, select the Connect to Server item from the Go menu. 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:

    $ mount -t webdav http://svn.example.com/repos/project /some/mountpoint
    $
    

    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.

    One more word of warning: 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:

    BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
    

    Linux davfs2

    Linux davfs2 is a filesystem module for the Linux kernel, whose development is located at http://dav.sourceforge.net/. Once installed, a WebDAV network share can be mounted with the usual Linux mount command:

    $ mount.davfs http://host/repos /mnt/dav
    


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


    The Version Control with Subversion book is licensed under the Creative Commons Attribution License v2.0.
    To submit comments, corrections, or other contributions to the text, please visit http://www.svnbook.com.