From: Junio C Hamano Date: Wed, 3 Sep 2008 00:45:28 +0000 (-0700) Subject: Merge branch 'jc/author-nickname' X-Git-Tag: v1.6.1-rc1~278 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/1c12b38601b5b4da61a2e90540a8de56261d93af?hp=-c Merge branch 'jc/author-nickname' * jc/author-nickname: git commit --author=$name: look $name up in existing commits --- 1c12b38601b5b4da61a2e90540a8de56261d93af diff --combined builtin-commit.c index b75d5e931d,4182686b90..8165bb3d31 --- a/builtin-commit.c +++ b/builtin-commit.c @@@ -320,7 -320,7 +320,7 @@@ static char *prepare_index(int argc, co die("unable to write new_index file"); fd = hold_lock_file_for_update(&false_lock, - git_path("next-index-%d", getpid()), 1); + git_path("next-index-%"PRIuMAX, (uintmax_t) getpid()), 1); create_base_index(); add_remove_files(&partial); @@@ -710,6 -710,31 +710,31 @@@ static int message_is_empty(struct strb return 1; } + static const char *find_author_by_nickname(const char *name) + { + struct rev_info revs; + struct commit *commit; + struct strbuf buf = STRBUF_INIT; + const char *av[20]; + int ac = 0; + + init_revisions(&revs, NULL); + strbuf_addf(&buf, "--author=%s", name); + av[++ac] = "--all"; + av[++ac] = "-i"; + av[++ac] = buf.buf; + av[++ac] = NULL; + setup_revisions(ac, av, &revs, NULL); + prepare_revision_walk(&revs); + commit = get_revision(&revs); + if (commit) { + strbuf_release(&buf); + format_commit_message(commit, "%an <%ae>", &buf, DATE_NORMAL); + return strbuf_detach(&buf, NULL); + } + die("No existing author found with '%s'", name); + } + static int parse_and_validate_options(int argc, const char *argv[], const char * const usage[], const char *prefix) @@@ -720,6 -745,9 +745,9 @@@ logfile = parse_options_fix_filename(prefix, logfile); template_file = parse_options_fix_filename(prefix, template_file); + if (force_author && !strchr(force_author, '>')) + force_author = find_author_by_nickname(force_author); + if (logfile || message.len || use_message) use_editor = 0; if (edit_flag)