git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / Atom feed
* allow a differn't diff.context config for git format-patch
@ 2019-04-14 21:48 Shawn Landden
  2019-04-23  3:06 ` Jeff King
  0 siblings, 1 reply; 4+ messages in thread
From: Shawn Landden @ 2019-04-14 21:48 UTC (permalink / raw)
  To: git

When I send patches I want them to have lots of context, but when just
looking at a diff, I can always open the file for context.

-SHawn

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: allow a differn't diff.context config for git format-patch
  2019-04-14 21:48 allow a differn't diff.context config for git format-patch Shawn Landden
@ 2019-04-23  3:06 ` Jeff King
  2019-04-23  3:45   ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Jeff King @ 2019-04-23  3:06 UTC (permalink / raw)
  To: Shawn Landden; +Cc: git

On Sun, Apr 14, 2019 at 04:48:53PM -0500, Shawn Landden wrote:

> When I send patches I want them to have lots of context, but when just
> looking at a diff, I can always open the file for context.

Seems like a reasonable thing to want. You can already use "git
format-patch -U20 ...". The usual advice for putting that in config is
to define an alias wit your preferred option. 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.

-Peff

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: allow a differn't diff.context config for git format-patch
  2019-04-23  3:06 ` Jeff King
@ 2019-04-23  3:45   ` Junio C Hamano
  2019-04-23  3:55     ` Jeff King
  0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2019-04-23  3:45 UTC (permalink / raw)
  To: Jeff King; +Cc: Shawn Landden, git

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.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: allow a differn't diff.context config for git format-patch
  2019-04-23  3:45   ` Junio C Hamano
@ 2019-04-23  3:55     ` Jeff King
  0 siblings, 0 replies; 4+ messages in thread
From: Jeff King @ 2019-04-23  3:55 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Shawn Landden, git

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:

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, back to index

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-14 21:48 allow a differn't diff.context config for git format-patch Shawn Landden
2019-04-23  3:06 ` Jeff King
2019-04-23  3:45   ` Junio C Hamano
2019-04-23  3:55     ` Jeff King

git@vger.kernel.org list mirror (unofficial, one of many)

Archives are clonable:
	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git
	nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git
	nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git
	nntp://news.gmane.org/gmane.comp.version-control.git

 note: .onion URLs require Tor: https://www.torproject.org/
       or Tor2web: https://www.tor2web.org/

AGPL code for this site: git clone https://public-inbox.org/ public-inbox