[PATCH 1 of 2] subrepo: look for local pull source first

Didly didlybom at gmail.com
Fri Mar 25 15:29:18 CDT 2011


On Fri, Mar 25, 2011 at 5:45 PM, Matt Mackall <mpm at selenic.com> wrote:

> On Fri, 2011-03-25 at 17:27 +0100, Martin Geisler wrote:
> > Matt Mackall <mpm at selenic.com> writes:
> >
> > > On Fri, 2011-03-25 at 16:07 +0100, Martin Geisler wrote:
> > >> # HG changeset patch
> > >> # User Martin Geisler <mg at aragost.com>
> > >> # Date 1300989966 -3600
> > >> # Node ID a8019f68e1463d6b1d5406f5f22d17f9aa8c828c
> > >> # Parent  e45780ac829283080ad6b5a5e064e59a163c08d6
> > >> subrepo: look for local pull source first
> > >>
> > >> With this change, a subrepository will always try to find the
> > >> changesets it needs in a repository relative to the pull source of the
> > >> top-most parent repository. So if we have
> > >>
> > >>   repo/
> > >>     sub/
> > >>
> > >> and make a clone with 'hg clone repo clone', then clone/sub will pull
> > >> in changesets from repo/sub, regardless of what the .hgsub file says.
> > >
> > > There's a lot that's weird with this.
> > >
> > > Consider how completely different the behavior will be if you manually
> > > run hg pull in a subrepo vs having the subrepo code do it for you. I
> > > think this issue by itself is a show-stopper.
> >
> > It is not really different from what happens today if you do
> >
> >   $ hg pull --update /foo
>
> Show is still stopped. Address the point I raised, pleased. It makes
> absolutely no sense for a manual pull in a subrepo directory to do
> something completely different BY DEFAULT than what an automatic pull of
> the same repo via the subrepo code would do BY DEFAULT. That can only
> cause problems.
>
> Pull --update <some arg> is a completely different beast that is
> explicitly overriding the defaults.
>
> --
> Mathematics is the supreme nostalgia of our time.
>
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
>

Matt,

you are right that this does not make much sense but it is actually exactly
what happens today!

When I started using suprepos the most surprising thing for me was that the
pull source for the subrepos was not the default pull source specified in
the subrepo .hgrc file, but instead that it was set in stone in the .hgsub
file.

The result of this (weird, IMHO) design is that as you just said pulling
from within a subrepo my use a completely different source that would be use
when pulling that same subrepository through a pull operation on its parent
repository! This is I think a big gotcha of the current suprepo
implementation.

I always wondered why isn't it possible have an .hgsub file in which no pull
source is set. In that case mercurial could do what Martin is suggesting,
i.e. use the subrepo default pull source.

Angel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20110325/ab9c56e7/attachment.htm>


More information about the Mercurial-devel mailing list