Transmitting file data .svnsync: At least one property change failed;
repository is unchanged
svnsync: PROPPATCH of
'/svn-proxy-sync/!svn/wrk/82bb957d-3816-45ed-a262-dadb63d80787/users/jwhiteman/python/cfg/CFG.xml':
207 Multi-Status (http://hood)
I'm able to reproduce (what I assume is) the same problem without svnsync:
1) create a repo, with both svn and http access methods
2) via svn access method create a file, set an "svn:" property, and
commit it, e.g.
svn co svn://snow/test test
cd test/
echo foo > foo.txt
svn add foo.txt
svn ps svn: asdf foo.txt
svn ci -m testing
3) now try to access it via http:
> svn pl http://snow/test/foo.txt
svn: PROPFIND of '/test/!svn/bc/1/foo.txt': 207 Multi-Status (http://snow)
So two questions here:
1) Is this a known issue? (I didn't see it in the bug db.) If not,
can I get a second nomination that this is a bug? (If someone can
point me in the right direction, and if this is likely to be a
somewhat surgical fix, I'd be happy to attempt a patch.)
2) Any recommendations on how to proceed? For the initial sync of
repos I can probably force the issue by svnsync'ing via the svn access
method, but I don't think this will work once I set up write-through
proxying.
Thanks!
Kylo
I'm pretty sure we do NOT have server validation of svn: property names. To
date, most of our svn: properties are for client functionality only, so we
would have been painting ourselves into a corner by having servers validate
those suckers (forcing folks to upgrade servers just to get
server-independent client functionality).
Also, Ben, you read Kylo's mail incorrectly. He didn't create an "svn:asdf"
property. He created an "svn:" property with value "asdf". So *my* guess
is that when mod_dav_svn is converting repository property names (such as
"svn:keywords") into PROPFIND response XML tags (such as "<S:keywords>"),
this "svn:" property is causing an essentially nameless tag ("<S:>") to be
generated and transmitted, which causes the client's XML parser to croak.
--
C. Michael Pilato <cmpi...@collab.net>
CollabNet <> www.collab.net <> Distributed Development On Demand
It seems to me that the 207 message is not an error message seen from Apache, rather an informative message, but that SVN interprets it as an error somehow. I would be glad to find out more about this ........
Sorry for not being able to help out more ....
Geir
"207 Multi-Status" isn't an error at all. It's a code from Apache that
means, "I've got multiple different pieces of status information to provide
to you -- see the response body for details."
In Subversion, those multiple bits of status generally correspond to
individual statii (heh) of property requests. Subversion says, "Apache,
please send me properties 'foo', 'bar', and 'baz' on file.txt." But what if
there's no 'bar' property on that file? Apache can't reply "200 OK",
because all is not well. It can't reply "404 Item Not Found", because some
of the items *were* found. So it replies "207 Multi-Status", and the body
of the response contains the property values and 200 statuses for the
requested properties that actually exist, plus 404 statuses for the
properties that *don't* exist.
Wanna dive in and look into a patch?
But back to the root of my original problem: I can create a "svn:"
property via the svn access method without any errors which then
results in errors when accessed via the http access method. That
seems like a bug, yes? But is the problem that the svn access method
*allows* this bogus property, or that http chokes on it?
I'd be willing to look into a patch if someone more knowledgeable
agrees on what the bug is and can provide some pointers on where to
start.
Kylo
Flip a coin. One could make either argument about the root of the
problem. The bigger question is, if you code to prevent the bogus
property from being set, what will happen when you access a repository
via HTTP which already had those bogus properties set? You've stopped
people from setting them in the future, which is fine - but you still
have to handle the scenario where someone accesses the ones that were
previously set.
The server validates that the properties *it knows about* (e.g., svn:date,
svn:log) have valid values. Last I checked, we don't check either for
"unknown propname" svn:* props or for svn:* props used as versioned props
instead of revprops (or vice versa).
The latter. As far as libsvn_ra is concerned, property names can be any
UTF-8 string (values can be any byte string).
> I'd be willing to look into a patch if someone more knowledgeable
> agrees on what the bug is and can provide some pointers on where to
> start.
>
I don't know mod_dav_svn at all, so I'll let someone else answer here.
Actually .... the svn: in property names should never have been
interpreted as an XML namespace name in the DAV protocol mapping. Now we
have to live with that ...
-- Brane