git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] Added a new placeholder '%cm' for full commit message
@ 2007-09-21 10:14 Michal Vitecek
  2007-09-21 10:47 ` Johannes Schindelin
  0 siblings, 1 reply; 12+ messages in thread
From: Michal Vitecek @ 2007-09-21 10:14 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 377 bytes --]

 Hello,

 I have added a new placeholder '%cm' for a full commit message. I made
 it because I want to use my own pretty format which currently only
 allows '%s' for subject and '%b' for body. But '%b' is substituted with
 <undefined> if the body is "missing" which I obviously don't like :)

 Thanks for consideration,
                        Michal
-- 
		fuf		(fuf@mageo.cz)

[-- Attachment #2: 0001-Added-a-new-placeholder-cm-for-full-commit-messag.patch --]
[-- Type: text/plain, Size: 2764 bytes --]

>From 5e22a989e6805d860b8477393fa8a6cc54f35193 Mon Sep 17 00:00:00 2001
From: Michal Vitecek <fuf@mageo.cz>
Date: Fri, 21 Sep 2007 12:02:57 +0200
Subject: [PATCH] Added a new placeholder '%cm' for full commit message

---
 Documentation/pretty-formats.txt |    1 +
 commit.c                         |   18 +++++++++++++++++-
 2 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 0193c3c..26c42d3 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -117,6 +117,7 @@ The placeholders are:
 - '%e': encoding
 - '%s': subject
 - '%b': body
+- '%cm': commit message
 - '%Cred': switch color to red
 - '%Cgreen': switch color to green
 - '%Cblue': switch color to blue
diff --git a/commit.c b/commit.c
index 99f65ce..1e24e21 100644
--- a/commit.c
+++ b/commit.c
@@ -814,6 +814,7 @@ long format_commit_message(const struct commit *commit, const void *format,
 		{ "%e" },	/* encoding */
 		{ "%s" },	/* subject */
 		{ "%b" },	/* body */
+                { "%cm" },      /* commit message (subject and body) */
 		{ "%Cred" },	/* red */
 		{ "%Cgreen" },	/* green */
 		{ "%Cblue" },	/* blue */
@@ -835,12 +836,14 @@ long format_commit_message(const struct commit *commit, const void *format,
 		IENCODING,
 		ISUBJECT,
 		IBODY,
+                ICOMMIT_MESSAGE,
 		IRED, IGREEN, IBLUE, IRESET_COLOR,
 		INEWLINE,
 		ILEFT_RIGHT,
 	};
 	struct commit_list *p;
 	char parents[1024];
+        int cm_len = 0;
 	int i;
 	enum { HEADER, SUBJECT, BODY } state;
 	const char *msg = commit->buffer;
@@ -897,6 +900,7 @@ long format_commit_message(const struct commit *commit, const void *format,
 
 		if (state == SUBJECT) {
 			table[ISUBJECT].value = xstrndup(msg + i, eol - i);
+                        cm_len = eol - i + 2; /* + 2 for 2 newlines */
 			i = eol;
 		}
 		if (i == eol) {
@@ -915,8 +919,20 @@ long format_commit_message(const struct commit *commit, const void *format,
 				xstrndup(msg + i + 9, eol - i - 9);
 		i = eol;
 	}
-	if (msg[i])
+	if (msg[i]) {
 		table[IBODY].value = xstrdup(msg + i);
+                cm_len += strlen(msg + i);
+        }
+        if (cm_len) {
+            table[ICOMMIT_MESSAGE].value = xmalloc(cm_len + 1);
+            table[ICOMMIT_MESSAGE].value[0] = '\0';
+            if (table[ISUBJECT].value) {
+                strcpy(table[ICOMMIT_MESSAGE].value, table[ISUBJECT].value);
+                strcat(table[ICOMMIT_MESSAGE].value, "\n\n");
+            }
+            if (table[IBODY].value)
+                strcat(table[ICOMMIT_MESSAGE].value, table[IBODY].value);
+        }
 	for (i = 0; i < ARRAY_SIZE(table); i++)
 		if (!table[i].value)
 			interp_set_entry(table, i, "<unknown>");
-- 
1.5.3.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] Added a new placeholder '%cm' for full commit message
  2007-09-21 10:14 [PATCH] Added a new placeholder '%cm' for full commit message Michal Vitecek
@ 2007-09-21 10:47 ` Johannes Schindelin
  2007-09-21 11:06   ` Michal Vitecek
  0 siblings, 1 reply; 12+ messages in thread
From: Johannes Schindelin @ 2007-09-21 10:47 UTC (permalink / raw)
  To: Michal Vitecek; +Cc: git

Hi,

On Fri, 21 Sep 2007, Michal Vitecek wrote:

> I have added a new placeholder '%cm' for a full commit message.

You mean the raw message, including the headers?  Why not use "%r" for 
that?

> I made it because I want to use my own pretty format which currently 
> only allows '%s' for subject and '%b' for body. But '%b' is substituted 
> with <undefined> if the body is "missing" which I obviously don't like 
> :)

Then you should fix %b not to show "<undefined>".

And please adher to the tips in Documentation/SubmittingPatches.

Thank you,
Dscho

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] Added a new placeholder '%cm' for full commit message
  2007-09-21 10:47 ` Johannes Schindelin
@ 2007-09-21 11:06   ` Michal Vitecek
  2007-09-21 11:08     ` Johannes Schindelin
  0 siblings, 1 reply; 12+ messages in thread
From: Michal Vitecek @ 2007-09-21 11:06 UTC (permalink / raw)
  To: git

Johannes Schindelin wrote:
>On Fri, 21 Sep 2007, Michal Vitecek wrote:
>
>> I have added a new placeholder '%cm' for a full commit message.
>
>You mean the raw message, including the headers?  Why not use "%r" for 
>that?

 No, sorry for the incorrect term. I meant the whole commit message
 (subject + 2*\n + body).

>> I made it because I want to use my own pretty format which currently 
>> only allows '%s' for subject and '%b' for body. But '%b' is substituted 
>> with <undefined> if the body is "missing" which I obviously don't like 
>> :)
>
>Then you should fix %b not to show "<undefined>".

 I'll do it if it is okay. Shall I do the same for the other
 placeholders as well?

>And please adher to the tips in Documentation/SubmittingPatches.

 Will do, sorry about the attachment - still learning :)

    Thank you,
                Michal
-- 
		fuf		(fuf@mageo.cz)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] Added a new placeholder '%cm' for full commit message
  2007-09-21 11:06   ` Michal Vitecek
@ 2007-09-21 11:08     ` Johannes Schindelin
  2007-09-21 14:05       ` [PATCH] Use "" instead of "<unknown>" for placeholders [was Re: [PATCH] Added a new placeholder '%cm' for full commit message] Michal Vitecek
  0 siblings, 1 reply; 12+ messages in thread
From: Johannes Schindelin @ 2007-09-21 11:08 UTC (permalink / raw)
  To: Michal Vitecek; +Cc: git

Hi,

On Fri, 21 Sep 2007, Michal Vitecek wrote:

> Johannes Schindelin wrote:
> >On Fri, 21 Sep 2007, Michal Vitecek wrote:
> >
> >> I have added a new placeholder '%cm' for a full commit message.
> >
> >You mean the raw message, including the headers?  Why not use "%r" for 
> >that?
> 
>  No, sorry for the incorrect term. I meant the whole commit message
>  (subject + 2*\n + body).

Ah, makes sense.  In that case, "%M" maybe?

> >> I made it because I want to use my own pretty format which currently 
> >> only allows '%s' for subject and '%b' for body. But '%b' is 
> >> substituted with <undefined> if the body is "missing" which I 
> >> obviously don't like :)
> >
> >Then you should fix %b not to show "<undefined>".
> 
>  I'll do it if it is okay. Shall I do the same for the other
>  placeholders as well?

Yeah.  Don't know why I did it that way.

> >And please adher to the tips in Documentation/SubmittingPatches.
> 
>  Will do, sorry about the attachment - still learning :)

No problem.  Thanks for contributing!

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH] Use "" instead of "<unknown>" for placeholders [was Re: [PATCH] Added a new placeholder '%cm' for full commit message]
  2007-09-21 11:08     ` Johannes Schindelin
@ 2007-09-21 14:05       ` Michal Vitecek
  2007-09-21 20:12         ` [PATCH] Use "" instead of "<unknown>" for placeholders Junio C Hamano
  0 siblings, 1 reply; 12+ messages in thread
From: Michal Vitecek @ 2007-09-21 14:05 UTC (permalink / raw)
  To: git

Johannes Schindelin wrote:
>On Fri, 21 Sep 2007, Michal Vitecek wrote:
>> Johannes Schindelin wrote:
>> >On Fri, 21 Sep 2007, Michal Vitecek wrote:
>> >
>> >> I have added a new placeholder '%cm' for a full commit message.
>> >
>> >You mean the raw message, including the headers?  Why not use "%r" for 
>> >that?
>> 
>>  No, sorry for the incorrect term. I meant the whole commit message
>>  (subject + 2*\n + body).
>
>Ah, makes sense.  In that case, "%M" maybe?

 I think it's no longer needed if instead of "<undefined>" only "" will
 be substituted.

>> >> I made it because I want to use my own pretty format which currently 
>> >> only allows '%s' for subject and '%b' for body. But '%b' is 
>> >> substituted with <undefined> if the body is "missing" which I 
>> >> obviously don't like :)
>> >
>> >Then you should fix %b not to show "<undefined>".
>> 
>>  I'll do it if it is okay. Shall I do the same for the other
>>  placeholders as well?
>
>Yeah.  Don't know why I did it that way.

 Here comes the big patch :)


>From 2e4ba4e73bbcd19558039dd85fe45c7bbe7fd1c4 Mon Sep 17 00:00:00 2001
From: Michal Vitecek <fuf@mageo.cz>
Date: Fri, 21 Sep 2007 14:40:37 +0200
Subject: [PATCH] Use "" instead of "<unknown>" for placeholders

---
 commit.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/commit.c b/commit.c
index 99f65ce..7e90bc1 100644
--- a/commit.c
+++ b/commit.c
@@ -919,7 +919,7 @@ long format_commit_message(const struct commit *commit, const void *format,
 		table[IBODY].value = xstrdup(msg + i);
 	for (i = 0; i < ARRAY_SIZE(table); i++)
 		if (!table[i].value)
-			interp_set_entry(table, i, "<unknown>");
+			interp_set_entry(table, i, "");
 
 	do {
 		char *buf = *buf_p;
-- 
1.5.3.1

-- 
		fuf		(fuf@mageo.cz)

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] Use "" instead of "<unknown>" for placeholders
  2007-09-21 14:05       ` [PATCH] Use "" instead of "<unknown>" for placeholders [was Re: [PATCH] Added a new placeholder '%cm' for full commit message] Michal Vitecek
@ 2007-09-21 20:12         ` Junio C Hamano
  2007-09-21 20:41           ` Johannes Schindelin
  2007-09-22  8:53           ` Michal Vitecek
  0 siblings, 2 replies; 12+ messages in thread
From: Junio C Hamano @ 2007-09-21 20:12 UTC (permalink / raw)
  To: Michal Vitecek; +Cc: git, Johannes Schindelin

Michal Vitecek <fuf@mageo.cz> writes:

[jc: Added Dscho back on CC: list]

>>> >> I made it because I want to use my own pretty format which currently 
>>> >> only allows '%s' for subject and '%b' for body. But '%b' is 
>>> >> substituted with <undefined> if the body is "missing" which I 
>>> >> obviously don't like :)
>>> >
>>> >Then you should fix %b not to show "<undefined>".
>>> 
>>>  I'll do it if it is okay. Shall I do the same for the other
>>>  placeholders as well?
>>
>>Yeah.  Don't know why I did it that way.
>
>  Here comes the big patch :)

Now, this breaks t6006 which needs this patch.

Looking at this patch, I am not sure if your change is really a
desirable one --- shouldn't it be removing the line itself, not
just <unknown> token?

---
 t/t6006-rev-list-format.sh |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/t/t6006-rev-list-format.sh b/t/t6006-rev-list-format.sh
index ad6d0b8..2be323c 100755
--- a/t/t6006-rev-list-format.sh
+++ b/t/t6006-rev-list-format.sh
@@ -79,9 +79,9 @@ EOF
 
 test_format encoding %e <<'EOF'
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
+
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
+
 EOF
 
 test_format subject %s <<'EOF'
@@ -93,9 +93,9 @@ EOF
 
 test_format body %b <<'EOF'
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
+
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
+
 EOF
 
 test_format colors %Credfoo%Cgreenbar%Cbluebaz%Cresetxyzzy <<'EOF'
@@ -121,9 +121,9 @@ test_format complex-encoding %e <<'EOF'
 commit f58db70b055c5718631e5c61528b28b12090cdea
 iso8859-1
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
+
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
+
 EOF
 
 test_format complex-subject %s <<'EOF'
@@ -142,9 +142,9 @@ and it will be encoded in iso8859-1. We should therefore
 include an iso8859 character: 臓bueno!
 
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
+
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
+
 EOF
 
 test_done

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] Use "" instead of "<unknown>" for placeholders
  2007-09-21 20:12         ` [PATCH] Use "" instead of "<unknown>" for placeholders Junio C Hamano
@ 2007-09-21 20:41           ` Johannes Schindelin
  2007-09-22  8:53           ` Michal Vitecek
  1 sibling, 0 replies; 12+ messages in thread
From: Johannes Schindelin @ 2007-09-21 20:41 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Michal Vitecek, git

Hi,

On Fri, 21 Sep 2007, Junio C Hamano wrote:

> Michal Vitecek <fuf@mageo.cz> writes:
> 
> [jc: Added Dscho back on CC: list]

Thanks.  I missed that one.  My comment would have been exactly the same.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] Use "" instead of "<unknown>" for placeholders
  2007-09-21 20:12         ` [PATCH] Use "" instead of "<unknown>" for placeholders Junio C Hamano
  2007-09-21 20:41           ` Johannes Schindelin
@ 2007-09-22  8:53           ` Michal Vitecek
  2007-09-25  9:43             ` Michal Vitecek
  1 sibling, 1 reply; 12+ messages in thread
From: Michal Vitecek @ 2007-09-22  8:53 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Johannes Schindelin

Junio C Hamano wrote:
>>>>>> I made it because I want to use my own pretty format which currently 
>>>>>> only allows '%s' for subject and '%b' for body. But '%b' is 
>>>>>> substituted with <undefined> if the body is "missing" which I 
>>>>>> obviously don't like :)
>>>>> Then you should fix %b not to show "<undefined>".
>>>>  I'll do it if it is okay. Shall I do the same for the other
>>>>  placeholders as well?
>>> Yeah.  Don't know why I did it that way.
>>  Here comes the big patch :)
> 
> Now, this breaks t6006 which needs this patch.

Oops - I'm sorry about that. I ran the test suite (1.5.3.1) but it 
failed in 2 tests before the patch and in 2 tests after it so I 
considered it okay.

> Looking at this patch, I am not sure if your change is really a
> desirable one --- shouldn't it be removing the line itself, not
> just <unknown> token?

This sounds as the best solution. I'll look into it. Thanks for your time.

-- 
		fuf					(fuf@mageo.cz)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] Use "" instead of "<unknown>" for placeholders
  2007-09-22  8:53           ` Michal Vitecek
@ 2007-09-25  9:43             ` Michal Vitecek
  2007-09-25 10:25               ` Johannes Schindelin
  0 siblings, 1 reply; 12+ messages in thread
From: Michal Vitecek @ 2007-09-25  9:43 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Johannes Schindelin

 Hello again,

Michal Vitecek wrote:
> Junio C Hamano wrote:
>>>>>>> I made it because I want to use my own pretty format which currently 
>>>>>>> only allows '%s' for subject and '%b' for body. But '%b' is 
>>>>>>> substituted with <undefined> if the body is "missing" which I 
>>>>>>> obviously don't like :)
>>>>>> Then you should fix %b not to show "<undefined>".
>>>>>  I'll do it if it is okay. Shall I do the same for the other
>>>>>  placeholders as well?
>>>> Yeah.  Don't know why I did it that way.
>>>  Here comes the big patch :)
>> Now, this breaks t6006 which needs this patch.
>
> Oops - I'm sorry about that. I ran the test suite (1.5.3.1) but it failed 
> in 2 tests before the patch and in 2 tests after it so I considered it 
> okay.
>
>> Looking at this patch, I am not sure if your change is really a
>> desirable one --- shouldn't it be removing the line itself, not
>> just <unknown> token?
>
> This sounds as the best solution. I'll look into it. Thanks for your time.

 Here comes the patch. I hope it will be ok this time :) Thanks.

 Don't use "<unknown>" for unknown values of placeholders and suppress
 printing of empty user formats.

---
 builtin-rev-list.c         |    3 ++-
 commit.c                   |    3 ---
 interpolate.c              |    6 +++++-
 log-tree.c                 |   10 ++++++----
 t/t6006-rev-list-format.sh |    8 --------
 t/t7500-commit.sh          |    4 ++--
 6 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/builtin-rev-list.c b/builtin-rev-list.c
index 3894633..1de981d 100644
--- a/builtin-rev-list.c
+++ b/builtin-rev-list.c
@@ -85,7 +85,8 @@ static void show_commit(struct commit *commit)
 		pretty_print_commit(revs.commit_format, commit, ~0,
 				    &buf, &buflen,
 				    revs.abbrev, NULL, NULL, revs.date_mode);
-		printf("%s%c", buf, hdr_termination);
+                if (strlen(buf))
+                    printf("%s%c", buf, hdr_termination);
 		free(buf);
 	}
 	maybe_flush_or_die(stdout, "stdout");
diff --git a/commit.c b/commit.c
index 99f65ce..c9a1818 100644
--- a/commit.c
+++ b/commit.c
@@ -917,9 +917,6 @@ long format_commit_message(const struct commit *commit, const void *format,
 	}
 	if (msg[i])
 		table[IBODY].value = xstrdup(msg + i);
-	for (i = 0; i < ARRAY_SIZE(table); i++)
-		if (!table[i].value)
-			interp_set_entry(table, i, "<unknown>");
 
 	do {
 		char *buf = *buf_p;
diff --git a/interpolate.c b/interpolate.c
index 0082677..58fd055 100644
--- a/interpolate.c
+++ b/interpolate.c
@@ -76,8 +76,12 @@ unsigned long interpolate(char *result, unsigned long reslen,
 			/* Check for valid interpolation. */
 			if (i < ninterps) {
 				value = interps[i].value;
-				valuelen = strlen(value);
+                                if (value == NULL) {
+                                    src += namelen;
+                                    continue;
+                                }
 
+				valuelen = strlen(value);
 				if (newlen + valuelen + 1 < reslen) {
 					/* Substitute. */
 					strncpy(dest, value, valuelen);
diff --git a/log-tree.c b/log-tree.c
index a642371..5653332 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -175,14 +175,15 @@ void show_log(struct rev_info *opt, const char *sep)
 	 *  - The pretty-printed commit lacks a newline at the end
 	 *    of the buffer, but we do want to make sure that we
 	 *    have a newline there. If the separator isn't already
-	 *    a newline, add an extra one.
+         *    a newline, add an extra one and do the same for the
+         *    user format as well.
 	 *  - unlike other log messages, the one-line format does
 	 *    not have an empty line between entries.
 	 */
 	extra = "";
-	if (*sep != '\n' && opt->commit_format == CMIT_FMT_ONELINE)
+	if (*sep != '\n' && (opt->commit_format == CMIT_FMT_ONELINE || opt->commit_format == CMIT_FMT_USERFORMAT))
 		extra = "\n";
-	if (opt->shown_one && opt->commit_format != CMIT_FMT_ONELINE)
+	if (opt->shown_one && opt->commit_format != CMIT_FMT_ONELINE && opt->commit_format != CMIT_FMT_USERFORMAT)
 		putchar(opt->diffopt.line_termination);
 	opt->shown_one = 1;
 
@@ -298,7 +299,8 @@ void show_log(struct rev_info *opt, const char *sep)
 	if (opt->show_log_size)
 		printf("log size %i\n", len);
 
-	printf("%s%s%s", msgbuf, extra, sep);
+        if (strlen(msgbuf))
+            printf("%s%s%s", msgbuf, extra, sep);
 	free(msgbuf);
 }
 
diff --git a/t/t6006-rev-list-format.sh b/t/t6006-rev-list-format.sh
index ad6d0b8..1e4541a 100755
--- a/t/t6006-rev-list-format.sh
+++ b/t/t6006-rev-list-format.sh
@@ -79,9 +79,7 @@ EOF
 
 test_format encoding %e <<'EOF'
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_format subject %s <<'EOF'
@@ -93,9 +91,7 @@ EOF
 
 test_format body %b <<'EOF'
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_format colors %Credfoo%Cgreenbar%Cbluebaz%Cresetxyzzy <<'EOF'
@@ -121,9 +117,7 @@ test_format complex-encoding %e <<'EOF'
 commit f58db70b055c5718631e5c61528b28b12090cdea
 iso8859-1
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_format complex-subject %s <<'EOF'
@@ -142,9 +136,7 @@ and it will be encoded in iso8859-1. We should therefore
 include an iso8859 character: ÂĄbueno!
 
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_done
diff --git a/t/t7500-commit.sh b/t/t7500-commit.sh
index f11ada8..abbf54b 100755
--- a/t/t7500-commit.sh
+++ b/t/t7500-commit.sh
@@ -81,7 +81,7 @@ test_expect_success 'explicit commit message should override template' '
 	git add foo &&
 	GIT_EDITOR=../t7500/add-content git commit --template "$TEMPLATE" \
 		-m "command line msg" &&
-	commit_msg_is "command line msg<unknown>"
+	commit_msg_is "command line msg"
 '
 
 test_expect_success 'commit message from file should override template' '
@@ -90,7 +90,7 @@ test_expect_success 'commit message from file should override template' '
 	echo "standard input msg" |
 		GIT_EDITOR=../t7500/add-content git commit \
 			--template "$TEMPLATE" --file - &&
-	commit_msg_is "standard input msg<unknown>"
+	commit_msg_is "standard input msg"
 '
 
 test_done
-- 
1.5.3.1


-- 
		fuf		(fuf@mageo.cz)

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] Use "" instead of "<unknown>" for placeholders
  2007-09-25  9:43             ` Michal Vitecek
@ 2007-09-25 10:25               ` Johannes Schindelin
  2007-09-25 10:52                 ` Michal Vitecek
  2007-09-25 12:46                 ` Johannes Schindelin
  0 siblings, 2 replies; 12+ messages in thread
From: Johannes Schindelin @ 2007-09-25 10:25 UTC (permalink / raw)
  To: Michal Vitecek; +Cc: Junio C Hamano, git

Hi,

On Tue, 25 Sep 2007, Michal Vitecek wrote:

>  Hello again,
> 
> Michal Vitecek wrote:
> > Junio C Hamano wrote:
> >>>>>>> I made it because I want to use my own pretty format which currently 
> >>>>>>> only allows '%s' for subject and '%b' for body. But '%b' is 
> >>>>>>> substituted with <undefined> if the body is "missing" which I 
> >>>>>>> obviously don't like :)
> >>>>>> Then you should fix %b not to show "<undefined>".
> >>>>>  I'll do it if it is okay. Shall I do the same for the other
> >>>>>  placeholders as well?
> >>>> Yeah.  Don't know why I did it that way.
> >>>  Here comes the big patch :)
> >> Now, this breaks t6006 which needs this patch.
> >
> > Oops - I'm sorry about that. I ran the test suite (1.5.3.1) but it failed 
> > in 2 tests before the patch and in 2 tests after it so I considered it 
> > okay.
> >
> >> Looking at this patch, I am not sure if your change is really a
> >> desirable one --- shouldn't it be removing the line itself, not
> >> just <unknown> token?
> >
> > This sounds as the best solution. I'll look into it. Thanks for your time.
> 
>  Here comes the patch. I hope it will be ok this time :) Thanks.
> 
>  Don't use "<unknown>" for unknown values of placeholders and suppress
>  printing of empty user formats.
> 
> ---

Please move the discussion which should not be in the commit message 
_after_ the "---".

> diff --git a/builtin-rev-list.c b/builtin-rev-list.c
> index 3894633..1de981d 100644
> --- a/builtin-rev-list.c
> +++ b/builtin-rev-list.c
> @@ -85,7 +85,8 @@ static void show_commit(struct commit *commit)
>  		pretty_print_commit(revs.commit_format, commit, ~0,
>  				    &buf, &buflen,
>  				    revs.abbrev, NULL, NULL, revs.date_mode);
> -		printf("%s%c", buf, hdr_termination);
> +                if (strlen(buf))
> +                    printf("%s%c", buf, hdr_termination);

We use tabs for indentation, not spaces.

Also, instead of the expensive "strlen(buf)", you rather want to check "if 
(*buf)".

> diff --git a/log-tree.c b/log-tree.c
> index a642371..5653332 100644
> --- a/log-tree.c
> +++ b/log-tree.c
> @@ -298,7 +299,8 @@ void show_log(struct rev_info *opt, const char *sep)
>  	if (opt->show_log_size)
>  		printf("log size %i\n", len);
>  
> -	printf("%s%s%s", msgbuf, extra, sep);
> +        if (strlen(msgbuf))
> +            printf("%s%s%s", msgbuf, extra, sep);

Again, "if (*msgbuf)" is way more efficient.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] Use "" instead of "<unknown>" for placeholders
  2007-09-25 10:25               ` Johannes Schindelin
@ 2007-09-25 10:52                 ` Michal Vitecek
  2007-09-25 12:46                 ` Johannes Schindelin
  1 sibling, 0 replies; 12+ messages in thread
From: Michal Vitecek @ 2007-09-25 10:52 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Junio C Hamano, git

 Hi,

Johannes Schindelin wrote:
>> >>>>>>> I made it because I want to use my own pretty format which currently 
>> >>>>>>> only allows '%s' for subject and '%b' for body. But '%b' is 
>> >>>>>>> substituted with <undefined> if the body is "missing" which I 
>> >>>>>>> obviously don't like :)
>> >>>>>> Then you should fix %b not to show "<undefined>".
>> >>>>>  I'll do it if it is okay. Shall I do the same for the other
>> >>>>>  placeholders as well?
>> >>>> Yeah.  Don't know why I did it that way.
>> >>>  Here comes the big patch :)
>> >> Now, this breaks t6006 which needs this patch.
>> >
>> > Oops - I'm sorry about that. I ran the test suite (1.5.3.1) but it failed 
>> > in 2 tests before the patch and in 2 tests after it so I considered it 
>> > okay.
>> >
>> >> Looking at this patch, I am not sure if your change is really a
>> >> desirable one --- shouldn't it be removing the line itself, not
>> >> just <unknown> token?
>> >
>> > This sounds as the best solution. I'll look into it. Thanks for your time.
>> 
>>  Here comes the patch. I hope it will be ok this time :) Thanks.
>> 
>>  Don't use "<unknown>" for unknown values of placeholders and suppress
>>  printing of empty user formats.
>> 
>> ---
>
>We use tabs for indentation, not spaces.
>
>Also, instead of the expensive "strlen(buf)", you rather want to check "if 
>(*buf)".

---

 Thanks for the notes - here comes the patch with the above fixes.


 builtin-rev-list.c         |    3 ++-
 commit.c                   |    3 ---
 interpolate.c              |    6 +++++-
 log-tree.c                 |   10 ++++++----
 t/t6006-rev-list-format.sh |    8 --------
 t/t7500-commit.sh          |    4 ++--
 6 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/builtin-rev-list.c b/builtin-rev-list.c
index 3894633..0b74eb3 100644
--- a/builtin-rev-list.c
+++ b/builtin-rev-list.c
@@ -85,7 +85,8 @@ static void show_commit(struct commit *commit)
 		pretty_print_commit(revs.commit_format, commit, ~0,
 				    &buf, &buflen,
 				    revs.abbrev, NULL, NULL, revs.date_mode);
-		printf("%s%c", buf, hdr_termination);
+		if (*buf)
+			printf("%s%c", buf, hdr_termination);
 		free(buf);
 	}
 	maybe_flush_or_die(stdout, "stdout");
diff --git a/commit.c b/commit.c
index 99f65ce..c9a1818 100644
--- a/commit.c
+++ b/commit.c
@@ -917,9 +917,6 @@ long format_commit_message(const struct commit *commit, const void *format,
 	}
 	if (msg[i])
 		table[IBODY].value = xstrdup(msg + i);
-	for (i = 0; i < ARRAY_SIZE(table); i++)
-		if (!table[i].value)
-			interp_set_entry(table, i, "<unknown>");
 
 	do {
 		char *buf = *buf_p;
diff --git a/interpolate.c b/interpolate.c
index 0082677..2f727cd 100644
--- a/interpolate.c
+++ b/interpolate.c
@@ -76,8 +76,12 @@ unsigned long interpolate(char *result, unsigned long reslen,
 			/* Check for valid interpolation. */
 			if (i < ninterps) {
 				value = interps[i].value;
-				valuelen = strlen(value);
+				if (!value) {
+					src += namelen;
+					continue;
+				}
 
+				valuelen = strlen(value);
 				if (newlen + valuelen + 1 < reslen) {
 					/* Substitute. */
 					strncpy(dest, value, valuelen);
diff --git a/log-tree.c b/log-tree.c
index a642371..79502f4 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -175,14 +175,15 @@ void show_log(struct rev_info *opt, const char *sep)
 	 *  - The pretty-printed commit lacks a newline at the end
 	 *    of the buffer, but we do want to make sure that we
 	 *    have a newline there. If the separator isn't already
-	 *    a newline, add an extra one.
+         *    a newline, add an extra one and do the same for the
+         *    user format as well.
 	 *  - unlike other log messages, the one-line format does
 	 *    not have an empty line between entries.
 	 */
 	extra = "";
-	if (*sep != '\n' && opt->commit_format == CMIT_FMT_ONELINE)
+	if (*sep != '\n' && (opt->commit_format == CMIT_FMT_ONELINE || opt->commit_format == CMIT_FMT_USERFORMAT))
 		extra = "\n";
-	if (opt->shown_one && opt->commit_format != CMIT_FMT_ONELINE)
+	if (opt->shown_one && opt->commit_format != CMIT_FMT_ONELINE && opt->commit_format != CMIT_FMT_USERFORMAT)
 		putchar(opt->diffopt.line_termination);
 	opt->shown_one = 1;
 
@@ -298,7 +299,8 @@ void show_log(struct rev_info *opt, const char *sep)
 	if (opt->show_log_size)
 		printf("log size %i\n", len);
 
-	printf("%s%s%s", msgbuf, extra, sep);
+	if (*msgbuf)
+		printf("%s%s%s", msgbuf, extra, sep);
 	free(msgbuf);
 }
 
diff --git a/t/t6006-rev-list-format.sh b/t/t6006-rev-list-format.sh
index ad6d0b8..1e4541a 100755
--- a/t/t6006-rev-list-format.sh
+++ b/t/t6006-rev-list-format.sh
@@ -79,9 +79,7 @@ EOF
 
 test_format encoding %e <<'EOF'
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_format subject %s <<'EOF'
@@ -93,9 +91,7 @@ EOF
 
 test_format body %b <<'EOF'
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_format colors %Credfoo%Cgreenbar%Cbluebaz%Cresetxyzzy <<'EOF'
@@ -121,9 +117,7 @@ test_format complex-encoding %e <<'EOF'
 commit f58db70b055c5718631e5c61528b28b12090cdea
 iso8859-1
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_format complex-subject %s <<'EOF'
@@ -142,9 +136,7 @@ and it will be encoded in iso8859-1. We should therefore
 include an iso8859 character: ÂĄbueno!
 
 commit 131a310eb913d107dd3c09a65d1651175898735d
-<unknown>
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
-<unknown>
 EOF
 
 test_done
diff --git a/t/t7500-commit.sh b/t/t7500-commit.sh
index f11ada8..abbf54b 100755
--- a/t/t7500-commit.sh
+++ b/t/t7500-commit.sh
@@ -81,7 +81,7 @@ test_expect_success 'explicit commit message should override template' '
 	git add foo &&
 	GIT_EDITOR=../t7500/add-content git commit --template "$TEMPLATE" \
 		-m "command line msg" &&
-	commit_msg_is "command line msg<unknown>"
+	commit_msg_is "command line msg"
 '
 
 test_expect_success 'commit message from file should override template' '
@@ -90,7 +90,7 @@ test_expect_success 'commit message from file should override template' '
 	echo "standard input msg" |
 		GIT_EDITOR=../t7500/add-content git commit \
 			--template "$TEMPLATE" --file - &&
-	commit_msg_is "standard input msg<unknown>"
+	commit_msg_is "standard input msg"
 '
 
 test_done
-- 
1.5.3.2


-- 
		fuf		(fuf@mageo.cz)

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] Use "" instead of "<unknown>" for placeholders
  2007-09-25 10:25               ` Johannes Schindelin
  2007-09-25 10:52                 ` Michal Vitecek
@ 2007-09-25 12:46                 ` Johannes Schindelin
  1 sibling, 0 replies; 12+ messages in thread
From: Johannes Schindelin @ 2007-09-25 12:46 UTC (permalink / raw)
  To: Michal Vitecek; +Cc: Junio C Hamano, git

Hi,

On Tue, 25 Sep 2007, Johannes Schindelin wrote:

> On Tue, 25 Sep 2007, Michal Vitecek wrote:
> 
> > [lots of quoted mails]
> > 
> >  Here comes the patch. I hope it will be ok this time :) Thanks.
> > 
> >  Don't use "<unknown>" for unknown values of placeholders and suppress
> >  printing of empty user formats.
> > 
> > ---
> 
> Please move the discussion which should not be in the commit message 
> _after_ the "---".

What about this comment?

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2007-09-25 12:47 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-09-21 10:14 [PATCH] Added a new placeholder '%cm' for full commit message Michal Vitecek
2007-09-21 10:47 ` Johannes Schindelin
2007-09-21 11:06   ` Michal Vitecek
2007-09-21 11:08     ` Johannes Schindelin
2007-09-21 14:05       ` [PATCH] Use "" instead of "<unknown>" for placeholders [was Re: [PATCH] Added a new placeholder '%cm' for full commit message] Michal Vitecek
2007-09-21 20:12         ` [PATCH] Use "" instead of "<unknown>" for placeholders Junio C Hamano
2007-09-21 20:41           ` Johannes Schindelin
2007-09-22  8:53           ` Michal Vitecek
2007-09-25  9:43             ` Michal Vitecek
2007-09-25 10:25               ` Johannes Schindelin
2007-09-25 10:52                 ` Michal Vitecek
2007-09-25 12:46                 ` Johannes Schindelin

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).