From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Dave Olszewski <cxreg@pobox.com>, git@vger.kernel.org
Subject: Re: [PATCH 2/2] builtin/push.c: make push_default a static variable
Date: Tue, 17 Feb 2015 13:23:25 -0500 [thread overview]
Message-ID: <20150217182324.GA12816@peff.net> (raw)
In-Reply-To: <xmqqsie4300s.fsf@gitster.dls.corp.google.com>
On Tue, Feb 17, 2015 at 09:45:07AM -0800, Junio C Hamano wrote:
> Jeff King <peff@peff.net> writes:
>
> > If we wanted to implement "@{push}" (or "@{publish}") to mean "the
> > tracking ref of the remote ref you would push to if you ran git-push",
> > then this is a step in the wrong direction.
>
> Is that because push_default variable needs to be looked at from
> sha1_name.c when resolving "@{push}", optionally prefixed with the
> name of the branch?
Yes, exactly.
> I wonder if that codepath should know the gory details of which ref at
> the remote the branch is pushed to and which remote-tracking ref we
> use in the local repository to mirror that remote ref in the first
> place?
I think that was one of the ugly bits from the series; that we had to
reimplement "where would we push" and "what would it be called if we
pushed and then fetched"? The former cares about push_default, and the
latter has to apply push and then fetch refspecs.
If you want to peek at it again, it's at:
https://github.com/peff/git/commit/8859afb1af63cb3cb0bc4cc8c1719c2011f406c9
(but note that it should not be called @{publish}, as per earlier
discussions).
> What do we do for the @{upstream} side of the things---it calls
> branch_get() and when the branch structure is returned, the details
> have been computed for us so get_upstream_branch() only needs to use
> the information already computed. The interesting parts of the
> computation all happen inside remote.c, it seems.
>
> So we probably would do something similar to @{push} side, which
> would mean that push_default variable and the logic needs to be
> visible to remote.c if we want to have the helper that is similar to
> set_merge() that is used from branch_get() to support @{upstream}.
Sure, we could go that way. But I don't think it changes the issue for
_this_ patch series, which is that the variable needs visibility outside
of builtin/push.c (and we need to load the config for programs besides
git-push).
> Hmmm, I have a feeling that "with default configuration, where does
> 'git push' send this branch to?" logic should be contained within
> the source file whose name has "push" in it and exposed as a helper
> function, instead of exposing just one of the lowest level knob
> push_default to outside callers and have them figure things out.
>
> Viewed from that angle, it might be the case that remote.c knows too
> much about what happens during fetch and pull, but I dunno.
Yeah, it would be nice if there were a convenient lib-ified set of
functions for getting this information, and "fetch" and "push" commands
were built on top of it. I don't know how painful that would be, though.
The existing code has grown somewhat organically.
But even with that change, the lib-ified code needs to hook into
git_default_config (or do its own config lookup) so that we get the
proper value no matter who the caller is.
-Peff
next prev parent reply other threads:[~2015-02-17 18:23 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-16 3:01 [PATCH] push: allow --follow-tags to be set by config push.followTags Dave Olszewski
2015-02-16 5:20 ` Jeff King
2015-02-16 5:45 ` [PATCH 0/2] clean up push config callbacks Jeff King
2015-02-16 5:46 ` [PATCH 1/2] git_push_config: drop cargo-culted wt_status pointer Jeff King
2015-02-16 5:47 ` [PATCH 2/2] builtin/push.c: make push_default a static variable Jeff King
2015-02-16 5:57 ` Junio C Hamano
2015-02-17 10:46 ` Jeff King
2015-02-17 17:45 ` Junio C Hamano
2015-02-17 18:23 ` Jeff King [this message]
2015-02-17 22:16 ` Junio C Hamano
2015-02-18 18:50 ` Jeff King
2015-02-18 19:08 ` Junio C Hamano
2015-02-18 19:25 ` Jeff King
2015-02-18 19:50 ` Junio C Hamano
2015-02-18 20:03 ` Jeff King
2015-02-16 5:54 ` [PATCH 3/2] push: allow --follow-tags to be set by config push.followTags Jeff King
2015-02-16 6:02 ` Junio C Hamano
2015-02-16 6:10 ` [PATCH 0/3] cleaner bit-setting in cmd_push Jeff King
2015-02-16 6:12 ` [PATCH 1/3] cmd_push: set "atomic" bit directly Jeff King
2015-02-16 6:13 ` [PATCH 2/3] cmd_push: pass "flags" pointer to config callback Jeff King
2015-02-16 7:05 ` Junio C Hamano
2015-02-16 7:16 ` Jeff King
2015-02-16 6:16 ` [PATCH 3/3] push: allow --follow-tags to be set by config push.followTags Jeff King
2015-03-14 6:06 ` Junio C Hamano
2015-03-14 17:34 ` Jeff King
2015-03-14 17:50 ` Dave Olszewski
2015-03-14 22:08 ` Junio C Hamano
2015-02-16 6:11 ` [PATCH 3/2] " Junio C Hamano
2015-02-16 6:17 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150217182324.GA12816@peff.net \
--to=peff@peff.net \
--cc=cxreg@pobox.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.