git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/5] diff: add --default-prefix option

From
Jeff King <peff@peff.net>
Date
Mar 10, 2023, 09:44 UTC
Message-ID
<ZAr7+zW+pkOXoIfL@coredump.intra.peff.net>
In-Reply-To
<xmqq5yb9q42e.fsf@gitster.g>
On Thu, Mar 09, 2023 at 08:31:37AM -0800, Junio C Hamano wrote:
Show 10 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > This isn't strictly necessary for the series, but it seemed like a gap.
> > You can always do:
> >
> >   git -c diff.noprefix=false -c diff.mnemonicprefix=false ...
> >
> > but that's rather a mouthful.
> 
> or "git diff --src-prefix=a/ --dst-prefix=b/"

Doh. How did I write this whole patch series without remembering the existence of those options?

While it is not _quite_ the same thing to say "use prefixes a/ and b/" versus "countermand any config and use the default", it is close enough that I am tempted to say this patch should be scrapped. I mostly just wanted to have a way to counter format.noprefix, if we are going to endorse it as a concept (whether by adding it, or saying "no, respecting diff.noprefix is not a bug").

(If we do scrap it, I'd probably fold the extra tests into the previous commit, but using --src-prefix, etc).

Show 12 quoted lines
> > +static int diff_opt_default_prefix(const struct option *opt,
> > +				   const char *optarg, int unset)
> > +{
> > +	struct diff_options *options = opt->value;
> > +
> > +	BUG_ON_OPT_NEG(unset);
> > +	BUG_ON_OPT_ARG(optarg);
> 
> OK.  It is a bit unsatisfactory that we already said this does not
> take negative form or any argument in the option[] array, and still
> have to do this, but that is completely outside the topic of this
> series.

We don't strictly have to do it. It's a cross-check that the correct flags were set in the options struct, and serves as documentation both for the human and the compiler (via -Wunused-parameter) that yes, it really is correct to take "unset" and not look at it. We could just as easily mark unset with "UNUSED", but I consider the extra run-time check a bonus.

I do admit that in a one-off callback like this, it is not accomplishing much. It's much more useful for generic ones like parse_opt_commit(), that may be triggered from many places. I do wish there was a better way to make sure they matched at compile-time, but I can't think of one.

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 10 of 30 in “Better suggestions when git-am(1) fails”
  1. Alejandro ColomarMar 8, 2023
  2. Jeff KingMar 9, 2023
  3. Jeff KingMar 9, 2023
  4. 1/5 diff: factor out src/dst prefix setupJeff King, Mar 9, 2023
  5. Alejandro ColomarMar 9, 2023
  6. 2/5 t4013: add tests for diff prefix optionsJeff King, Mar 9, 2023
  7. 3/5 diff: add --default-prefix optionJeff King, Mar 9, 2023
  8. Alejandro ColomarMar 9, 2023
  9. Junio C HamanoMar 9, 2023
  10. Jeff KingMar 10, 2023
  11. Junio C HamanoMar 10, 2023
  12. Jeff KingMar 13, 2023
  13. Junio C HamanoMar 13, 2023
  14. Junio C HamanoMar 13, 2023
  15. Jeff KingMar 13, 2023
  16. 4/5 format-patch: do not respect diff.noprefixJeff King, Mar 9, 2023
  17. Alejandro ColomarMar 9, 2023
  18. Junio C HamanoMar 9, 2023
  19. Jeff KingMar 10, 2023
  20. 5/5 format-patch: add format.noprefix optionJeff King, Mar 9, 2023
  21. Junio C HamanoMar 9, 2023
  22. Jeff KingMar 10, 2023
  23. Alejandro ColomarMar 9, 2023
  24. Junio C HamanoMar 9, 2023
  25. Jeff KingMar 10, 2023
  26. Junio C HamanoMar 9, 2023
  27. Jeff KingMar 10, 2023
  28. Junio C HamanoMar 10, 2023
  29. Jeff KingMar 13, 2023
  30. Junio C HamanoMar 13, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.