Re: [PATCH v3 10/21] checkout: split part of it to new command 'switch'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 11, 2019 at 6:16 PM Phillip Wood <phillip.wood123@xxxxxxxxx> wrote:
> On 08/03/2019 09:57, Nguyễn Thái Ngọc Duy wrote:
> > "git checkout" doing too many things is a source of confusion for many
> > users (and it even bites old timers sometimes). To remedy that, the
> > command will be split into two new ones: switch and
> > something-to-checkout-paths.
>
> I think this is a good idea, thanks for working on it. I wonder if it
> would be a good idea to have the new command refuse to checkout a new
> branch if there is a cherry-pick/revert/merge/rebase in progress (with
> an option to override the check) as switching branches in the middle of
> one of those is likely to be confusing to users (if I do it it is
> normally because I've forgotten that I've not run 'git whatever
> --continue').

Guys, I'm sorry for bringing this up again. Apparently I'm not quite
done with 'git switch' yet (not sure if I will ever be).

There is an interesting behavior in git-checkout (and of couse
git-switch). When you do a successful switch, CHERRY_PICK_HEAD,
REVERT_HEAD, MERGE_HEAD, MERGE_RR, MERGE_MSG, MERGE_MODE and
SQUAHS_MSG, if exists, will be removed.

This basically means that if you switch away, any cherry-pick, merge
or revert in progress is destroyed (in the sense of "--quit" not
"--abort" of course). All of this, I believe, involves merge conflicts
so you can't easily switch away unless you allow to destroy unmerged
entries. So it's still quite safe.

However, it leaves me a funny feeling because some "work-in-progress"
operations are destroyed, but some others (bisect, rebase) are not.
This is git-checkout behavior and I will not change that. But do we
want the same behavior in git-switch? Or do we want
no-destroy-in-progress-whatsoever? Or
destroy-all-commands-in-progress?

It may also be a good idea to attempt to describe the behavior we want
in git-switch.txt. I think if the description gets too complicated,
we're heading a wrong way. The current behavior so far could still be
described as "work-in-progress operations related to merge conflicts
are destroyed", or something along that line. But I'm not quite
convinced it's easily understood.

PS. git-reset shares the same behavior, but it's in a different boat,
I think. Or maybe I should scrap/replace that one as well.

PPS. It may get trickier with cherry-pick which can pick a range of
commits now, not just one. But I never used that feature much to know
what I'm talking about.
-- 
Duy




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux