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

Re: [PATCH 1/1] Add --first-parent support to interactive rebase.

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 31, 2007, 21:53 UTC
Message-ID
<7v8x5jgdck.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<20071031180557.GA12211@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 7 quoted lines
> It is our old friend vger adding the iso-8859-1 header, I think, since
> no encoding was specified.
>
> I think the problem is that git-format-patch only decides whether to
> append a MIME header based on the commit message contents; it does not
> take the Signed-Off-By into account. This may also be the cause of the
> recent complaints from Matti Aarnio.

I agree. "Signed-off-by" as part of the existing commit message should be fine, but with "format-patch -s" the code needs to be careful.

The following is on top of 'master'. I haven't tested it. If it works, great. If it doesn't, at least it should illustrate what needs to be touched.

Ideally a fix to 'maint' is needed --- the pretty-print infrastructure on the 'master' side has strbuf changes and the patch may have conflicts at the textual level, but it should be straightforward to adjust to it by anybody so inclined (hint, hint).

---
 builtin-branch.c      |    2 +-
 builtin-log.c         |    2 +-
 builtin-rev-list.c    |    3 ++-
 builtin-show-branch.c |    2 +-
 commit.c              |    5 ++---
 commit.h              |    4 +++-
 log-tree.c            |   15 ++++++++++++++-
 7 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/builtin-branch.c b/builtin-branch.c
index 3da8b55..3e020cc 100644
--- a/builtin-branch.c
+++ b/builtin-branch.c
@@ -276,7 +276,7 @@ static void print_ref_item(struct ref_item *item, int maxwidth, int verbose,
 		commit = lookup_commit(item->sha1);
 		if (commit && !parse_commit(commit)) {
 			pretty_print_commit(CMIT_FMT_ONELINE, commit,
-					    &subject, 0, NULL, NULL, 0);
+					    &subject, 0, NULL, NULL, 0, 0);
 			sub = subject.buf;
 		}
 		printf("%c %s%-*s%s %s %s\n", c, branch_get_color(color),
diff --git a/builtin-log.c b/builtin-log.c
index e8b982d..8b2bf63 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -787,7 +787,7 @@ int cmd_cherry(int argc, const char **argv, const char *prefix)
 			struct strbuf buf;
 			strbuf_init(&buf, 0);
 			pretty_print_commit(CMIT_FMT_ONELINE, commit,
-			                    &buf, 0, NULL, NULL, 0);
+			                    &buf, 0, NULL, NULL, 0, 0);
 			printf("%c %s %s\n", sign,
 			       sha1_to_hex(commit->object.sha1), buf.buf);
 			strbuf_release(&buf);
diff --git a/builtin-rev-list.c b/builtin-rev-list.c
index 4439332..6970467 100644
--- a/builtin-rev-list.c
+++ b/builtin-rev-list.c
@@ -86,7 +86,8 @@ static void show_commit(struct commit *commit)
 		struct strbuf buf;
 		strbuf_init(&buf, 0);
 		pretty_print_commit(revs.commit_format, commit,
-					&buf, revs.abbrev, NULL, NULL, revs.date_mode);
+				    &buf, revs.abbrev, NULL, NULL,
+				    revs.date_mode, 0);
 		if (buf.len)
 			printf("%s%c", buf.buf, hdr_termination);
 		strbuf_release(&buf);
diff --git a/builtin-show-branch.c b/builtin-show-branch.c
index 07a0c23..6dc835d 100644
--- a/builtin-show-branch.c
+++ b/builtin-show-branch.c
@@ -266,7 +266,7 @@ static void show_one_commit(struct commit *commit, int no_name)
 	strbuf_init(&pretty, 0);
 	if (commit->object.parsed) {
 		pretty_print_commit(CMIT_FMT_ONELINE, commit,
-					&pretty, 0, NULL, NULL, 0);
+				    &pretty, 0, NULL, NULL, 0, 0);
 		pretty_str = pretty.buf;
 	}
 	if (!prefixcmp(pretty_str, "[PATCH] "))
diff --git a/commit.c b/commit.c
index ac24266..8262f6a 100644
--- a/commit.c
+++ b/commit.c
@@ -479,7 +479,7 @@ static int get_one_line(const char *msg)
 }
 
 /* High bit set, or ISO-2022-INT */
-static int non_ascii(int ch)
+int non_ascii(int ch)
 {
 	ch = (ch & 0xff);
 	return ((ch & 0x80) || (ch == 0x1b));
@@ -1046,12 +1046,11 @@ static void pp_remainder(enum cmit_fmt fmt,
 void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit,
 				  struct strbuf *sb, int abbrev,
 				  const char *subject, const char *after_subject,
-				  enum date_mode dmode)
+				  enum date_mode dmode, int plain_non_ascii)
 {
 	unsigned long beginning_of_body;
 	int indent = 4;
 	const char *msg = commit->buffer;
-	int plain_non_ascii = 0;
 	char *reencoded;
 	const char *encoding;
 
diff --git a/commit.h b/commit.h
index b779de8..678c62b 100644
--- a/commit.h
+++ b/commit.h
@@ -61,13 +61,15 @@ enum cmit_fmt {
 	CMIT_FMT_UNSPECIFIED,
 };
 
+extern int non_ascii(int);
 extern enum cmit_fmt get_commit_format(const char *arg);
 extern void format_commit_message(const struct commit *commit,
                                   const void *format, struct strbuf *sb);
 extern void pretty_print_commit(enum cmit_fmt fmt, const struct commit*,
                                 struct strbuf *,
                                 int abbrev, const char *subject,
-                                const char *after_subject, enum date_mode);
+                                const char *after_subject, enum date_mode,
+				int non_ascii_present);
 
 /** Removes the first commit from a list sorted by date, and adds all
  * of its parents.
diff --git a/log-tree.c b/log-tree.c
index 3763ce9..a34beb0 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -125,6 +125,18 @@ static unsigned int digits_in_number(unsigned int number)
 	return result;
 }
 
+static int has_non_ascii(const char *s)
+{
+	int ch;
+	if (!s)
+		return 0;
+	while ((ch = *s++) != '\0') {
+		if (non_ascii(ch))
+			return 1;
+	}
+	return 0;
+}
+
 void show_log(struct rev_info *opt, const char *sep)
 {
 	struct strbuf msgbuf;
@@ -273,7 +285,8 @@ void show_log(struct rev_info *opt, const char *sep)
 	 */
 	strbuf_init(&msgbuf, 0);
 	pretty_print_commit(opt->commit_format, commit, &msgbuf,
-				  abbrev, subject, extra_headers, opt->date_mode);
+			    abbrev, subject, extra_headers, opt->date_mode,
+			    has_non_ascii(opt->add_signoff));
 
 	if (opt->add_signoff)
 		append_signoff(&msgbuf, opt->add_signoff);
Previous: Björn SteinbrinkNext: Jeff King
Message 13 of 18 in “Add --first-parent support to interactive rebase.”
  1. 1/1 Add --first-parent support to interactive rebase.Björn Steinbrink, Oct 31, 2007
  2. Johannes SchindelinOct 31, 2007
  3. Björn SteinbrinkOct 31, 2007
  4. Johannes SchindelinOct 31, 2007
  5. Wincent ColaiutaOct 31, 2007
  6. Junio C HamanoOct 31, 2007
  7. Björn SteinbrinkOct 31, 2007
  8. Dmitry PotapovOct 31, 2007
  9. Karl HasselströmOct 31, 2007
  10. Dmitry PotapovOct 31, 2007
  11. Jeff KingOct 31, 2007
  12. Björn SteinbrinkOct 31, 2007
  13. Junio C HamanoOct 31, 2007
  14. Jeff KingOct 31, 2007
  15. Junio C HamanoOct 31, 2007
  16. Jeff KingNov 1, 2007
  17. Junio C HamanoNov 1, 2007
  18. Jeff KingNov 1, 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.