Colocated branch support progress - preserving characters in URLs
Martin Pool
mbp at canonical.com
Thu Aug 4 07:04:45 UTC 2011
On 3 Aug 2011, Jelmer Vernooij <jelmer at canonical.com> wrote:
> The ability to address colocated branches using URLs has long been in
> progress (https://bugs.launchpad.net/bugs/380871). After brainstorming a
> bit with John and Martin at the recent Launchpad sprint, I'm finally
> back on track hacking on it.
>
> There are basically four things left to do now:
>
> 1) Avoid URLescaping comma's when converting local paths to URLs.
> (lp:~jelmer/bzr/escape-comments)
> 2) Preserve the distinction between literal and delimiting comma's in
> URLs when they are parsed in e.g. ConnectedTransport (2)
> 3) Parse the subsegment parameters for Transports and make them
> accessible (done, lp:~jelmer/bzr/transport-segments)
> 4) Look at the transport segment parameters in ControlDir and use them
> to determine the default branch (this should be fairly easy)
>
> I'm wondering how exactly to do (2). At the moment when we receive a URL
> we parse it and then urlunescape all characters. Among other things,
> this means that urlencoded characters won't be distinguisable from
> literal characters.
>
> So far, this distinction hasn't really mattered as we didn't have a
> different interpretation for them.
>
> To make sure we don't lose this information, I would like to stop
> urlunescaping things like ConnectedTransport._path,
> ConnectedTransport._username, etc and instead urlunescape it later. Does
> that seem reasonable, or is there perhaps a better way to work around
> the current limitations I haven't considered?
Maybe another way is to say that _unsplit_url (or something similar)
should return a more-structured path object that contains information
about path parameters - it can handle splitting them out at the same
time it does the other unescaping?
Also, since it now has about 6 return values, perhaps it should be
superseded by a function that returns a ParsedURL with named fields (or
something.)
--
Martin
More information about the bazaar
mailing list