path: Add named reference to push cert builtin/receive-pack: update named push cert ref Push certificates are "detached" objects on the git objects tree. Add a named reference so the latest push certificate can be easily fetched, verified and stored for later use. This eases tooling around the push certificate feature. Signed-off-by: Shikher Verma <root@xxxxxxxxxxxxxxxx> Helped-by: Santiago Torres-Arias <santiago@xxxxxxx> --- builtin/receive-pack.c | 9 +++++++++ path.c | 1 + path.h | 1 + 3 files changed, 11 insertions(+) diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 79195005f..2fdeafe63 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -1530,6 +1530,15 @@ static void execute_commands(struct command *commands, if (shallow_update) warn_if_skipped_connectivity_check(commands, si); + + for (struct command *cmd = commands; cmd; cmd = cmd->next) + if (cmd->error_string) + return; + struct strbuf buf = STRBUF_INIT; + if (push_cert.len) + strbuf_addstr(&buf, sha1_to_hex(push_cert_sha1)); + strbuf_addch(&buf, '\n'); + write_file_buf(git_path_push_cert(), buf.buf, buf.len); } static struct command **queue_command(struct command **tail, diff --git a/path.c b/path.c index b533ec938..5dca2a7bf 100644 --- a/path.c +++ b/path.c @@ -1366,3 +1366,4 @@ GIT_PATH_FUNC(git_path_merge_mode, "MERGE_MODE") GIT_PATH_FUNC(git_path_merge_head, "MERGE_HEAD") GIT_PATH_FUNC(git_path_fetch_head, "FETCH_HEAD") GIT_PATH_FUNC(git_path_shallow, "shallow") +GIT_PATH_FUNC(git_path_push_cert, "refs/PUSH_CERT") diff --git a/path.h b/path.h index 9541620c7..4bdeb1f07 100644 --- a/path.h +++ b/path.h @@ -78,5 +78,6 @@ const char *git_path_merge_mode(void); const char *git_path_merge_head(void); const char *git_path_fetch_head(void); const char *git_path_shallow(void); +const char *git_path_push_cert(void); #endif /* PATH_H */ -- 2.14.1