* [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
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 NNTP newsgroup(s).