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

Re: [PATCH] Added --mirror-all to git-fetch.

From
Junio C Hamano <junkio@cox.net>
Date
Sep 20, 2006, 17:50 UTC
Message-ID
<7vu032h1g1.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<20060920173126.GG23260@spearce.org>
Shawn Pearce <spearce@spearce.org> writes:
Show 12 quoted lines
> I meant ".git/remotes must have only one file 'origin' and
> nothing else".  Because what does it mean to mirror two different
> repositories at the same time into the same ref namespace?  The most
> recently fetched would always win.
>
> But now that I'm writing this I can see someone wanting multiple
> remotes so they could store different URLs for the same repository
> and call fetch on another if the first isn't responding.  So I
> retract this entirely.  So there doesn't even need to be remotes
> file; the URL could just be passed on the command line.  A remotes
> file (like the default "origin" one) is just a handy place to store
> the URL.

Another possibility. The mirror might want to do something like:

        .git/refs/remotes/davem/sparc-2.6.git/...
	.git/refs/remotes/torvalds/linux-2.6.git/...
	.git/refs/remotes/jgarzik/netdev-2.6.git/...

to be a super-mirror of related projects. This would give a convenient way for the visitors to browse them all at one place, and would save object store. There are minor details such as gitweb may not allow browsing refs/remotes and git-fetch may not let you fetch from refs/remotes (I haven't checked), but they are fixable as needed.

> Because we don't want to update HEAD with the SHA1 that's on the
> remote if that's actually going to update some other ref which
> doesn't have the same value.  :-)

What I thought you were going to do with HEAD would be to update it not by the object name but modifying where it points at. IOW, if HEAD is a symlink pointing at refs/heads/master and the remote HEAD now points at refs/heads/next, you do not:

	echo $the_commit_object_name_of_remote_next >.git/HEAD 
which obviously is insane, but you would do
	rm -f .git/HEAD && ln -s refs/heads/next .git/HEAD
> But I agree with you entirely about HEAD being a SHA1 and not its
> actual link target in the network protocol.  An annoying bug.
Which fortunately is fixable ;-).
Previous: Shawn PearceNext: A Large Angry SCM
Message 10 of 14 in “Added --mirror-all to git-fetch.”
  1. Added --mirror-all to git-fetch.Shawn Pearce, Sep 19, 2006
  2. Petr BaudisSep 19, 2006
  3. Junio C HamanoSep 20, 2006
  4. Petr BaudisSep 20, 2006
  5. Shawn PearceSep 20, 2006
  6. Junio C HamanoSep 20, 2006
  7. Shawn PearceSep 20, 2006
  8. Junio C HamanoSep 20, 2006
  9. Shawn PearceSep 20, 2006
  10. Junio C HamanoSep 20, 2006
  11. A Large Angry SCMSep 20, 2006
  12. Petr BaudisSep 20, 2006
  13. Junio C HamanoSep 20, 2006
  14. Shawn PearceSep 20, 2006

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.