Re: PATCH: improve git switch documentation

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

 



Martin wrote:
> On 09/07/2021 18:10, Felipe Contreras wrote:
> > Martin wrote:
> >> As for "git switch -C"
> >> This should IMHO change to (the 2nd arg, actually depends on the point
> >> "1" above)
> >>      git switch (-c|-C) <branch-name> [<base-commit>]
> >>
> >> I suggest to not call it "new-branch-name" because, it might be an
> >> existing name.
> > 
> > I think the name is all wrong. As Ævar pointed out --new (-n) is much
> > better. Also it doesn't make much sense to use "create" or "new" for
> > something that already exists.
> 
> The n versus c issue is IMHO separate. Maybe tiny overlaps.
> 
> I see it mostly in the light of -c should be for "copy".
> 
> On "git checkout" it is "-b" for branch. That works, if you perceive 
> "branch" as a verb. "The action of branching creates a new branch".

I generally view git commands as verbs. In this case "checkout" is the
verb, and "branch" is the direct object.

> Actually, "new" or "create" would make sense in "git branch". But in git 
> switch, they actually raise the question "create what?" / "new what?".

`git switch` doesn't switch anything other branches. I don't think
`git switch-branch` would make the command somehow more understendale.

> > I think you saw a correct issue: `git switch -C` might be used
> > incorrectly, but changing to the documentation would have limited value
> > (and only for the ones that read it).
> > 
> > I think if the branch already exists, the user has to be explicit to
> > what he wants to do and use `git switch --reset <branch> <commit>`
> 
> Well, that is the question as what the action is perceived.
> I think the example is wrong, rather than the command.
> 
> -c / -C /-n / -N always *c*reate an *n*ew branch. (create and new really 
> are the same thing here)
> 
> But if the branch name Foo, is already used?
> Well, it will still be a *new* branch being *created*.
> To do that it has to remove the name from the old branch. (effectively 
> removing the old branch).

But it's not removing the name, it's merely changing the head.

I don't particularly mind having -C or -N, I just would not use them
because I like to be explicit. I don't use --new for something that
already exists.

> >> 3)
> >>
> >>      newbbranch  versus new-branch  versus  new_branch
> >>
> >> That is something that just needs to be decided.
> >> "new_branch" is in git checkout.
> > 
> > I'd rather have <branch>, but as I already said, the more ground you try
> > to cover the more impossible it will be to actually land the changes.
> 
> Well ok, if you shorten it to one word that solves it too.
> But for anything that for some reason needs two words, IMHO there should 
> be one style. "one word", "-" or "_".
> Currently different styles are mixed.

I don't see the need for that, <new branch> would do the trick, no need
for hyphens or underscores.

> >> Look at
> >>     git checkout --force
> >>> --force
> >>>      When switching branches, proceed even if the index or the working tree differs from HEAD. This is used to throw away local changes.
> >>
> > 
> > All these issues go away if we have:
> > 
> >    git switch --reset <branch> <commit>
> > 
> > And instead of -C, we have:
> > 
> >    git switch --new --reset <branch> <commit>
> > 
> > This creates a new branch if it doesn't exist, or if it exists resets
> > it.
> 
> Nope it does not go away.
> 
> All this has done, is that it no longer is a "force" command.
> So the last bit of warning has just gone.
> 
> And it still needs to be documented inside the "git switch" doc, rather 
> than forwarding the user do yet another doc.

Yes, but as I said: the documentation writes itself.

  -n <branch>, --new <branch>

    Creates a new branch.

  --reset <branch>

    Resets the branch to <head>.

> Also making the user read the "git reset" doc does not help, unless we 
> point out that this is a --hard reset, rather than "modifying the index".

Nobody is suggesting that. --reset refers to the English word "reset",
not `get reset`.

> So, I still ask:
> - If "--force" to overwrite the work tree can clearly state that change 
> to files will be "thrown away".
> - Then why can "force" re-using an existing branch name not do the same?

Because we would be forcing two things now. I'd rather not overload
concepts.

Cheers.

-- 
Felipe Contreras



[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