On 12/11/2023 06:04, Junio C Hamano wrote:
Andy Koppe <andy.koppe@xxxxxxxxx> writes:
The git-checkout command without pathspecs automatically detaches HEAD
when switching to something other than a branch, whereas git-switch
requires the --detach option to do so.
Add configuration variable checkout.autoDetach to choose the behavior
for both: true for automatic detaching, false for requiring --detach.
Amend their documentation and tests accordingly.
Signed-off-by: Andy Koppe <andy.koppe@xxxxxxxxx>
---
"switch" was meant to be an experimental command to sort out this
kind of UI ideas, and I think the fact that it requires a more
explicit "--detach", where experienced users might just say "git
checkout that-branch^0", has established itself as a more friendly
and good thing to help new users.
I agree, but as an experienced user, I nevertheless prefer switch and
restore over checkout, because those are rather different tasks, and
with checkout you're only ever a small thinko and errant dot away from
losing your local changes. If switch and restore had existed first, I
don't think anyone would be asking for mashing them together.
Incidentally, as reset is similarly overloaded, and restore can also
replace the forms of reset that take pathspec arguments, was there a
similar plan to factor the head-moving forms of reset out into a
separate command? (I realise there'd be little appetite for that after
the switch/restore experiment.)
I do not know how others react to
this kind of proliferation of configuration variables, but I do not
mind this particular variable existing.
Thanks. There's also the checkout.guess variable as a closely related
precedent.
Regards,
Andy