On Mon, Jun 06, 2022 at 03:52:19PM -0700, Junio C Hamano wrote: > Taylor Blau <me@xxxxxxxxxxxx> writes: > > > This short patch series adds support for a new `--count` argument for limiting > > the output of `show-ref` (à-la the `for-each-ref` option by the same name). > > It makes me wonder why we limit this to show-ref. > > $ git --pipe-to-head-N=3 any-command args... > > IOW, having to add an option like this feels absurd. I don't disagree. But `--pipe-to-head-N=3` feels like too broad a stroke. This series at least imitates `for-each-ref`'s `--count` option, which makes it feel acceptable to me (if not a little silly). > > This is useful in contexts where a caller wants to avoid enumerating more > > references than necessary (e.g., they only care whether a tag exists, but not > > how many or what they are called) but doesn't have control of the output stream > > (e.g., they are in Ruby and can't pipe the output to `head -n 1`). > > Are you saying that Ruby is incapable of run a command line like > > av[0] = "sh" > av[1] = "-c" > av[2] = "git show-ref blah | head -n 1" > av[3] = NULL No, Ruby is perfectly capable of doing that. But it involves an extra process (two, if `head` isn't a shell builtin) and the additional overhead of creating a pipe and passing data through it instead of writing directly to stdout. That isn't a complete show-stopper in most cases, but in ultra-latency-sensitive applications like GitHub is using show-ref for, being able to shave an extra process or so off matters. If you're strongly opposed to having `show-ref` match `for-each-ref`'s `--count` option, I won't be too sad. But I'm not in a huge rush to replace this series with `git --pipe-to-head-N=<n>` either, FWIW. Thanks, Taylor