On Tue, Sep 30, 2008 at 11:59:25AM +0200, Andreas Ericsson wrote: > I agree. Obvious solution is to do > > subj_len = term_width - (strlen(cruft) + strlen(branch_name)) I think the difficulty is that the printing is sometimes done by our printf and sometimes by log_tree_commit, and there isn't a convenient way to hook into log_tree_commit to postprocess the formatted output. > where strlen(cruft) is just 8 less if we drop 'commit ' from the > cases. See the patch I just sent though. I sort of like that one. I like it much better than what is on next (and I thought your commit message summed up the issue nicely), but... > Another way would be to write > <branch>: Created <hash>: "subject line..." I think I like this even better. My only concern is that many programs say "program: some error", so you could potentially have a confusing branch name. But I personally have never used a branch name that would cause such confusion. > As <hash> will very, very rarely match anything the user would put > in his/her commit message themselves. Quoting the subject is probably > a nice touch, and it can make sense to put it last as it's the least > interesting of the things we print. Ah well. I'll just await commentary > on the patch I've already sent before I go ahead and do something like > that. Here is a patch for that format on top of next (the patch between this and what is in master is even more simple, since we are mostly removing Pieter's helper function). --- diff --git a/builtin-commit.c b/builtin-commit.c index 917f638..9954a81 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -876,41 +876,17 @@ int cmd_status(int argc, const char **argv, const char *prefix) rollback_index_files(); return commitable ? 0 : 1; } -static char *get_commit_format_string(void) -{ - unsigned char sha[20]; - const char *head = resolve_ref("HEAD", sha, 0, NULL); - struct strbuf buf = STRBUF_INIT; - - strbuf_addstr(&buf, "format:%h"); - - /* Are we on a detached HEAD? */ - if (!strcmp("HEAD", head)) - strbuf_addstr(&buf, " on detached HEAD"); - else if (!prefixcmp(head, "refs/heads/")) { - const char *cp; - strbuf_addstr(&buf, " on "); - for (cp = head + 11; *cp; cp++) { - if (*cp == '%') - strbuf_addstr(&buf, "%x25"); - else - strbuf_addch(&buf, *cp); - } - } - strbuf_addstr(&buf, ": %s"); - - return strbuf_detach(&buf, NULL); -} - static void print_summary(const char *prefix, const unsigned char *sha1) { struct rev_info rev; struct commit *commit; - char *format = get_commit_format_string(); + static const char *format = "format:%h: \"%s\""; + unsigned char junk_sha1[20]; + const char *head = resolve_ref("HEAD", junk_sha1, 0, NULL); commit = lookup_commit(sha1); if (!commit) die("couldn't look up newly created commit"); if (!commit || parse_commit(commit)) @@ -931,19 +907,20 @@ static void print_summary(const char *prefix, const unsigned char *sha1) rev.diffopt.detect_rename = 1; rev.diffopt.rename_limit = 100; rev.diffopt.break_opt = 0; diff_setup_done(&rev.diffopt); - printf("Created %scommit ", initial_commit ? "initial " : ""); + printf("%s%s: created ", + !prefixcmp(head, "refs/heads/") ? head + 11 : head, + initial_commit ? " (initial)" : ""); if (!log_tree_commit(&rev, commit)) { struct strbuf buf = STRBUF_INIT; format_commit_message(commit, format + 7, &buf, DATE_NORMAL); printf("%s\n", buf.buf); strbuf_release(&buf); } - free(format); } static int git_commit_config(const char *k, const char *v, void *cb) { if (!strcmp(k, "commit.template")) -- 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