On Wed Feb 7, 2024 at 6:35 AM IST, Junio C Hamano wrote: > Ghanshyam Thakkar <shyamthakkar001@xxxxxxxxx> writes: > > There is also logic in builtin/checkout.c to > > convert all command line input rev to the raw object name for underlying > > machinery (e.g., diff-index) that does not recognize the <a>...<b> > > notation, but we'd need to leave 'HEAD' intact. Now we need to teach > > that '@' is a synonym to 'HEAD' to that code and leave '@' intact, too. > > Makes me wonder why we cannot use the same "normalize @ to HEAD > upfront" approach here, though? > > It would involve translating "@" given to new_branch_info->name to > "HEAD" early, possibly in setup_new_branch_info_and_source_tree(), > and that probably will fix the other strcmp() with "HEAD" that > appears in builtin/checkout.c:update_refs_for_switch() as well, no? I was wondering about "git checkout -b @". If we were to make the change in setup_new_branch_info_and_source_tree(), then '@' would not be treated as 'HEAD' in the above mentioned case and there would also be some disparity on error messages showing '@' when running the above command, and after hitting setup_new_branch_info_and_source_tree() would show 'HEAD'. However, making the change in builtin/checkout.c:checkout_main() would disallow creating a '@' branch alltogether. Hence, I would like some feedback on whether we should change the behavior of 'git checkout -b @' or not.