summaryrefslogtreecommitdiff
path: root/sequencer.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-06-15 22:09:27 (GMT)
committerJunio C Hamano <gitster@pobox.com>2022-06-15 22:09:27 (GMT)
commitbfca6316345ffd717c717d2e36365239a3070124 (patch)
tree3019c0b1c54e5d7a34f947cdfc2f16a0aaa4be48 /sequencer.c
parent7596fe952d92f06375b1ef9fcde1b03c97d23983 (diff)
parent191faaf72648c4ed080a9e38c1782bc1619a6e87 (diff)
downloadgit-bfca6316345ffd717c717d2e36365239a3070124.zip
git-bfca6316345ffd717c717d2e36365239a3070124.tar.gz
git-bfca6316345ffd717c717d2e36365239a3070124.tar.bz2
Merge branch 'jc/revert-show-parent-info'
"git revert" learns "--reference" option to use more human-readable reference to the commit it reverts in the message template it prepares for the user. * jc/revert-show-parent-info: revert: --reference should apply only to 'revert', not 'cherry-pick' revert: optionally refer to commit in the "reference" format
Diffstat (limited to 'sequencer.c')
-rw-r--r--sequencer.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/sequencer.c b/sequencer.c
index 950733a..61a8e00 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -221,6 +221,9 @@ static int git_sequencer_config(const char *k, const char *v, void *cb)
return ret;
}
+ if (opts->action == REPLAY_REVERT && !strcmp(k, "revert.reference"))
+ opts->commit_use_reference = git_config_bool(k, v);
+
status = git_gpg_config(k, v, NULL);
if (status)
return status;
@@ -2059,6 +2062,20 @@ static int should_edit(struct replay_opts *opts) {
return opts->edit;
}
+static void refer_to_commit(struct replay_opts *opts,
+ struct strbuf *msgbuf, struct commit *commit)
+{
+ if (opts->commit_use_reference) {
+ struct pretty_print_context ctx = {
+ .abbrev = DEFAULT_ABBREV,
+ .date_mode.type = DATE_SHORT,
+ };
+ format_commit_message(commit, "%h (%s, %ad)", msgbuf, &ctx);
+ } else {
+ strbuf_addstr(msgbuf, oid_to_hex(&commit->object.oid));
+ }
+}
+
static int do_pick_commit(struct repository *r,
struct todo_item *item,
struct replay_opts *opts,
@@ -2167,14 +2184,20 @@ static int do_pick_commit(struct repository *r,
base_label = msg.label;
next = parent;
next_label = msg.parent_label;
- strbuf_addstr(&msgbuf, "Revert \"");
- strbuf_addstr(&msgbuf, msg.subject);
- strbuf_addstr(&msgbuf, "\"\n\nThis reverts commit ");
- strbuf_addstr(&msgbuf, oid_to_hex(&commit->object.oid));
+ if (opts->commit_use_reference) {
+ strbuf_addstr(&msgbuf,
+ "# *** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***");
+ } else {
+ strbuf_addstr(&msgbuf, "Revert \"");
+ strbuf_addstr(&msgbuf, msg.subject);
+ strbuf_addstr(&msgbuf, "\"");
+ }
+ strbuf_addstr(&msgbuf, "\n\nThis reverts commit ");
+ refer_to_commit(opts, &msgbuf, commit);
if (commit->parents && commit->parents->next) {
strbuf_addstr(&msgbuf, ", reversing\nchanges made to ");
- strbuf_addstr(&msgbuf, oid_to_hex(&parent->object.oid));
+ refer_to_commit(opts, &msgbuf, parent);
}
strbuf_addstr(&msgbuf, ".\n");
} else {