]> git.ipfire.org Git - thirdparty/git.git/commit
transport.c: introduce core.alternateRefsPrefixes
authorTaylor Blau <me@ttaylorr.com>
Mon, 8 Oct 2018 18:09:30 +0000 (11:09 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 9 Oct 2018 05:30:03 +0000 (14:30 +0900)
commit40f327faf543ccaeb03aa0362f3fed7438c2c615
tree1bd7c4249a970e8f0a2bc1708519a930f7f3e16d
parent89284c1d6ca03480a93f9d95a2460a09390f3c40
transport.c: introduce core.alternateRefsPrefixes

The recently-introduced "core.alternateRefsCommand" allows callers to
specify with high flexibility the tips that they wish to advertise from
alternates. This flexibility comes at the cost of some inconvenience
when the caller only wishes to limit the advertisement to one or more
prefixes.

For example, to advertise only tags, a caller using
'core.alternateRefsCommand' would have to do:

  $ git config core.alternateRefsCommand ' \
      f() { git -C "$1" for-each-ref \
              refs/tags --format="%(objectname)" }; f "$@"'

The above is cumbersome to write, so let's introduce a
"core.alternateRefsPrefixes" to address this common case. Instead, the
caller can run:

  $ git config core.alternateRefsPrefixes 'refs/tags'

Which will behave identically to the longer example using
"core.alternateRefsCommand".

Since the value of "core.alternateRefsPrefixes" is appended to 'git
for-each-ref' and then executed, include a "--" before taking the
configured value to avoid misinterpreting arguments as flags to 'git
for-each-ref'.

In the case that the caller wishes to specify multiple prefixes, they
may separate them by whitespace. If "core.alternateRefsCommand" is set,
it will take precedence over "core.alternateRefsPrefixes".

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config.txt
t/t5410-receive-pack-alternates.sh
transport.c