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

Re: remote.<name>.merge missing from the git-config man page?

From
Taylor Blau <me@ttaylorr.com>
Date
Mar 8, 2021, 18:43 UTC
Message-ID
<YEZwY0721KvQNkK+@nand.local>
In-Reply-To
<xmqqlfax7dya.fsf@gitster.c.googlers.com>
On Mon, Mar 08, 2021 at 09:27:57AM -0800, Junio C Hamano wrote:
Show 11 quoted lines
> >> git push origin
>
> >>     Without additional configuration, pushes the current branch
> >>     to the configured upstream (remote.origin.merge configuration
> >>     variable) if it has the same name as the current branch, and
> >>     errors out without pushing otherwise.
>
> Hmph, it seems it talks about the branch on the remote side that is
> configured for the current branch to integrate with.  Most likely
> that is misspelt "branch.<name>.merge" where <name> is the name of
> the branch currently checked out.

I agree; this should definitely refer to "branch.<name>.merge", not "remote.<name>.merge" (which to my knowledge has never existed).

I had to double check that this "without additional configuration" is right. Indeed:

  - The default value of the 'push.default' variable is "simple", which
    in a non-triangular workflow calls
    "builtin/push.c:setup_push_upstream()".
  - 'setup_push_upstream()' dies on L213 if strcmp(branch->refname,
    branch->merge[0]->src).
  - Othewrise, it sets up the expected refspec (to push the local branch
    to the remote branch 'branch.<name>.merge').
> The text comes from b2ed944a (push: switch default from "matching"
> to "simple", 2013-01-04); I am a bit surprised how such a typo
> survived this long ;-)
Me too :). Here's a patch to rectify the confusion:
--- >8 ---
Subject: [PATCH] Documentation/git-push.txt: correct configuration typo

In the EXAMPLES section, git-push(1) says that 'git push origin' pushes the current branch to the value of the 'remote.origin.merge' configuration.

This wording (which dates back to b2ed944af7 (push: switch default from "matching" to "simple", 2013-01-04)) is incorrect. There is no such configuration as 'remote.<name>.merge'. This likely was originally intended to read "branch.<name>.merge" instead.

Indeed, when 'push.default' is 'simple' (which is the default value, and is applicable in this scenario per "without additional configuration"), setup_push_upstream() dies if the branch's local name does not match 'branch.<name>.merge'.

Correct this long-standing typo to resolve some recent confusion on the intended behavior of this example.

Reported-by: Adam Sharafeddine <adam.shrfdn@gmail.com>
Reported-by: Fabien Terrani <terranifabien@gmail.com>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
---
 Documentation/git-push.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index ab103c82cf..a953c7c387 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -600,7 +600,7 @@ EXAMPLES

 `git push origin`::
 	Without additional configuration, pushes the current branch to
-	the configured upstream (`remote.origin.merge` configuration
+	the configured upstream (`branch.<name>.merge` configuration
 	variable) if it has the same name as the current branch, and
 	errors out without pushing otherwise.
 +
--
2.30.0.667.g81c0cbc6fd
Previous: Junio C HamanoNext: Andreas Schwab
Message 4 of 14 in “remote.<name>.merge missing from the git-config man page?”
  1. Fabien TerraniMar 8, 2021
  2. Eric SunshineMar 8, 2021
  3. Junio C HamanoMar 8, 2021
  4. Taylor BlauMar 8, 2021
  5. Andreas SchwabMar 8, 2021
  6. Taylor BlauMar 8, 2021
  7. Andreas SchwabMar 8, 2021
  8. Taylor BlauMar 8, 2021
  9. Andreas SchwabMar 8, 2021
  10. Taylor BlauMar 8, 2021
  11. Andreas SchwabMar 8, 2021
  12. Junio C HamanoMar 12, 2021
  13. Jonathan NiederMar 13, 2021
  14. Junio C HamanoMar 8, 2021

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.