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

Matt Mackall mpm at selenic.com
Tue Oct 20 22:32:07 UTC 2009


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)?

-- 
http://selenic.com : development and support for Mercurial and Linux





More information about the Mercurial-devel mailing list