Re: fetch <repo> <branch>:<branch> fetches tags?

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: fetch <repo> <branch>:<branch> fetches tags?

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:44:08

Brandon Casey [off-list ref] writes:
I expect these to fetch tags automatically (and they do):

   git fetch
   git pull
   git fetch <repo>
   git pull <repo>

I expect these to _not_ fetch tags (and they don't):

   git fetch <repo> <branch>
   git pull <repo> <branch>

But, I did not expect these to fetch tags:

   git fetch <repo> <branch>:<branch>
   git pull <repo> <branch>:<branch>
Sigh... that matches my expectation.

Did we break it when we overhauled "git fetch", or was this an
independent "improvement" that happened long before that?

Re: fetch <repo> <branch>:<branch> fetches tags?

From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:44:08

Junio C Hamano [off-list ref] wrote:
Brandon Casey [off-list ref] writes:
quoted
But, I did not expect these to fetch tags:

   git fetch <repo> <branch>:<branch>
   git pull <repo> <branch>:<branch>
Sigh... that matches my expectation.

Did we break it when we overhauled "git fetch", or was this an
independent "improvement" that happened long before that?
I think during the git-fetch builtin marathon this got implemented,
but probably as a feature masquerading as a bug fix and we didn't
notice the regression.

The theory behind the expectation here is if we are fetching the
object to a tracking ref then we probably want to watch it in
the future.  If we want to watch it and tag following was allowed,
and we are missing a tag, we should follow the tag if we have the
object graph under the tag complete.

Now what should:

	git pull <repo> <branch1>:<branch1> <branch2>

do, especially if <branch2> is referring to an object that you don't
already have, that object also isn't reachable through <branch1>,
but <branch2>^0 is the target of a tag <tag2> that you don't have?
Should we get the tag anyway?

Personally I'd expect us to skip the tag pointing at <branch2>^0,
based upon my description above, but I have a feeling we'd follow
it anyway, as tag following was enabled and at least one item in
the fetchspec provided asked for storage to a tracking ref and we
have <tag2>^{} complete.


Of course even if we didn't follow that tag right away a future:

	git fetch <repo> <branch1>:<branch1>

might cause us to get the tag anyway, as <branch2>^0 is now reachable
through HEAD, due to the implicit git-merge we ran above.  ;-)

-- 
Shawn.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help