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

Re: [PATCH] Add option to git-commit to allow empty log messages

From
David Aguilar <davvid@gmail.com>
Date
Apr 4, 2010, 22:43 UTC
Message-ID
<20100404224324.GB12655@gmail.com>
In-Reply-To
<1270392557-26538-1-git-send-email-avarab@gmail.com>
On Sun, Apr 04, 2010 at 02:49:16PM +0000, Ævar Arnfjörð Bjarmason wrote:
> Change git-commit(1) to accept a --allow-empty-message option
> analogous to the existing --allow-empty option which allows empty
> trees. This is mainly for compatability with foreign SCM systems.

It's hard enough to get co-workers to write good commit messages. I wouldn't want to encourage them to skip writing them altogether (by the existence of this feature).

Is there any reason why the git commit-tree plumbing didn't suffice?

(in other words, "sure we can", but I'm asking,
 "are you sure we should?")

Just my $.02. Hey, we just had a small earthquake. Fun =)

Show 124 quoted lines
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
>  Documentation/git-commit.txt          |   12 +++++++--
>  builtin/commit.c                      |    7 +++--
>  t/t7510-commit-allow-empty-message.sh |   41 +++++++++++++++++++++++++++++++++
>  3 files changed, 54 insertions(+), 6 deletions(-)
>  create mode 100755 t/t7510-commit-allow-empty-message.sh
> 
> diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
> index 64fb458..2c1c2e1 100644
> --- a/Documentation/git-commit.txt
> +++ b/Documentation/git-commit.txt
> @@ -10,9 +10,9 @@ SYNOPSIS
>  [verse]
>  'git commit' [-a | --interactive] [-s] [-v] [-u<mode>] [--amend] [--dry-run]
>  	   [(-c | -C) <commit>] [-F <file> | -m <msg>] [--reset-author]
> -	   [--allow-empty] [--no-verify] [-e] [--author=<author>]
> -	   [--date=<date>] [--cleanup=<mode>] [--status | --no-status] [--]
> -	   [[-i | -o ]<file>...]
> +	   [--allow-empty] [--allow-empty-message] [--no-verify] [-e]
> +	   [--author=<author>] [--date=<date>] [--cleanup=<mode>]
> +	   [--status | --no-status] [--] [[-i | -o ]<file>...]
>  
>  DESCRIPTION
>  -----------
> @@ -131,6 +131,12 @@ OPTIONS
>  	from making such a commit.  This option bypasses the safety, and
>  	is primarily for use by foreign scm interface scripts.
>  
> +--allow-empty-message::
> +	Like --allow-empty this command is primarily for use by foreign
> +	scm interface scripts. It allows you to create a commit with an
> +	empty commit message without using plumbing commands like
> +	linkgit:git-commit-tree[1].
> +
>  --cleanup=<mode>::
>  	This option sets how the commit message is cleaned up.
>  	The  '<mode>' can be one of 'verbatim', 'whitespace', 'strip',
> diff --git a/builtin/commit.c b/builtin/commit.c
> index c5ab683..7fd963e 100644
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@ -65,8 +65,8 @@ static const char *template_file;
>  static char *edit_message, *use_message;
>  static char *author_name, *author_email, *author_date;
>  static int all, edit_flag, also, interactive, only, amend, signoff;
> -static int quiet, verbose, no_verify, allow_empty, dry_run, renew_authorship;
> -static int no_post_rewrite;
> +static int quiet, verbose, no_verify, allow_empty, allow_empty_message, dry_run;
> +static int no_post_rewrite, renew_authorship;
>  static char *untracked_files_arg, *force_date;
>  /*
>   * The default commit message cleanup mode will remove the lines
> @@ -141,6 +141,7 @@ static struct option builtin_commit_options[] = {
>  	OPT_BOOLEAN(0, "no-post-rewrite", &no_post_rewrite, "bypass post-rewrite hook"),
>  	{ OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, "mode", "show untracked files, optional modes: all, normal, no. (Default: all)", PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
>  	OPT_BOOLEAN(0, "allow-empty", &allow_empty, "ok to record an empty change"),
> +	OPT_BOOLEAN(0, "allow-empty-message", &allow_empty_message, "ok to record a change with an empty message"),
>  	/* end commit contents options */
>  
>  	OPT_END()
> @@ -1293,7 +1294,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
>  
>  	if (cleanup_mode != CLEANUP_NONE)
>  		stripspace(&sb, cleanup_mode == CLEANUP_ALL);
> -	if (message_is_empty(&sb)) {
> +	if (message_is_empty(&sb) && !allow_empty_message) {
>  		rollback_index_files();
>  		fprintf(stderr, "Aborting commit due to empty commit message.\n");
>  		exit(1);
> diff --git a/t/t7510-commit-allow-empty-message.sh b/t/t7510-commit-allow-empty-message.sh
> new file mode 100755
> index 0000000..d7dc0da
> --- /dev/null
> +++ b/t/t7510-commit-allow-empty-message.sh
> @@ -0,0 +1,41 @@
> +#!/bin/sh
> +#
> +# Copyright (c) 2010 Ævar Arnfjörð Bjarmason
> +#
> +
> +test_description='git commit --allow-empty-message'
> +
> +. ./test-lib.sh
> +
> +commit_msg_is () {
> +	test "`git log --pretty=format:%s%b -1`" = "$1"
> +}
> +
> +# A sanity check to see if commit is working at all.
> +test_expect_success 'a basic commit in an empty tree should succeed' '
> +	(
> +		echo content > foo &&
> +		git add foo &&
> +		git commit -m "initial commit"
> +	) &&
> +	commit_msg_is "initial commit"
> +'
> +
> +test_expect_success 'Commit no message with --allow-empty-message' '
> +	(
> +		echo "more content" >> foo &&
> +		git add foo &&
> +		printf "" | git commit --allow-empty-message
> +	) &&
> +	commit_msg_is ""
> +'
> +
> +test_expect_success 'Commit a message with --allow-empty-message' '
> +	(
> +		echo "even more content" >> foo &&
> +		git add foo &&
> +		git commit --allow-empty-message -m"hello there"
> +	) &&
> +	commit_msg_is "hello there"
> +'
> +test_done
> -- 
> 1.7.0.4.298.gc81d
> 
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
-- 
		David
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 4 of 35 in “Does Git really need a commit message to go with a commit?”
  1. Ævar Arnfjörð BjarmasonApr 3, 2010
  2. Avery PennarunApr 4, 2010
  3. Add option to git-commit to allow empty log messagesÆvar Arnfjörð Bjarmason, Apr 4, 2010
  4. David AguilarApr 4, 2010
  5. Ævar Arnfjörð BjarmasonApr 4, 2010
  6. Junio C HamanoApr 5, 2010
  7. Sverre RabbelierApr 5, 2010
  8. Junio C HamanoApr 5, 2010
  9. Sverre RabbelierApr 5, 2010
  10. Miles BaderApr 5, 2010
  11. Junio C HamanoApr 5, 2010
  12. Jeff KingApr 5, 2010
  13. Ævar Arnfjörð BjarmasonApr 5, 2010
  14. Jonathan NiederApr 5, 2010
  15. Jonathan NiederApr 5, 2010
  16. Jeff KingApr 6, 2010
  17. Add option to git-commit to allow empty log messagesÆvar Arnfjörð Bjarmason, Apr 6, 2010
  18. Junio C HamanoApr 7, 2010
  19. Ævar Arnfjörð BjarmasonApr 7, 2010
  20. Ævar Arnfjörð BjarmasonApr 6, 2010
  21. Remove --allow-empty from the git-commit synopsisÆvar Arnfjörð Bjarmason, Apr 7, 2010
  22. Sverre RabbelierApr 7, 2010
  23. Remove --allow-empty from the git-commit synopsisÆvar Arnfjörð Bjarmason, Apr 7, 2010
  24. Sverre RabbelierApr 7, 2010
  25. Ævar Arnfjörð BjarmasonApr 7, 2010
  26. Tay Ray ChuanApr 7, 2010
  27. Remove --allow-empty from the git-commit synopsisÆvar Arnfjörð Bjarmason, Apr 7, 2010
  28. Johannes SixtApr 7, 2010
  29. Junio C HamanoApr 7, 2010
  30. Remove --allow-empty from the git-commit synopsisÆvar Arnfjörð Bjarmason, Apr 7, 2010
  31. Stephen BoydApr 7, 2010
  32. Junio C HamanoApr 7, 2010
  33. Jeff KingApr 8, 2010
  34. Jeff KingApr 6, 2010
  35. Santi BéjarApr 4, 2010

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.