From: Junio C Hamano Date: Mon, 28 Jul 2025 20:59:46 GMT Subject: Re: [PATCH v2 4/8] builtin/reflog: implement subcommand to write new entries Message-ID: In-Reply-To: Karthik Nayak writes: > Junio C Hamano writes: > >> "Kristoffer Haugsbakk" writes: >> >>> I tried `git reflog drop`[1] and it can deal with a branch like >>> `branch`. It doesn’t need to be told `refs/heads/branch`. >> >> That sounds like a bug to me. > > So `git reflog drop` `git reflog delete` and `git reflog expire` use > `repo_dwim_log()` to resolve the provided reference. > > And `repo_dwim_log()` uses the following `ref_rev_parse_rules` to > resolve the reference. > > static const char *ref_rev_parse_rules[] = { > "%.*s", > "refs/%.*s", > "refs/tags/%.*s", > "refs/heads/%.*s", > "refs/remotes/%.*s", > "refs/remotes/%.*s/HEAD", > NULL > }; > > Which means we do a best case resolution of a given reference, but the > function also checks for ambiguity and warns for it. True. But as I considered "git reflog" to be a lot closer to the plumbing than to Porcelain, using the dwim thing smelled like a bug. It also is OK to update the commands that do not use dwim-log to also use it. That way, the result would be consistent across subcommands of "git reflog". As long as the users are aware of the fact that the command uses dwim-log, they can always spell their ref in full like "refs/heads/branch" to avoid ambiguity check getting in the way. Thanks.