On Mon, Jul 08, 2019 at 10:16:50PM -0700, Junio C Hamano wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: > > > The "--all" in rev-list family (including "git log") unconditionally > > include HEAD. The glitch here is that "--all" in rev-parse does > > not. And 4d5e1b1319 was an attempt to "fix" that, i.e. make "--all" > > imply "HEAD". > > And it becomes really tempting to get rid of that "let's tweak > --all" hack and declare that "rev-parse --all" is simply buggy, > proposing a simple "bugfix" that may look like this (not even > compile tested, but you get the idea). Thanks for this nice pointer. Lets think about this a little more, because this would give us a proper solution. There would be a need to be backwards compatible to not break peoples scripts right? The documentation says --all "Show all refs found in refs/" so IMO we need some extra option that changes the '--all' behavior. How about '--all-include-head'. Then e.g. git rev-parse --all-include-head --all --not origin/master would include the head ref like you proposed below? What do you think? Or would you rather go the route of changing rev-parse behavior? Cheers Heiko > > builtin/rev-parse.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c > index f8bbe6d47e..94f9a6efba 100644 > --- a/builtin/rev-parse.c > +++ b/builtin/rev-parse.c > @@ -766,6 +766,7 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix) > } > if (!strcmp(arg, "--all")) { > for_each_ref(show_reference, NULL); > + head_ref(show_reference, NULL); > clear_ref_exclusion(&ref_excludes); > continue; > }