Re: branch.autoSetupMerge option for "if name matches only"?

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

 



I found this message when trying to see if someone had already suggested something along those lines.

In fact I would be even more restrictive: what I wanted to propose was to only automatically setup the merge on implicit remote tracking branches, that is:

    git switch foo

if there is no such branch locally will look for the corresponding branch in the remotes, and will create a matching local one. In that case it makes a lot of sense to create a remote-tracking branch: when implicitly checking out a remote branch, it's likely the goal is to track it.

The issue is that

    git switch -c bar foo

will do the same, despite explicitely creating a differently named branch, which is probably some sort of feature which needs to be remote-ed somewhere else. If this issue is not caught immediately it is possible to push directly upstream by mistake.

Upon reading the documentation of `git switch` I actually believed this would behave correctly given `autoSetupMerge=false`:

    --guess, --no-guess
If <branch> is not found but there does exist a tracking branch in exactly one remote (call it <remote>) with
        a matching name, treat as equivalent to

            $ git switch -c <branch> --track <remote>/<branch>

Because `--guess` is the default for the `git switch <name>` form, this description made me believe the tracking would be forced.

Sadly it is not so, setting `autoSetupMerge=false` will also disable automatic remote-tracking on guessed branch.

As far as I'm concerned, `git switch` actually behaving as documented would resolve the entire issue (especially if it were possible to disable `git checkout` somehow, such that I would have to force muscle memory).

This is made more annoying because

    git switch -t foo

*does not work*, frustratingly (if as documented, this time) `-t` implies `-c`. So it's not even possible to remember to type `git switch -t remotebranch` and then live happily with `autoSetupMerge=false`. This makes `autoSetupMerge=false` a lot more frustrating that necessary.



[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