RE: Naming the --forec option [[Re: PATCH: improve git switch documentation]]
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- Jul 10, 2021, 23:18 UTC
- Message-ID
- <60ea2ad64878_2a692084e@natae.notmuch>
- In-Reply-To
- <43b8d0bb-67f3-11dd-ec31-e102ce8e3b31@mfriebe.de>
Martin wrote:
Show 19 quoted lines
> On 10/07/2021 22:49, Felipe Contreras wrote: > > Martin wrote: > >> For each force-needing action, you should have to specify it's own force > >> flag. > > > OK, but I don't see the concrete proposal. What would be the > > flag that > > makes -c "forceful"? > > > > Well that starts yet another topic. > > At the moment, it is > --force-create which is absorbing the flag into the option. > > And by (apparent) convention it also is the uppercasing of the option > -C > same as the uppercasing of the -B in checkout. > > I am not really sure if the uppercasing is the best idea.
Me neither, and it's not something I generally use.
> If your suggestion "core.advanced " were to come, I would vote that > uppercase single letter force options should be restricted to advanced.
I would not count on it. I suggested core.mode back in 2013 [1], so...
Show 9 quoted lines
> If -n is introduced, we can think about what to do about -N. > Should the --force-* style be kept? > --force-new > -N > > Or the (unfortunate? / see below ) "--discard-changes" style: > --discard-existing-branch -n <branchname> > > I am against using --reset instead of --force-new.
That's OK, and in fact I can see how '--reset --new' is clunky, I'm just saying it is a possibility. But the main point is that something like `git switch --reset` is missing, although `git switch --move` would probably do the trick.
> At least I can say, if I use "-N", I want a *new* branch. I don't care > about any old branch under that name.
Right, I would as well, but in fact I would expect the same from -n (although I can see how a newbie might not).
> Also "--reset" does not have the same alerting properties to me, as > "force" or "discard" have. > This may be my English, but to me "reset" does not have the same > alerting property.
OK, maybe it's a language issue. I'm not a native English speaker, my mother tongue is Spanish, but I'm pretty sure my understanding of "reset" is what most people understand: set again.
Using Merriam Webster [2]:
1: to set again or anew 2: to change the reading of often to zero
And there's plenty of corroboration; reorder: order again (whatever order you had is lost), reassign: assign again (whatever assignment you had is gone), replay: play again (whatever you were playing is gone), and so on.
Show 15 quoted lines
> The general problem is, if there is more than one force-needing action, > then which one does -f act on? > > Any force-needing action, that only applies with another option (such as > -N) can have a --force-*. So the plain -f is not used for it. > > But, what if more than one force-needing event can happen (not just > switch, but any command), even without any extra options? (May not yet > be the case / not checked). > > git switch has attempted to solve that. > The result IMHO is a disaster. > "-f" / "--force" is made an alias in favour for > --discard-changes > What changes?
I see.
So *if* --force was not an alias for --discard-changes, then this would make sense:
git switch --new --force topic
It would _force_ the creation of a _new_ branch called "topic".
Is this close to what you are thinking?
[1] https://lore.kernel.org/git/1379426871-6823-1-git-send-email-felipe.contreras@gmail.com/ [2] https://www.merriam-webster.com/dictionary/reset
-- Felipe Contreras