Am 24.01.24 um 08:06 schrieb Elijah Newren: > On Wed, Jan 17, 2024 at 12:14 AM Michael Lohmann >> +static const char *lookup_other_head(struct object_id *oid) >> +{ >> + int i; >> + static const char *const other_head[] = { >> + "MERGE_HEAD", "REBASE_HEAD", "CHERRY_PICK_HEAD", "REVERT_HEAD" >> + }; >> + >> + for (i = 0; i < ARRAY_SIZE(other_head); i++) >> + if (!read_ref_full(other_head[i], >> + RESOLVE_REF_READING | RESOLVE_REF_NO_RECURSE, >> + oid, NULL)) { >> + if (is_null_oid(oid)) >> + die("%s is a symbolic ref???", other_head[i]); >> + return other_head[i]; >> + } >> + >> + die("--merge without MERGE_HEAD, REBASE_HEAD, CHERRY_PICK_HEAD or REVERT_HEAD?"); >> +} ... > Also, what about cases where users do a cherry-pick in the middle of a > rebase, so that both REBASE_HEAD and CHERRY_PICK_HEAD exist? What > then? Good point! IMO, REBASE_HEAD should have lower precedence than all the other *_HEADs. It would mean to reorder the entries: static const char *const other_head[] = { "MERGE_HEAD", "CHERRY_PICK_HEAD", "REVERT_HEAD", "REBASE_HEAD" }; (and perhaps adjust the error message, too). -- Hannes