[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] Peg revision support for svn:externals

From: Hyrum K. Wright <hyrum_wright_at_mail.utexas.edu>
Date: 2007-03-08 03:46:01 CET

Hyrum K. Wright wrote:
> Michael Sinz wrote:
>> On 2/28/07, C. Michael Pilato <cmpilato@collab.net> wrote:
>>> Hyrum K. Wright wrote:
>>>> Does anybody have any other comments on the backwards compatibility
>>>> implications here? I'm leaning toward the "this is just a little too
>>>> much breakage" side of the things (though I could be convinced
>>> otherwise
>>>> :), and I'm planning on putting this in the issue tracker for 2.0.
>>> What if we did the following (WARNING, I'm in a weird mood):
>>>
>>> I almost always mess up the setting of the svn:externals property the
>>> first
>>> time because the order of the "arguments"...
>>>
>>> target-dir [-rM] http://.../path/to/checkout
>>>
>>> ...is exactly the opposite of the typical checkout command-line
>>> syntax. So
>>> what if we declared a new version of the syntax, that looked like this:
>>>
>>> http://.../path/to/checkout[@PEG-REV] [-rM] target-dir
>>>
>>> (or maybe)
>>>
>>> [-rM] http://.../path/to/checkout[@PEG-REV] target-dir
>> I like this one as it is obvious as to it being different (options first)
>> plus it very much matches the "usual" svn command line order.
>>
>> Anyway, the point is that a) you'd be able to detect the new format using
>>> svn_path_is_url() checks on the arguments, and b) now folks can verify
>>> their
>>> externals definitions by tacking them onto the end of 'svn checkout' at
>>> the
>>> command-line.
>>>
>>> Thoughts? Tomatoes?
>>
>> Actually, no tomatoes but a nice, large apple :-) To me, at least, this
>> would allow for backwards compatibility with older externals. The only
>> issue left is what this does to older clients. If it fails "cleanly" (no
>> pollution of the WC) then that is reasonable. I guess that it requires
>> some
>> testing to validate that.
>
> Thanks for the comments!
>
> My 1.3.2 client errors out cleanly on both of CMike's suggestions, but
> in different ways. Using the first syntax, I get an error when
> updating, but when using the second syntax, I get an error when
> attempting to set the svn:external property.
>
> I like the second error mode better, because it prevents somebody from
> setting a bogus property that their client can't understand. They may
> still pull one down as part of an update from some other client (which I
> haven't tested), but at least it eliminates their ability to set it locally.
>
> Although, I prefer the first suggestion syntactically, it leaves junk
> laying around in the WC after it fails. I'm going to go ahead and
> implement the second version.

Well, after playing around with that, and running into a few deadends,
another thought occurred to me. Instead of inventing a new syntax, why
don't we just set the peg revision equal to the provided revision if no
peg revision exists, and apply the normal resolution rules when a peg
revision is given? This would maintain backward compatibility, without
having to introduce another syntax.

-Hyrum

Received on Thu Mar 8 03:46:57 2007

This is an archived mail posted to the Subversion Dev mailing list.