git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Xavier Morel <xmo@odoo.com>
Date
Feb 9, 2022, 13:46 UTC
Message-ID
<b54a6cde-5065-632b-012c-0d6f777249ef@odoo.com>
In-Reply-To
<CAPMMpog6vKBfYEWqKDgK7YQQ96pPVMH7hYPXUHMnJsgLNgYMXA@mail.gmail.com>

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.

Previous: Tao KlerksNext: Tao Klerks
Message 2 of 3 in “branch.autoSetupMerge option for "if name matches only"?”
  1. Tao KlerksFeb 3, 2022
  2. Xavier MorelFeb 9, 2022
  3. Tao KlerksFeb 24, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.