Interoperabilidad de autoversionado

En esta sección describiremos los clientes WebDAV genéricos más comunes (al momento de escribir esto), y qué tan bien operan con un servidor mod_dav_svn usando la directiva SVNAutoversioning. El RFC 2518 es un poco largo, y tal vez demasiado flexible. Cada cliente WebDAV se comporta ligeramente diferente, y esto crea problemas ligeramente diferentes.

WebFolders Win32

Windows 98, 2000, y XP tienen un cliente integrado WebDAV conocido como WebFolders. En Windows 98, esta característica puede necesitar ser instalada de manera explícita; si está presente, un directorio WebFolders aparece directamente dentro de Mi PC. En Windows 2000 y XP, simplemente abra Mis Sitios de Red, y ejecute el icono Añadir Sitio de Red. Cuando se le solicite, ingrese la URL WebDAV. La carpeta compartida aparecerá dentro de Mis Sitios de Red.

Muchas de las operaciones de escritura funcionan bien con un servidor de autoversionado mod_dav_svn, pero hay unos cuantos problemas:

  • Si un computador Windows XP es miembro de un dominio NT, parece ser incapaz de conectarse a la carpeta compartida WebDAV. Pide repetidamente el nombre y contraseña, aún cuando el servidor Apache no está presentando un reto de autenticación! Si la máquina no es parte de un dominio NT, entonces la carpeta compartida es montada sin ningún problema.

    Este problema parece surgir de los cambios en la manera en que Windows XP crea accesos directos WebFolder (archivos .lnk). Algunas veces reemplaza la URL de la carpeta compartida WebDAV con una ruta Windows UNC (Universal Naming Convention). Esto hace que Explorer intente hacer la conexión usando SMB en vez de HTTP.

    Una manera de resolver el problema es crear el acceso directo .lnk en un computador Windows 2000 y luego copiar el acceso directo al computador Windows XP. Porbablemente también sería posible arreglar el acceso directo usando un editor HEX, si se fuera a hacer ingeniería inversa sobre el formato de archivo .lnk.

  • Un archivo no puede ser abierto para edición directamente sobre la carpeta compartida; siempre es de sólo lectura. La técnica mod_dav_lock no ayuda, porque los WebFolders no usan el método LOCK en absoluto. Sin embargo, el método copiar, editar, re-copiar, mencionado anteriormente, funciona. El archivo en la carpeta compartida puede ser sobreescrito exitosamente por una copia editada localmente.

Mac OS X

El sistema operativo de Apple, OS X, tiene un cliente WebDAV integrado. Desde Finder, seleccione el ítem Conectar a servidor desde el menú Ir. Ingrese una URL WebDAV, y ésta aparecerá como un disco en el escritorio, como cualquier servidor de archivos. [60]

Desafortunadamente, este cliente se rehúsa a trabajar con autoversionado mod_dav_svn debido a la falta de soporte de LOCK. Mac OS X descubre la falta de LOCK durante el intercambio de las características HTTP OPTIONS, y debido a esto monta el repositorio Subversion como una carpeta compartida de sólo lectura. Desupés de esto, no es posible hacer operaciones de escritura en absoluto. Para montar el repositorio como una carpeta compartida de lectura-escritura, usted debe usar el truco con mod_dav_lock como se discutión previamente. Una vez el bloqueo parezca trabajar, la carpeta compartida se comporta bastante bien: los archivos pueden abrirse directamente para lectura/escritura, aunque cada operación de guardado hará que el cliente haga un PUT a una ubicación temporal, un DELETE del archivo original, y un MOVE del recurso temporal al nombre de archivo original. ¡Ésas son tres revisiones Subversion nuevas en cada guardado!

Una palabra de advertencia: El cliente WebDAV de OS X puede ser demasiado sensitivo a las redirecciones HTTP. Si usted no puede montar el repositorio en absoluto, puede que necesite habilitar la directiva BrowserMatch en su httpd.conf:

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

Unix: Nautilus 2

Nautilus es el administrador/explorador de archivos oficial del escritorio GNOME. Su página principal está en http://www.gnome.org/projects/nautilus/. Sólo con escribir una URL WebDAV en la ventana de Nautilus, la carpeta DAV aparece como un sistema de archivos local.

En general, Nautilus 2 trabaja razonablemente bien con un mod_dav_svn que haga autoversionado, con las siguientes precauciones:

  • Cualquier archivo abierto directamente desde la carpeta compartida es tratado como de sólo lectura. Aún el truco con mod_dav_lock parece no tener efecto. Parece que Nautilus nunca llama el método LOCK en absoluto. El truco copiar localmente, editar, copiar de vuelta funciona, sin embargo. Desafortunadamente, Nautilus sobreescribe el archivo viejo llamando a DELETE primero, lo que crea una revisión extra.

  • Cuando se sobreescribe o se crea un archivo, Nautilus hace primero un PUT de un archivo vacío, y luego lo sobreescribe con un segundo PUT. Esto crea dos revisiones en el sistema de archivos Subversion, en vez de una sola.

  • Cuando se borra una colección, se llama un DELETE HTTP en cada hijo individual en vez de hacerlo sobre toda la colección. Esto crea un montón de revisiones nuevas.

Linux davfs2

Linux davfs2 es un módulo de sistema de archivos para el kernel de Linux, cuyo desarrollo se ubica en http://dav.sourceforge.net/. Una vez instalado, una carpeta WebDAV compartida puede ser montada con el comando estándar de Linux mount.

Se dice en las calles que este cliente DAV no funciona en absoluto con el autoversionado de mod_dav_svn. Cada intento de escribir al servidor es precedido por una solicitud LOCK, que mod_dav_svn, no soporta. En este momento, no hay datos que indiquen si el uso de mod_dav_lock resuelva este problema.



[60] Los usuarios de Unix también pueden ejecutar mount -t webdav URL /mountpoint.