Skip to contentSkip to conversation

commit-tree: don't append a newline with -F

PATCH In review Ross Kabus 2 participants 5 messages Sep 7, 2017 – Sep 14, 2017

lore
Share & tools
lore

Ross Kabus

author
#0 lore raw

PATCH 1/1 commit-tree: don't append a newline with -F

This change makes it such that commit-tree -F never appends a newline character to the supplied commit message (either from file or stdin).

Previously, commit-tree -F would always append a newline character to the text brought in from file or stdin. This has caused confusion in a number of ways:
- This is a plumbing command and it is generally expected not to do text cleanup or other niceties.
- stdin piping with "-F -" appends a newline but stdin piping without -F does not append a newline (inconsistent).
- git-commit does not specifically append a newline to the "-F" input. The issue is somewhat muddled by the fact that git-commit does pass the message through its --cleanup option, which may add such a newline. But for commit-tree to match "commit --cleanup=verbatim", we should not do so here.

---
 builtin/commit-tree.c | 1 -
 1 file changed, 1 deletion(-)
builtin/commit-tree.c +0 -1
index 19e898fa4..2177251e2 100644
@@ -102,7 +102,6 @@ int cmd_commit_tree(int argc, const char **argv, const char *prefix)
 			if (fd && close(fd))
 				die_errno("git commit-tree: failed to close '%s'",
 					  argv[i]);
-			strbuf_complete_line(&buffer);
 			continue;
 		}
 
Signature · 1 line
2.13.1.windows.2
#1 lore raw
Quoted 5 lines · Ross Kabus

This change makes it such that commit-tree -F never appends a newline character to the supplied commit message (either from file or stdin).

Previously, commit-tree -F would always append a newline character to the text brought in from file or stdin.

This is not correct. The command adds a missing newline only when the input ended in an incompete line.

I'd rephrase the whole thing like this:

commit-tree: do not complete line in -F input

"git commit-tree -F <file>", unlike "cat <file> | git commit-tree" (i.e. feeding the same contents from the standard input), added a missing final newline when the input ended in an incomplete line.

Correct this inconsistency by leaving the incomplete line as-is, as erring on the side of not touching the input is preferrable and expected for a plumbing command like "commit-tree".

if I were doing this patch.

Thanks.

Quoted 16 lines
---
 builtin/commit-tree.c | 1 -
 1 file changed, 1 deletion(-)
builtin/commit-tree.c +0 -1
index 19e898fa4..2177251e2 100644
@@ -102,7 +102,6 @@ int cmd_commit_tree(int argc, const char **argv, const char *prefix)
 			if (fd && close(fd))
 				die_errno("git commit-tree: failed to close '%s'",
 					  argv[i]);
-			strbuf_complete_line(&buffer);
 			continue;
 		}
author
#2 lore raw
Quoted 10 lines · Junio C Hamano

commit-tree: do not complete line in -F input

"git commit-tree -F <file>", unlike "cat <file> | git commit-tree" (i.e. feeding the same contents from the standard input), added a missing final newline when the input ended in an incomplete line.

Correct this inconsistency by leaving the incomplete line as-is, as erring on the side of not touching the input is preferrable and expected for a plumbing command like "commit-tree".

That all makes sense to me and is clearer too, I like this change. Do I need to resubmit the patch or will you just use that text instead?

#3 lore raw
Quoted 8 lines · Ross Kabus
Quoted 7 lines · Junio C Hamano

commit-tree: do not complete line in -F input

"git commit-tree -F <file>", unlike "cat <file> | git commit-tree" (i.e. feeding the same contents from the standard input), added a missing final newline when the input ended in an incomplete line.

Quoted 6 lines
Quoted 3 lines

Correct this inconsistency by leaving the incomplete line as-is, as erring on the side of not touching the input is preferrable and expected for a plumbing command like "commit-tree".

That all makes sense to me and is clearer too, I like this change. Do I need to resubmit the patch or will you just use that text instead?

Unless the change is in the middle of a large series or require more involved edit [*1*], it is perfectly fine to tell me the maintainer to do these small menial changes on behalf of you---you explicitly need to tell me what you want to happen, though.

Thanks.

[Footnote]

*1* ... in which case we have a larger chance of the maintainer
screwing up while attempting to do so, and I'd prefer to see an updated version posted on the list. That way, we can benefit from extra set of eyeballs watching our exchange from the sideline.

author
#4 lore raw

PATCH v2 1/1 commit-tree: do not complete line in -F input

In reply to Junio C Hamano

"git commit-tree -F <file>", unlike "cat <file> | git commit-tree" (i.e. feeding the same contents from the standard input), added a missing final newline when the input ended in an incomplete line.

Correct this inconsistency by leaving the incomplete line as-is, as erring on the side of not touching the input is preferable and expected for a plumbing command like "commit-tree".

---
Fixed up commit message with feedback from Junio.

 builtin/commit-tree.c | 1 -
 1 file changed, 1 deletion(-)
builtin/commit-tree.c +0 -1
index 19e898fa4..2177251e2 100644
@@ -102,7 +102,6 @@ int cmd_commit_tree(int argc, const char **argv, const char *prefix)
 			if (fd && close(fd))
 				die_errno("git commit-tree: failed to close '%s'",
 					  argv[i]);
-			strbuf_complete_line(&buffer);
 			continue;
 		}
 
Signature · 1 line
2.13.1.windows.2