Re: [PATCH v4 3/4] transport.c: introduce core.alternateRefsCommand
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Oct 4, 2018, 02:17 UTC
- Message-ID
- <20181004021757.GA67785@syl>
- In-Reply-To
- <20181002234056.GA18516@sigill.intra.peff.net>
On Tue, Oct 02, 2018 at 07:40:56PM -0400, Jeff King wrote:
Show 21 quoted lines
> On Mon, Oct 01, 2018 at 07:23:58PM -0700, Taylor Blau wrote: > > > +core.alternateRefsCommand:: > > + When advertising tips of available history from an alternate, use the shell to > > + execute the specified command instead of linkgit:git-for-each-ref[1]. The > > + first argument is the absolute path of the alternate. Output must contain one > > + hex object id per line (i.e., the same as produce by `git for-each-ref > > + --format='%(objectname)'`). > > ++ > > +This is useful when a repository only wishes to advertise some of its > > +alternate's references as `.have`'s. For example, to only advertise branch > > +heads, configure `core.alternateRefsCommand` to the path of a script which runs > > +`git --git-dir="$1" for-each-ref --format='%(objectname)' refs/heads`. > > ++ > > +Note that the configured value is executed in a shell, and thus > > +linkgit:git-for-each-ref[1] by itself does not work, as scripts have to handle > > +the path argument specially. > > This last paragraph is trying to fix the wrong-impression that we > discussed in the last round. But I'm not sure it doesn't make things > more confusing. ;)
Heh, point taken. I suppose that I won't try to ignore your feedback here!
Show 17 quoted lines
> Specifically, the problem isn't the shell. The issue is that we pass the > repo path as an argument to the command. So either: > > - it's a real command that we run, in which case git-for-each-ref does > not take a repo path argument and so doesn't work; or > > - it's a shell snippet, in which case the argument is appended to the > snippet (and here's where you can get into a rabbit hole of > explaining how our shell invocation works, and we should avoid that) > > Can we just say: > > Note that you cannot generally put `git for-each-ref` directly into > the config value, as it does not take a repository path as an argument > (but you can wrap the command above in a shell script). > > > [...]
Yeah, I think that this is certainly the way to go. I took your suggestion as-is, which I think is much clearer than what I wrote. Thanks!
> The rest of the patch looks good to me, along with the other three > (modulo the "expect" fixup you already sent).
Thanks for your review, as always :-). I certainly appreciate your patience with the word-smithing and whatnot.
Junio, I applied Peff's suggestion directly into my local copy, so I'm happy to do either of a couple things, depending on which would be easiest for you to pick up. I could either:
1. Re-send this patch (in addition to 4/4), or
2. Re-roll the entire series (with this and 4/4 amended to reflect the
two bits of feedback I've gotten since sending v4).I imagine that the later will be easier for you to deal with, instead of manually picking up patch amendments, but if you'd like fewer email, that works too :-).
Thanks, Taylor