git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: "Martin Ågren" <martin.agren@gmail.com>
Cc: "Git Mailing List" <git@vger.kernel.org>,
	"Jonathan Nieder" <jrnieder@gmail.com>,
	"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
	"Brandon Williams" <bmwill@google.com>
Subject: Re: [PATCH 0/7] tag: more fine-grained pager-configuration
Date: Tue, 11 Jul 2017 10:08:01 -0400	[thread overview]
Message-ID: <20170711140801.ocbr44wktjjj44dq@sigill.intra.peff.net> (raw)
In-Reply-To: <CAN0heSqN6SJ_dppbYEDYVs+pSzVdLvLUDL4_VSNn79ro6c_8=g@mail.gmail.com>

On Tue, Jul 11, 2017 at 03:50:39PM +0200, Martin Ågren wrote:

> > Would it makes sense to just have git-tag respect pager.tag in listing
> > mode, and otherwise ignore it completely?
> 
> Yes. I doubt anyone would notice, and no-one should mind with the
> change (famous last words).
> 
> It does mean there's a precedence for individual commands to get to
> choose when to honor pager.foo. If more such exceptions are added, at
> some point, some command will learn to ignore pager.foo in some
> particular situation and someone will consider it a regression.

Yes, perhaps. One could even argue that "git tag foo" is OK to page and
somebody would consider it a regression not to respect pager.tag. It
seems useless to me, but at least it's not totally broken like "git tag
-a foo" is.

But I find it pretty unlikely, as it doesn't produce copious output. I'd
worry more about eventually finding a command with two copious-output
modes, and somebody wants to distinguish between them. If we can't come
up with a plausible example now, I'm inclined to deal with it if and
when it ever comes up. Right now I just don't want to paint ourselves
into a corner, and I think we can always add more config later (e.g.,
tag.pageFooCommand=true or something; that's not great, but I'm mostly
betting that it will never come up).

> Well, I respect your hunch about .enable and .command and I certainly
> don't want to take things in a direction that makes that approach less
> clean. You have convinced me that I will instead try to teach git tag
> to be more clever about when to use the pager, at least to see what
> that looks like.

Thanks. I was the original proponent of "pager.tag.list", and only after
reading your series today did I think "gee, this seems unnecessarily
complex". So it's entirely possible I'm missing a corner case that you
may uncover through discussion or experimenting.

> Let's call such a "git tag" the "future git tag". Just to convince
> myself I've thought through the implications -- how would
> pager.tag.enable=true affect that future git tag? Would it be fair to
> say that enable=false means "definitely don't start the pager (unless
> --paginate)" and that enable=true means "feel free to use it (unless
> --no-paginate)"? The future git tag would default to using
> enable=true. Would --paginate also be "feel free to use it", or rather
> "the pager must be used"?

I think the rules would be:

  1. If --paginate is given, do that. Likewise for --no-pager.

  2. Otherwise, respect tag.pager.enable if it is set.

  3. Otherwise, use the built-in default.

  4. Any time the pager is run, respect tag.pager.command if it is set.

And then there are two optional bits:

  2a. If tag.pager is set to a boolean, behave as if tag.pager.enable is
      set to the same boolean. If it's set to a string, behave as if
      tag.pager.enable is set to "true", and tag.pager.command is set to
      the string. That should give us backwards compatibility.

  2b. If tag.pager.command is set but tag.pager.enable isn't, possibly we
      should assume that tag.pager.enable is set to "true". That makes
      the common case of "page and use this command" a single config
      block instead of two. It matters less for "tag" where paging would
      be the default.

So I think that what you asked above, but to be clear on the final
question: --paginate should always be "must be used". And that meshes
nicely with implementing it via the git.c wrapper, where it takes
precedence way before we ever hit the setup_auto_pager() call.

-Peff

  reply	other threads:[~2017-07-11 14:08 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-10 21:55 [PATCH 0/7] tag: more fine-grained pager-configuration Martin Ågren
2017-07-10 21:55 ` [PATCH 1/7] api-builtin.txt: document SUPPORT_SUPER_PREFIX Martin Ågren
2017-07-10 22:50   ` Brandon Williams
2017-07-11  6:32     ` Martin Ågren
2017-07-11 18:23       ` Brandon Williams
2017-07-10 21:55 ` [PATCH 2/7] git.c: let builtins opt for handling `pager.foo` themselves Martin Ågren
2017-07-11 10:24   ` Jeff King
2017-07-11 13:46     ` Martin Ågren
2017-07-11 13:54       ` Jeff King
2017-07-10 21:55 ` [PATCH 3/7] git.c: provide setup_auto_pager() Martin Ågren
2017-07-11 10:37   ` Jeff King
2017-07-11 13:47     ` Martin Ågren
2017-07-10 21:55 ` [PATCH 4/7] t7006: add tests for how git tag paginates Martin Ågren
2017-07-10 21:55 ` [PATCH 5/7] tag: handle `pager.tag`-configuration within the builtin Martin Ågren
2017-07-11 10:38   ` Jeff King
2017-07-10 21:55 ` [PATCH 6/7] tag: make git tag -l consider new config `pager.tag.list` Martin Ågren
2017-07-11 10:41   ` Jeff King
2017-07-11 13:48     ` Martin Ågren
2017-07-10 21:55 ` [PATCH 7/7] tag: make git tag -l use pager by default Martin Ågren
2017-07-11 10:44   ` Jeff King
2017-07-10 22:42 ` [PATCH 0/7] tag: more fine-grained pager-configuration Junio C Hamano
2017-07-11 10:47   ` Jeff King
2017-07-11 16:05     ` Junio C Hamano
2017-07-12  7:29   ` Martin Ågren
2017-07-11 10:19 ` Jeff King
2017-07-11 13:50   ` Martin Ågren
2017-07-11 14:08     ` Jeff King [this message]
2017-07-17 20:10 ` [PATCH v2 00/10] tag: only respect `pager.tag` in list-mode Martin Ågren
2017-07-17 20:10   ` [PATCH v2 01/10] builtin.h: take over documentation from api-builtin.txt Martin Ågren
2017-07-17 20:10   ` [PATCH v2 02/10] builtin.h: format documentation-comment properly Martin Ågren
2017-07-17 20:10   ` [PATCH v2 03/10] builtin.h: document SUPPORT_SUPER_PREFIX Martin Ågren
2017-07-17 20:10   ` [PATCH v2 04/10] git.c: let builtins opt for handling `pager.foo` themselves Martin Ågren
2017-07-17 20:10   ` [PATCH v2 05/10] git.c: provide setup_auto_pager() Martin Ågren
2017-07-31  3:34     ` Jeff King
2017-07-31 16:32       ` Junio C Hamano
2017-07-17 20:10   ` [PATCH v2 06/10] t7006: add tests for how git tag paginates Martin Ågren
2017-07-31  3:38     ` Jeff King
2017-07-31 16:37       ` Junio C Hamano
2017-07-31 17:50         ` Martin Ågren
2017-07-17 20:10   ` [PATCH v2 07/10] tag: handle `pager.tag`-configuration within the builtin Martin Ågren
2017-07-17 20:10   ` [PATCH v2 08/10] tag: respect `pager.tag` in list-mode only Martin Ågren
2017-07-31  3:40     ` Jeff King
2017-07-17 20:10   ` [PATCH v2 09/10] tag: change default of `pager.tag` to "on" Martin Ågren
2017-07-17 20:10   ` [PATCH v2 10/10] git.c: ignore pager.* when launching builtin as dashed external Martin Ågren
2017-07-31  3:45     ` Jeff King
2017-07-31 17:42       ` Martin Ågren
2017-07-18 19:13   ` [PATCH v2 00/10] tag: only respect `pager.tag` in list-mode Junio C Hamano
2017-07-20 22:27   ` Junio C Hamano
2017-07-23 18:17     ` Martin Ågren
2017-07-31  3:46       ` Jeff King
2017-07-31 17:44         ` Martin Ågren
2017-07-31 17:45           ` Jeff King
2017-07-31 20:10             ` Junio C Hamano
2017-08-02 19:40   ` [PATCH v3 0/7] " Martin Ågren
2017-08-02 19:40     ` [PATCH v3 1/7] builtin.h: take over documentation from api-builtin.txt Martin Ågren
2017-08-03 17:44       ` Junio C Hamano
2017-08-04  4:18         ` Martin Ågren
2017-08-04 16:00           ` Junio C Hamano
2017-08-04 16:42             ` Martin Ågren
2017-08-02 19:40     ` [PATCH v3 2/7] git.c: let builtins opt for handling `pager.foo` themselves Martin Ågren
2017-08-02 19:40     ` [PATCH v3 3/7] git.c: provide setup_auto_pager() Martin Ågren
2017-08-02 19:40     ` [PATCH v3 4/7] t7006: add tests for how git tag paginates Martin Ågren
2017-08-02 19:40     ` [PATCH v3 5/7] tag: respect `pager.tag` in list-mode only Martin Ågren
2017-08-02 19:40     ` [PATCH v3 6/7] tag: change default of `pager.tag` to "on" Martin Ågren
2017-08-02 19:40     ` [PATCH v3 7/7] git.c: ignore pager.* when launching builtin as dashed external Martin Ågren
2017-08-03 18:20     ` [PATCH v3 0/7] tag: only respect `pager.tag` in list-mode Junio C Hamano
2017-08-03 19:29     ` Jeff King
2017-08-04  4:21       ` Martin Ågren
2017-08-04  4:59         ` 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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170711140801.ocbr44wktjjj44dq@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=bmwill@google.com \
    --cc=git@vger.kernel.org \
    --cc=jrnieder@gmail.com \
    --cc=martin.agren@gmail.com \
    --cc=pclouds@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).