* [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).