In the implementations of svn_fs_get_mergeinfo, make sure that the
[svn.git] / notes / autoversion-compatibility.txt
blob4cb1f6f091a8818325f21aa1e7c1778d18529496
2 Here's the status of how well SVNAutoversioning works against various
3 DAV clients.  Feel free to update this as we learn more.
5 First, a general note: the one big feature we're lacking is support
6 for the LOCK and UNLOCK dav requests.  This pretty much means that you
7 won't be able to open a file (in write mode) directly from the dav
8 share; every client tries to LOCK in that case.  [Note: mod_dav_lock
9 in httpd-2.1 addresses this.]
11 The workaround, for now, is to copy (or drag) the file out of the
12 share, edit it, then copy (or drag) it back.
15 The basic set of tests
16 ======================
18 1. Add new file     (PUT)
19 2. Add new folder   (MKCOL)
20 3. Rename a file    (MOVE)
21 4. Rename a folder  (MOVE)
22 5. Copy a file      (COPY)
23 6. Copy a folder    (COPY)
24 7. Delete a file    (DELETE)
25 8. Delete a folder  (DELETE)
26 9. Open remote file directly  (LOCK)
27 10. Copy/drag remote file to local disk (GET)
28 11. Copy/drag local file back on top of remote file. 
29                             (PUT, or DELETE/PUT, or LOCK, PUT, UNLOCK)
33 Nautilus 2.X  (tested by sussman and ttimo)
34 ============
36 1. Add new file     (PUT)
38    Check:  but it does two PUTS instead of one.  First it PUTs an
39    empty file, then PUTs data into it.  So we get two new revisions.
41 2. Add new folder   (MKCOL)
43    Check.
45 3. Rename a file    (MOVE)
47    Check.
49 4. Rename a folder  (MOVE)
51    Check.
53 5. Copy a file      (COPY)
55    Can't figure out how to make Nautilus issue a COPY command.  If I
56    control-drag to copy, or if I right-click to copy/paste, it still
57    ends up doing two PUTs, just like in test #1.
59 6. Copy a folder    (COPY)
61    If I right-click to copy/paste, it creates *N* new revisions:  one
62    MKCOL, followed by two PUTs per file, ugh.
64 7. Delete a file    (DELETE)
66    Check.
68 8. Delete a folder  (DELETE)
70    Ugh.  It creates N new revisions by issuing a separate DELETE
71    request for every item in the subtree, then finishing with a DELETE
72    on the dir itself.  Isn't just the final DELETE needed?  We should
73    send a patch to Nautilus.
75 9. Open remote file directly  (LOCK)
77    Opens file as read-only, but it never tries to just GET.  I wonder
78    if this dav implementation is simply feature-incomplete.  Maybe it
79    just opens files as read-only no matter what...?
81 10. Copy/drag remote file to local disk (GET)
83    Check.
85 11. Copy/drag local file back on top of remote file. 
86                             (PUT, or DELETE/PUT, or LOCK, PUT, UNLOCK)
88    DELETEs old file, PUTs twice.  Yucky.
93 Win32 WebFolders (on Win2K-sp3)  (tested by sussman)
94 ================
96 This works pretty well:  the details needs to be filled in below.
98 1. Add new file     (PUT)
99 2. Add new folder   (MKCOL)
100 3. Rename a file    (MOVE)
101 4. Rename a folder  (MOVE)
102 5. Copy a file      (COPY)
103 6. Copy a folder    (COPY)
104 7. Delete a file    (DELETE)
105 8. Delete a folder  (DELETE)
106 9. Open remote file directly  (LOCK)
108 LOCK is not supported by WebFolders.
110 10. Copy/drag remote file to local disk (GET)
111 11. Copy/drag local file back on top of remote file. 
112                             (PUT, or DELETE/PUT, or LOCK, PUT, UNLOCK)
117 OS X   (fitz/thom/sabi/sussman/jerenkrantz)
118 ====
120 OS X's DAV client requires LOCK to do write operations.
122 httpd-2.1 HEAD now has mod_dav_lock.  When used with DavGenericLockDB
123 (part of mod_dav_lock), all operations work as follows:
125 1. Add new file     (PUT)     - Works.
126 2. Add new folder   (MKCOL)   - Works.
127 3. Rename a file    (MOVE)    - Works.
128 4. Rename a folder  (MOVE)    - Works.
129 5. Copy a file      (COPY)    - Works.
130 6. Copy a folder    (COPY)    - Works.
131 7. Delete a file    (DELETE)  - Works.
132 8. Delete a folder  (DELETE)  - Works.
133 9. Open remote file directly  (LOCK) - Works.
134 10. Copy/drag remote file to local disk (GET) - Works.
135 11. Copy/drag local file back on top of remote file.  - Works.
136                             (PUT, or DELETE/PUT, or LOCK, PUT, UNLOCK)
138 Note: The OS X DAV client isn't a speed demon.
140 Note: When using it as a file system and editing it directly (i.e. using
141 vi in the share), the client will PUT the new file as a temporary location,
142 DELETE the old file, MOVE the temp resource to the original file name.  This
143 probably isn't optimal on Apple's part.  It does wonders for the file
144 history.
146 Note: It seems to try to create ._<file> as well.  Implications of this
147 are not yet understood (fitz hinted at AppleDouble as the reason). 
149 Note: If you see a problem mounting the repository, you may need to enable
150 the default BrowserMatch directive in httpd-std.conf for WebDAVFS.
151 (It's included in the default httpd.conf now.)
153 Something like:
155 BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
157 Linux davfs2   (hadaka)
158 ============
160 Apparently this doesn't work at all.  This client always attempts to
161 LOCK before any kind of write operation (PUT, PROPPATCH, etc.).  
162 Talk about paranoid!