On Thu, Oct 4, 2012 at 5:54 AM, C. Michael Pilato <cmpil...@collab.net> wrote: > On 10/03/2012 03:39 PM, Mark Phippard wrote: >> On Wed, Oct 3, 2012 at 10:51 AM, <cmpil...@apache.org> wrote: >>> Author: cmpilato >>> Date: Wed Oct 3 14:51:36 2012 >>> New Revision: 1393521 >>> >>> URL: http://svn.apache.org/viewvc?rev=1393521&view=rev >>> Log: >>> Use "svn:txn:" as the namespace for ephemeral txnprops, not >>> "svn:txn-". I was operating under this memory of Subversion having >>> trouble with colons in property names, but apparently that memory was >>> either obsolete or altogether bogus. >> >> I was looking at the open Serf issues for 1.8 and saw this: >> >> http://subversion.tigris.org/issues/show_bug.cgi?id=1971 >> >> Is that what you were remembering? >> > > Yes, I believe it was. I remembered that PROPFINDs and PROPPATCHs use the > property name as an XML tag, so we already require that property names be > essentially well-formed XML "Names". The book mentions this, too: > > {{{ > There are some restrictions on the names you can use for properties. A > property name must start with a letter, a colon (:), or an underscore (_); > after that, you can also use digits, hyphens (-), and periods (.) > }}} > > But a picky XML parser would see "svn:txn:foo" or "svn:config:foo" and want > to know about the XML namespaces "svn:txn" and "svn:config", which we don't > bother to describe. There's a fairly straightforward workaround, I think, > where we simply generate xmlns definitions on the fly for all namespaces we > need for that particular request/response. I think this is essentially what > was being described here: > > http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=480154
I recall trying to do that and it wouldn't work. I do believe namespaces is how we resolved it for svn:foo style properties. If we're going to be doing svn:foo:bar style properties then we can probably resolve it for svn:foo properties that way by adding a namespace for them. As I recall there was no clean way to tell the client what the namespace meant. Specifically how do you get from randomnamespacename -> cvs2svn:cvs-rev. The places where we could put that information had other character restrictions that made it difficult.