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

Re: `git fetch --refmap=<refspec>… <repository> <refspec>… ` providing NON-empty <refspec> to the --refmap ALSO causes Git to ignore the configured refspecs

From
Han Jiang <jhcarl0814@gmail.com>
Date
Sep 4, 2024, 11:12 UTC
Message-ID
<CANrWfmRdz1Xxud=f0GWrc=nURV2xZU8Wm=8u2X+W4tL4d-yeTg@mail.gmail.com>
In-Reply-To
<a33a73f7-e6dd-4f97-a635-c6c5dfcadeb1@kdbg.org>
1. If the doc says "providing an empty <refspec> to the --refmap
option causes Git to ignore the configured refspecs and rely entirely
on the refspecs supplied as command-line arguments" then it's
reasonable to guess that "providing a non-empty <refspec> will not do
those". (Otherwise the doc could just say "providing a <refspec> will
do those" without the word "empty".) This is both logical fallacy and
common sense.
2. Searching "empty string" "empty value" in
https://git-scm.com/docs/git-config shows that using empty value to
clear lower priority configurations (and non-empty values just stack
up) is common behavior of multi-valued configuration variables.
On Wed, Sep 4, 2024 at 6:15 PM Johannes Sixt <j6t@kdbg.org> wrote:
Show 30 quoted lines
>
> Am 04.09.24 um 06:09 schrieb Han Jiang:
> > What did you expect to happen? (Expected behavior)
> >
> > In `git fetch --refmap='+refs/heads/branch1:refs/remotes/server/branch1'
> > server branch1 branch2`,
> > `remote.server.fetch=+refs/heads/*:refs/remotes/server/*` merges with
> > `--refmap='+refs/heads/branch1:refs/remotes/server/branch1'`,
>
> The way I read the documentation of --refmap, I cannot infer any sort of
> merging of refspec, only that a replacement occurs.
>
> > so these should be what would be done:
> > branch1 -> server/branch1
> > branch2 -> server/branch2
> >
> > What happened instead? (Actual behavior)
> >
> > In `git fetch --refmap='+refs/heads/branch1:refs/remotes/server/branch1'
> > server branch1 branch2`,
> > `remote.server.fetch=+refs/heads/*:refs/remotes/server/*` is replaced
> > by `--refmap='+refs/heads/branch1:refs/remotes/server/branch1'`,
> > so these are what would be done:
> > branch1 -> server/branch1
>
> So, this seems the correct output, because it is no longer specified how
> branch2 should be stored locally.
>
> -- Hannes
>
Previous: Johannes SixtNext: Johannes Sixt
Message 3 of 8 in “`git fetch --refmap=<refspec>… <repository> <refspec>…​` providing NON-empty <refspec> to the --refmap ALSO causes Git to ignore the configured refspecs”
  1. Han JiangSep 4, 2024
  2. Johannes SixtSep 4, 2024
  3. Han JiangSep 4, 2024
  4. Johannes SixtSep 4, 2024
  5. Junio C HamanoSep 4, 2024
  6. Han JiangSep 4, 2024
  7. Junio C HamanoSep 4, 2024
  8. Han JiangSep 4, 2024

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.