summaryrefslogtreecommitdiff
path: root/sequencer.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-05-31 16:22:20 (GMT)
committerJunio C Hamano <gitster@pobox.com>2022-05-31 16:40:51 (GMT)
commit191faaf72648c4ed080a9e38c1782bc1619a6e87 (patch)
treeffd044190d721995fe6ba7896395a7b1b44ae07f /sequencer.c
parent43966ab3156a082067bf9930351e96e9488da735 (diff)
downloadgit-191faaf72648c4ed080a9e38c1782bc1619a6e87.zip
git-191faaf72648c4ed080a9e38c1782bc1619a6e87.tar.gz
git-191faaf72648c4ed080a9e38c1782bc1619a6e87.tar.bz2
revert: --reference should apply only to 'revert', not 'cherry-pick'
As 'revert' and 'cherry-pick' share a lot of code, it is easy to modify the behaviour of one command and inadvertently affect the other. An earlier change to teach the '--reference' option and the 'revert.reference' configuration variable to the former was not careful enough and 'cherry-pick --reference' wasn't rejected as an error. It is possible to think 'cherry-pick -x' might benefit from the '--reference' option, but it is fundamentally different from 'revert' in at least two ways to make it questionable: - 'revert' names a commit that is ancestor of the resulting commit, so an abbreviated object name with human readable title is sufficient to identify the named commit uniquely without using the full object name. On the other hand, 'cherry-pick' usually [*] picks a commit that is not an ancestor. It might be even picking a private commit that never becomes part of the public history. - The whole commit message of 'cherry-pick' is a copy of the original commit, and there is nothing gained to repeat only the title part on 'cherry-picked from' message. [*] well, you could revert and then you can pick the original that was reverted to get back to where you were, but then you can revert the revert to do the same thing. Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'sequencer.c')
-rw-r--r--sequencer.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sequencer.c b/sequencer.c
index 96fec6e..4b66a1f 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -221,7 +221,7 @@ static int git_sequencer_config(const char *k, const char *v, void *cb)
return ret;
}
- if (!strcmp(k, "revert.reference"))
+ 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);