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

Re: [PATCH] Introduce 'git-format-patch --suffix=patch'

From
Andy Whitcroft <apw@shadowen.org>
Date
Jan 17, 2007, 19:20 UTC
Message-ID
<45AE7710.40503@shadowen.org>
In-Reply-To
<7v4pqpsbre.fsf_-_@assigned-by-dhcp.cox.net>
Junio C Hamano wrote:
Show 116 quoted lines
> The default can also be changed with "format.suffix" configuration.
> 
> Signed-off-by: Junio C Hamano <junkio@cox.net>
> ---
> 
>   Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
>   > Why not
>   >
>   > 	static const char *file_extension = ".txt"
>   >
>   > Hmm?
> 
>   Let's do this instead.  By the way, there is a bug in the
>   configuration parsing for format.headers from commit 20ff0680,
>   which needs to be check NULLness of the value the same way as
>   this one deals with format.suffix, which I've already fixed in
>   my tree.
> 
>  Documentation/git-format-patch.txt |   13 ++++++++++++-
>  builtin-log.c                      |   19 ++++++++++++++++---
>  2 files changed, 28 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
> index 67425dc..34abd2f 100644
> --- a/Documentation/git-format-patch.txt
> +++ b/Documentation/git-format-patch.txt
> @@ -11,7 +11,7 @@ SYNOPSIS
>  [verse]
>  'git-format-patch' [-n | -k] [-o <dir> | --stdout] [--attach] [--thread]
>  	           [-s | --signoff] [--diff-options] [--start-number <n>]
> -		   [--in-reply-to=Message-Id]
> +		   [--in-reply-to=Message-Id] [--suffix=<sfx>]
>  		   <since>[..<until>]
>  
>  DESCRIPTION
> @@ -78,6 +78,12 @@ OPTIONS
>  	reply to the given Message-Id, which avoids breaking threads to
>  	provide a new patch series.
>  
> +--suffix=<sfx>::
> +	Instead of using `txt` as the suffix for generated
> +	filenames, use specifed suffix.  A common alternative is
> +	`--suffix=patch`.
> +
> +
>  CONFIGURATION
>  -------------
>  You can specify extra mail header lines to be added to each
> @@ -86,6 +92,11 @@ message in the repository configuration as follows:
>  [format]
>          headers = "Organization: git-foo\n"
>  
> +You can specify default suffix used:
> +
> +[format]
> +        suffix = patch
> +
>  
>  EXAMPLES
>  --------
> diff --git a/builtin-log.c b/builtin-log.c
> index a59b4ac..04e3144 100644
> --- a/builtin-log.c
> +++ b/builtin-log.c
> @@ -197,6 +197,7 @@ static int istitlechar(char c)
>  
>  static char *extra_headers = NULL;
>  static int extra_headers_size = 0;
> +static const char *fmt_patch_suffix = "txt";
>  
>  static int git_format_config(const char *var, const char *value)
>  {
> @@ -208,6 +209,12 @@ static int git_format_config(const char *var, const char *value)
>  		strcat(extra_headers, value);
>  		return 0;
>  	}
> +	if (!strcmp(var, "format.suffix")) {
> +		if (!value)
> +			die("format.suffix without value");
> +		fmt_patch_suffix = xstrdup(value);
> +		return 0;
> +	}
>  	if (!strcmp(var, "diff.color") || !strcmp(var, "color.diff")) {
>  		return 0;
>  	}
> @@ -223,9 +230,10 @@ static void reopen_stdout(struct commit *commit, int nr, int keep_subject)
>  	char filename[1024];
>  	char *sol;
>  	int len = 0;
> +	int suffix_len = strlen(fmt_patch_suffix) + 10; /* ., NUL and slop */
>  
>  	if (output_directory) {
> -		strlcpy(filename, output_directory, 1010);
> +		strlcpy(filename, output_directory, 1000);
>  		len = strlen(filename);
>  		if (filename[len - 1] != '/')
>  			filename[len++] = '/';
> @@ -249,7 +257,10 @@ static void reopen_stdout(struct commit *commit, int nr, int keep_subject)
>  			}
>  		}
>  
> -		for (j = 0; len < 1024 - 6 && sol[j] && sol[j] != '\n'; j++) {
> +		for (j = 0;
> +		     len < sizeof(filename) - suffix_len &&
> +			     sol[j] && sol[j] != '\n';
> +		     j++) {
>  			if (istitlechar(sol[j])) {
>  				if (space) {
>  					filename[len++] = '-';
> @@ -265,7 +276,7 @@ static void reopen_stdout(struct commit *commit, int nr, int keep_subject)
>  		while (filename[len - 1] == '.' || filename[len - 1] == '-')
>  			len--;
>  	}
> -	strcpy(filename + len, ".txt");
> +	sprintf(filename + len, ".%s", fmt_patch_suffix);

This doesn't give us any possibility of not having a suffix. Can we not include the . in the suffix here so that we can specify it as "".

Show 12 quoted lines
>  	fprintf(realstdout, "%s\n", filename);
>  	freopen(filename, "w", stdout);
>  }
> @@ -436,6 +447,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
>  				die("Need a Message-Id for --in-reply-to");
>  			in_reply_to = argv[i];
>  		}
> +		else if (!strncmp(argv[i], "--suffix=", 9))
> +			fmt_patch_suffix = argv[i] + 9;
>  		else
>  			argv[j++] = argv[i];
>  	}
-apw
Previous: Junio C HamanoNext: Junio C Hamano
Message 6 of 59 in “[RFC] Add a suffix option to git-format-patch”
  1. Josh BoyerJan 17, 2007
  2. Johannes SchindelinJan 17, 2007
  3. Josh BoyerJan 17, 2007
  4. Horst H. von BrandJan 17, 2007
  5. Introduce 'git-format-patch --suffix=patch'Junio C Hamano, Jan 17, 2007
  6. Andy WhitcroftJan 17, 2007
  7. Junio C HamanoJan 17, 2007
  8. Brian GernhardtJan 17, 2007
  9. Junio C HamanoJan 17, 2007
  10. Brian GernhardtJan 17, 2007
  11. Make format-patch --suffix="" not add any suffixBrian Gernhardt, Jan 17, 2007
  12. Johannes SchindelinJan 18, 2007
  13. David KågedalJan 17, 2007
  14. Andreas EricssonJan 17, 2007
  15. Johannes SchindelinJan 17, 2007
  16. Junio C HamanoJan 17, 2007
  17. David KågedalJan 17, 2007
  18. Josh BoyerJan 17, 2007
  19. Josh BoyerJan 17, 2007
  20. git-format-patch: the default suffix is now .patch, not .txtJunio C Hamano, Jan 18, 2007
  21. Johannes SchindelinJan 18, 2007
  22. Alex RiesenJan 18, 2007
  23. Shawn O. PearceJan 18, 2007
  24. Alex RiesenJan 18, 2007
  25. Junio C HamanoJan 18, 2007
  26. Alex RiesenJan 18, 2007
  27. Junio C HamanoJan 18, 2007
  28. Alex RiesenJan 18, 2007
  29. Josh BoyerJan 18, 2007
  30. Johannes SchindelinJan 18, 2007
  31. Alex RiesenJan 18, 2007
  32. Alex RiesenJan 18, 2007
  33. Andreas EricssonJan 18, 2007
  34. Johannes SchindelinJan 18, 2007
  35. Alex RiesenJan 18, 2007
  36. Johannes SchindelinJan 18, 2007
  37. Alex RiesenJan 18, 2007
  38. Johannes SchindelinJan 18, 2007
  39. Alex RiesenJan 18, 2007
  40. Josh BoyerJan 18, 2007
  41. Johannes SchindelinJan 18, 2007
  42. Josh BoyerJan 18, 2007
  43. Shawn O. PearceJan 18, 2007
  44. Alex RiesenJan 18, 2007
  45. Steven GrimmJan 18, 2007
  46. Johannes SchindelinJan 18, 2007
  47. Johannes SixtJan 18, 2007
  48. Jakub NarebskiJan 19, 2007
  49. Shawn O. PearceJan 18, 2007
  50. Alex RiesenJan 18, 2007
  51. Andreas EricssonJan 18, 2007
  52. Shawn O. PearceJan 18, 2007
  53. Andreas EricssonJan 18, 2007
  54. Martin LanghoffJan 18, 2007
  55. Martin LanghoffJan 18, 2007
  56. Andreas EricssonJan 18, 2007
  57. Lukas SandströmJan 18, 2007
  58. Brian GernhardtJan 18, 2007
  59. Alexandre JulliardJan 18, 2007

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.