[PATCH] clone: update to branch of parent for local source repos by default

Adrian Buehlmann adrian at cadifra.com
Tue Oct 20 18:01:45 CDT 2009


On 21.10.2009 00:32, Matt Mackall wrote:
> On Wed, 2009-10-21 at 00:24 +0200, Adrian Buehlmann wrote:
>> On 20.10.2009 22:52, Greg Ward wrote:
>>> On Mon, Oct 19, 2009 at 5:53 PM, Adrian Buehlmann <adrian at cadifra.com> wrote:
>>>> # HG changeset patch
>>>> # User Adrian Buehlmann <adrian at cadifra.com>
>>>> # Date 1255989153 -7200
>>>> # Node ID 56363f62752ecb33134c7272acb7dedd34debc9c
>>>> # Parent  6578bc930174a1d312f4198d36bd43ebcd24cfc2
>>>> clone: update to branch of parent for local source repos by default
>>>>
>>>> (I'm sending this mostly for historic/documentation purposes as Matt has
>>>> mixed feelings about it. It's just amazing how small and effective this
>>>> patch actually is)
>>>>
>>>> would allow to do things like
>>>>
>>>> $ hg clone thg-stable thg-stable-bug1234
>>>> updating to branch stable
>>>> 297 files updated, 0 files merged, 0 files removed, 0 files unresolved
>>>>
>>>> provided thg-stable's parent is at branch 'stable'.
>>>>
>>>> Today, the same can only be achieved by doing
>>>>
>>>> hg clone -U thg-stable thg-stable-bug1234
>>>> cd thg-stable-bug1234
>>>> hg up stable
>>> This patch makes a lot of sense to me.  We're going to be using
>>> Mercurial with lots of named branches, as we maintain different parts
>>> of our code on anywhere from 2 to 10 branches at a time.  (Pesky
>>> customers, wanting bug fixes without full upgrades.)  If I have a
>>> local clone of the 3.8 branch, and I want another local clone for
>>> experimental work, I would just expect 'hg clone' to put it on that
>>> branch.  The fact that this is not the default is entirely
>>> understandable... but I don't really want to have to explain it to my
>>> users!
>>>
>>>> The argument against doing this patch probably is that this would be the
>>>> first time that clone would be influenced by the state of the source _working
>>>> directory_ ("layering violation", as Dirkjan put it).
>>> Bahh!  Layering, shmayering.  Just do whatever is convenient and easy,
>>> right?  ;-)
>>>
>> Since the patch breaks the current spec of clone ("we ignore the src working
>> dir and take default in that case"), would it be acceptable to enable this
>> new sexy behavior with a config option?
>>
>> Maybe (<enter bikeshedding mode>):
>>
>> [ui] cloneparentbranch = True
>>
>> with a default of 'False' if absent.
>>
>> Or a whole new section:
>>
>> [clone]
>> checkoutparentbranch = True
>>
>> Like this, local clone would be guaranteed to continue to clone the default
>> branch out of the box. As it always did.
> 
> Config options that change major behavior are generally frowned upon.
> What happened to your clone -u idea (which has other uses)?
> 

For the record: the idea was

$ hg clone -u stable thg-stable thg-stable-bug1234
updating to branch stable
297 files updated, 0 files merged, 0 files removed, 0 files unresolved

or

hg clone -u rev src dest

which would checkout revision, tag or branch 'rev'.



More information about the Mercurial-devel mailing list