From: Junio C Hamano Date: Thu, 5 Jan 2012 19:00:38 +0000 (-0800) Subject: Merge branch 'jc/signed-commit' and 'jc/pull-signed-tag' X-Git-Tag: v1.7.9-rc0~1^2~5 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/9d3d78435f2735b74afc74e9c5a735c27c026d33?ds=inline;hp=-c Merge branch 'jc/signed-commit' and 'jc/pull-signed-tag' They both use the extended headers in commit objects, and the former has necessary infrastructure to show them that is useful to view the result of the latter. Signed-off-by: Junio C Hamano --- 9d3d78435f2735b74afc74e9c5a735c27c026d33 diff --combined builtin/commit.c index 0c64c880d5,7e8a1cf4e0..fa41ec8c87 --- a/builtin/commit.c +++ b/builtin/commit.c @@@ -26,6 -26,7 +26,7 @@@ #include "unpack-trees.h" #include "quote.h" #include "submodule.h" + #include "gpg-interface.h" static const char * const builtin_commit_usage[] = { "git commit [options] [--] ...", @@@ -85,6 -86,8 +86,8 @@@ static int all, edit_flag, also, intera static int quiet, verbose, no_verify, allow_empty, dry_run, renew_authorship; static int no_post_rewrite, allow_empty_message; static char *untracked_files_arg, *force_date, *ignore_submodule_arg; + static char *sign_commit; + /* * The default commit message cleanup mode will remove the lines * beginning with # (shell comments) and leading and trailing @@@ -144,6 -147,8 +147,8 @@@ static struct option builtin_commit_opt OPT_BOOLEAN('e', "edit", &edit_flag, "force edit of commit"), OPT_STRING(0, "cleanup", &cleanup_arg, "default", "how to strip spaces and #comments from message"), OPT_BOOLEAN(0, "status", &include_status, "include status in commit message template"), + { OPTION_STRING, 'S', "gpg-sign", &sign_commit, "key id", + "GPG sign commit", PARSE_OPT_OPTARG, NULL, (intptr_t) "" }, /* end commit message options */ OPT_GROUP("Commit contents options"), @@@ -1324,6 -1329,7 +1329,7 @@@ static void print_summary(const char *p static int git_commit_config(const char *k, const char *v, void *cb) { struct wt_status *s = cb; + int status; if (!strcmp(k, "commit.template")) return git_config_pathname(&template_file, k, v); @@@ -1332,6 -1338,9 +1338,9 @@@ return 0; } + status = git_gpg_config(k, v, NULL); + if (status) + return status; return git_status_config(k, v, s); } @@@ -1484,15 -1493,11 +1493,15 @@@ int cmd_commit(int argc, const char **a exit(1); } - if (amend) + if (amend) { extra = read_commit_extra_headers(current_head); + } else { + struct commit_extra_header **tail = &extra; + append_merge_tag_headers(parents, &tail); + } if (commit_tree_extended(sb.buf, active_cache_tree->sha1, parents, sha1, - author_ident.buf, extra)) { + author_ident.buf, sign_commit, extra)) { rollback_index_files(); die(_("failed to write commit object")); }