On Tue, Oct 9, 2012 at 12:39 PM, C. Michael Pilato <cmpil...@collab.net> wrote:
> On 10/05/2012 05:48 PM, Ben Reser wrote:
>> On Fri, Oct 5, 2012 at 7:12 AM, C. Michael Pilato <cmpil...@collab.net> 
>> wrote:
>>> That's right.  Expat just doesn't care.  Some other XML parser might.  But
>>> then, I would expect that same parser would croak on any property name with
>>> a colon in it (besides "svn:", which we handle specially already).  So all
>>> of TortoiseSVN's properties, cvs2svn's properties, etc. -- all that stops
>>> working.
>>
>> [snip]
>>
>>> I don't think so.  I think that would be just a lovely instance of the
>>> perfect being the enemy of the good [enough].  If it becomes a real-world
>>> problem, our recourse is rather straightforward -- we continue our move away
>>> from the DAV standard and implement our own custom POST/REPORT handling.
>>
>> My memory is fuzzy on this and it's been 5-6 years but ISTR that the
>> problem was with people using auto versioning since the XML wouldn't
>> be valid.
>>
>> -1: On just doing this and hoping for the best.  If it really is auto
>> versioning that breaks due to this, it is a supported feature of our
>> code set and not one that I suspect any of us test very often.  If we
>> test auto versioning with the most commonly used configs and we have
>> no issues then I'd be +0.
>
> Just some thoughts/comments in no particular order:
>
> - IIRC, autoversioning clients are broken in this respect anyway, and simply
> can't be fixed because Subversion's property storage namespace is flat and
> WebDAV's is all ns&name's.  We could store autoversioning client-generated
> properties with URI-ish names (ns + "/" + uri_encode(name)) or something,
> but we've historically just silently dumped the namespaces for properties
> from those clients.  Autoversioning clients also won't care about my
> svn:txn: properties because those only exist on transactions and revisions,
> which are resource types that autoversioning clients don't care about.
> (They focus on the directory trees.)
>
> - Last week I went ahead and started looking into revamping our propget/set
> DAV protocol so that this problem no longer exists for HTTPv2 clients.  This
> is fairly trivial work, but also seems less useful overall.  If a client is
> speaking HTTPv2, it's already doing Subversion-specific stuff and not strick
> DAV compliance, so it surely is capable of gracefully dealing with our
> current broken handling of colon-bearing properties.
>
> - Yesterday I started coding a more generic approach to colon-bearing
> properties.  libsvn_ra_serf and mod_dav_svn now relay xmlns mappings of a
> dynamically generated prefix to a URI which is a child of a fixed
> "extensible xmlns URI".  So a property such as "svn:config:foo" gets
> transmitted as "<svn0:foo>" (or "<svn1:foo>", or "<svn2:foo>" ...) with a
> prior declaration that the "svn0" prefix maps to the namespace
> "http://subversion.apache.org/xmlns/ext/svn:config";.  So long as both ends
> of the wire know what's so special about that namespace URI (as they
> currently do with the "svn", "dav", and "custom" namespace URIs we employ),
> stuff seems to generally work.  I'll toss this work onto a branch a bit
> later, because I've not done any extensive testing and I'm not convinced
> that doing so is the best use of my time.
>
> - I will revert my use of svn:txn:* for ephemeral txnprops, and will
> formally recommend to Paul that he switch to svn:config-* for his
> autoprops-sdc branch.

Done r1396184.

-- 
Paul T. Burba
CollabNet, Inc. -- www.collab.net -- Enterprise Cloud Development
Skype: ptburba

> At a minimum, those changes will not effect the
> existing WebDAV property support levels at all, and that's probably for the
> best at this phase of the release cycle.
>
> --
> C. Michael Pilato <cmpil...@collab.net>
> CollabNet   <>   www.collab.net   <>   Enterprise Cloud Development

Reply via email to