Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> writes: > 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[] = " !@#$%^&|:;~"; Did you really mean to add a SP to the 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 */ -- 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