[PATCH v3 1/2] replay: allow callers to sign commits
From: Souma <hidden>
Date: 2026-09-12 16:00:59
Subsystem:
the rest · Maintainer:
Linus Torvalds
Add a signing-key option to replay_revisions_options and pass it to commit_tree_extended() when creating replayed commits. Signed-off-by: Souma <redacted> --- replay.c | 13 ++++++++----- replay.h | 6 ++++++ 2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/replay.c b/replay.c
index f415103023..3e8a70bce1 100644
--- a/replay.c
+++ b/replay.c@@ -85,13 +85,13 @@ static struct commit *create_commit(struct repository *repo, struct tree *tree, struct commit *based_on, struct commit *parent, - enum replay_mode mode) + enum replay_mode mode, + const char *sign_commit) { struct object_id ret; struct object *obj = NULL; struct commit_list *parents = NULL; char *author = NULL; - char *sign_commit = NULL; /* FIXME: cli users might want to sign again */ struct commit_extra_header *extra = NULL; struct strbuf msg = STRBUF_INIT; const char *out_enc = get_commit_output_encoding();
@@ -288,7 +288,8 @@ static struct commit *pick_regular_commit(struct repository *repo, struct merge_options *merge_opt, struct merge_result *result, enum replay_mode mode, - enum replay_empty_commit_action empty) + enum replay_empty_commit_action empty, + const char *sign_commit) { struct tree *pickme_tree, *base_tree, *replayed_base_tree;
@@ -361,7 +362,8 @@ static struct commit *pick_regular_commit(struct repository *repo, } } - return create_commit(repo, result->tree, pickme, replayed_base, mode); + return create_commit(repo, result->tree, pickme, replayed_base, mode, + sign_commit); } void replay_result_release(struct replay_result *result)
@@ -481,7 +483,8 @@ int replay_revisions(struct rev_info *revs, last_commit = pick_regular_commit(revs->repo, commit, base, &merge_opt, &result, - mode, opts->empty); + mode, opts->empty, + opts->sign_commit); } if (!last_commit)
diff --git a/replay.h b/replay.h
index 2c71afbfde..2eb7704b74 100644
--- a/replay.h
+++ b/replay.h@@ -57,6 +57,12 @@ struct replay_revisions_options { */ int contained; + /* + * Key used to sign newly-created commits. An empty string requests the + * default configured signing key, and NULL disables signing. + */ + const char *sign_commit; + /* * Controls what to do when a replayed commit becomes empty. * Defaults to REPLAY_EMPTY_COMMIT_DROP.
--
2.55.0