diff: add --default-prefix option
You can change the output of prefixes with diff.noprefix and diff.mnemonicprefix, but there's no easy way to override them from the command-line. We do have "--no-prefix", but there's no way to get back to the default prefix. So let's add an option to do that. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									7c03d0db88
								
							
						
					
					
						commit
						b39a569729
					
				|  | @ -852,6 +852,11 @@ endif::git-format-patch[] | ||||||
| --no-prefix:: | --no-prefix:: | ||||||
| 	Do not show any source or destination prefix. | 	Do not show any source or destination prefix. | ||||||
|  |  | ||||||
|  | --default-prefix:: | ||||||
|  | 	Use the default source and destination prefixes ("a/" and "b/"). | ||||||
|  | 	This is usually the default already, but may be used to override | ||||||
|  | 	config such as `diff.noprefix`. | ||||||
|  |  | ||||||
| --line-prefix=<prefix>:: | --line-prefix=<prefix>:: | ||||||
| 	Prepend an additional prefix to every line of output. | 	Prepend an additional prefix to every line of output. | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										14
									
								
								diff.c
								
								
								
								
							
							
						
						
									
										14
									
								
								diff.c
								
								
								
								
							|  | @ -5275,6 +5275,17 @@ static int diff_opt_no_prefix(const struct option *opt, | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | 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); | ||||||
|  | 	diff_set_default_prefix(options); | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
| static enum parse_opt_result diff_opt_output(struct parse_opt_ctx_t *ctx, | static enum parse_opt_result diff_opt_output(struct parse_opt_ctx_t *ctx, | ||||||
| 					     const struct option *opt, | 					     const struct option *opt, | ||||||
| 					     const char *arg, int unset) | 					     const char *arg, int unset) | ||||||
|  | @ -5564,6 +5575,9 @@ struct option *add_diff_options(const struct option *opts, | ||||||
| 		OPT_CALLBACK_F(0, "no-prefix", options, NULL, | 		OPT_CALLBACK_F(0, "no-prefix", options, NULL, | ||||||
| 			       N_("do not show any source or destination prefix"), | 			       N_("do not show any source or destination prefix"), | ||||||
| 			       PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_no_prefix), | 			       PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_no_prefix), | ||||||
|  | 		OPT_CALLBACK_F(0, "default-prefix", options, NULL, | ||||||
|  | 			       N_("use default prefixes a/ and b/"), | ||||||
|  | 			       PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_default_prefix), | ||||||
| 		OPT_INTEGER_F(0, "inter-hunk-context", &options->interhunkcontext, | 		OPT_INTEGER_F(0, "inter-hunk-context", &options->interhunkcontext, | ||||||
| 			      N_("show context between diff hunks up to the specified number of lines"), | 			      N_("show context between diff hunks up to the specified number of lines"), | ||||||
| 			      PARSE_OPT_NONEG), | 			      PARSE_OPT_NONEG), | ||||||
|  |  | ||||||
|  | @ -643,9 +643,19 @@ test_expect_success 'diff respects diff.noprefix' ' | ||||||
| 	check_prefix actual file0 file0 | 	check_prefix actual file0 file0 | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  | test_expect_success 'diff --default-prefix overrides diff.noprefix' ' | ||||||
|  | 	git -c diff.noprefix diff --default-prefix >actual && | ||||||
|  | 	check_prefix actual a/file0 b/file0 | ||||||
|  | ' | ||||||
|  |  | ||||||
| test_expect_success 'diff respects diff.mnemonicprefix' ' | test_expect_success 'diff respects diff.mnemonicprefix' ' | ||||||
| 	git -c diff.mnemonicprefix diff >actual && | 	git -c diff.mnemonicprefix diff >actual && | ||||||
| 	check_prefix actual i/file0 w/file0 | 	check_prefix actual i/file0 w/file0 | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  | test_expect_success 'diff --default-prefix overrides diff.mnemonicprefix' ' | ||||||
|  | 	git -c diff.mnemonicprefix diff --default-prefix >actual && | ||||||
|  | 	check_prefix actual a/file0 b/file0 | ||||||
|  | ' | ||||||
|  |  | ||||||
| test_done | test_done | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Jeff King
						Jeff King