If we need to use core.commentChar and it's already in the prepared message, find another char among a small subset. This should stop surprises because git strips some lines unexpectedly. Of course if candicate characters happen to be all out, this change does not help. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- On Fri, May 16, 2014 at 5:28 PM, Duy Nguyen <pclouds@xxxxxxxxx> wrote: > But maybe git should detect that the > current commit message has leading '#' and automatically switch to > another character.. Something like this. Lightly tested.. I know there's a small bug.. builtin/commit.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/builtin/commit.c b/builtin/commit.c index 6ab4605..70ceb61 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -593,6 +593,32 @@ static char *cut_ident_timestamp_part(char *string) return ket; } +static void adjust_comment_line_char(const struct strbuf *sb) +{ + char candidates[] = " !@#$%^&|:;~"; + char *candidate; + const char *p; + if (!sb->len) + return; + candidates[0] = comment_line_char; + p = sb->buf; + do { + candidate = strchr(candidates, *p); + if (candidate) + *candidate = ' '; + p = strchrnul(p, '\n'); + if (*p) + p++; + } while (*p); + if (strchr(candidates, comment_line_char)) { + p = candidates; + while (*p && *p == ' ') + p++; + if (*p) + comment_line_char = *p; + } +} + static int prepare_to_commit(const char *index_file, const char *prefix, struct commit *current_head, struct wt_status *s, @@ -748,6 +774,9 @@ static int prepare_to_commit(const char *index_file, const char *prefix, if (fwrite(sb.buf, 1, sb.len, s->fp) < sb.len) die_errno(_("could not write commit template")); + if (use_editor && include_status) + adjust_comment_line_char(&sb); + strbuf_release(&sb); /* This checks if committer ident is explicitly given */ -- 1.9.1.346.ga2b5940 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html