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

Re: allow a differn't diff.context config for git format-patch

From
SLShawn Landden <shawn@git.icu>
Date
May 12, 2019, 13:21 UTC
Message-ID
<CA+49okqSu1VYgrc__1SjYFvs1mhGHqQXhHrMFApRSzk_UNkjJw@mail.gmail.com>
In-Reply-To
<20190423035537.GB7753@sigill.intra.peff.net>
On Mon, Apr 22, 2019 at 10:55 PM Jeff King <peff@peff.net> wrote:
Show 34 quoted lines
>
> On Tue, Apr 23, 2019 at 12:45:17PM +0900, Junio C Hamano wrote:
>
> > Jeff King <peff@peff.net> writes:
> >
> > > ... I don't think it would be
> > > too big a problem for format-patch to learn some options to configure
> > > its diffs. We already have some options in format.* for various things.
> >
> > I am not sure; diff.context is rather special in that the variable
> > behind it belongs to the diff layer and is set via diff_config that
> > is called by diff_ui_config that in turn is called by log_config
> > which is called by format_config.
> >
> > If we want to say "format.context" trumps "diff.config", then a new
> > internal variable to receive the value of the variable must be
> > invented and after the config gets read, cmd_format_patch() needs to
> > do something silly like this:
> >
> >                 git_config(git_format_config, NULL);
> >         +     if (format_context != -1)
> >         +             diff_default_context = format_context;
> >                 repo_init_revisions(the_repository, &rev, prefix);
> >
> > committing layering violation by exposing diff_default_context
> > variable.
>
> After init_revisions(), we'll have called diff_setup(), which puts
> diff_context_default into revs->diffopt. So we still have to do the "if
> we have a format-specific value, then override..." conditional. But we
> can do it without touching the hidden variable:
>
>
>

Looks like this fell into the cracks. You guys know the code much better than me, but do I have to write a patch to make this happen?

Show 23 quoted lines
> diff --git a/builtin/log.c b/builtin/log.c
> index 57869267d8..0de2ee0905 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -1613,14 +1613,16 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
>         repo_init_revisions(the_repository, &rev, prefix);
>         rev.commit_format = CMIT_FMT_EMAIL;
>         rev.expand_tabs_in_log_default = 0;
>         rev.verbose_header = 1;
>         rev.diff = 1;
>         rev.max_parents = 1;
>         rev.diffopt.flags.recursive = 1;
> +       if (format_context != -1)
> +               rev.diffopt.context = format_context;
>         rev.subject_prefix = fmt_patch_subject_prefix;
>         memset(&s_r_opt, 0, sizeof(s_r_opt));
>         s_r_opt.def = "HEAD";
>         s_r_opt.revarg_opt = REVARG_COMMITTISH;
>
>         if (default_attach) {
>                 rev.mime_boundary = default_attach;
>
> -Peff
Previous: Jeff KingNext: Jeff King
Message 5 of 7 in “allow a differn't diff.context config for git format-patch”
  1. Shawn LanddenApr 14, 2019
  2. Jeff KingApr 23, 2019
  3. Junio C HamanoApr 23, 2019
  4. Jeff KingApr 23, 2019
  5. Shawn LanddenMay 12, 2019
  6. Jeff KingMay 14, 2019
  7. Jeff KingMay 14, 2019

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.