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
Junio C Hamano <gitster@pobox.com>
Date
Sep 4, 2024, 14:34 UTC
Message-ID
<xmqqle07ebcj.fsf@gitster.g>
In-Reply-To
<CANrWfmSe0ekbRR9VsX8jALWQQVdhDv-2WTSm47jHTiV9-Z7-pg@mail.gmail.com>
Han Jiang <jhcarl0814@gmail.com> writes:
Show 8 quoted lines
> 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
This is totally expected.

A refspec specifies "what to fetch" and "where to store locally what we fetched" at the same time. A refmap only specifies the "where the stuff is stored locally" part, and what to fetch is specified separately. You asked branch1 and branch2 to be fetched (peek into the .git/FETCH_HEAD file to see both objects are fetched) from the command line arguments, and your refmap specified where to store what you got from their refs/heads/branch1. As the refmap does not say anything about any other branches, they are not stored anywhere in your local refs/ namespace.

Typically --refmap is given with a glob, but the story is the same there. If you fetched refs/notes/commits from that same server with a refmap to map "refs/heads/*:refs/remotes/server/*", the notes commit is not mapped to anywhere with the refmap, so nothing will happen to it.

Previous: Han JiangNext: Han Jiang
Message 7 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.