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

Re: [PATCHv2 1/2] Support multiple virtual repositories with a single object store and refs

From
Junio C Hamano <gitster@pobox.com>
Date
May 24, 2011, 23:10 UTC
Message-ID
<7v7h9f7kzx.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1306274066-4092-1-git-send-email-jamey@minilop.net>
Jamey Sharp <jamey@minilop.net> writes:
Show 9 quoted lines
> Given many repositories with copies of the same objects (such as
> branches of the same source), sharing a common object store will avoid
> duplication.  Alternates provide a single baseline, but don't handle
> ongoing activity in the various repositories.  Git safely handles
> concurrent accesses to the same object store across repositories, but
> operations such as gc need to know about all of the refs.
>
> This change adds support in upload-pack and receive-pack to simulate
> multiple virtual repositories within the object store and references of

Is it just me to read the above and then have to re-read the first sentence of the second paragraph over and over again? There seems to be a huge gap in logic flow, probably largely due to the use of undefined term "virtual repository".

I think the idea is "an object store .git/objects/ may have more objects than the refs .git/refs/* in the repository that particular object store belongs to, and it is unsafe to gc there" (the first paragraph), and then what is left unsaid is "to solve it, we propose to add an extra namespace in the refs hierarchy of such a repository that lets other repositories to borrow its objects from, and store the tips of refs of the borrowing repository there (and call such a repository that lets others borrow a virtual repository)" or something.

Without presenting what you are trying to solve...
Show 12 quoted lines
> a single underlying repository.  The refs and heads of the virtual
> repositories get stored in the underlying repository using prefixed
> names specified by the --ref-prefix and --head options; for instance,
> --ref-prefix=repo1/ will use refs/repo1/heads/* and refs/repo1/tags/*.
> upload-pack and receive-pack will not expose any references that do not
> match the specified prefix.
>
> These options implement the underlying mechanism for virtual
> repositories; the higher-level protocol handler (such as http-backend or
> a custom server) can pass these options when invoking upload-pack or
> receive-pack, providing values based on components of the repository
> path.
... these are just gibberish describing technical details at too low-level.
Show 5 quoted lines
> For a simple local test, git-remote-ext works:
>
> git clone ext::'git %s --ref-prefix=prefix/ --head=prefix-HEAD /tmp/prefixed.git'
>
> Commit by Josh Triplett and Jamey Sharp.
Have a blank line here, as that line is not part of Sign-of chain.
> Signed-off-by: Josh Triplett <josh@joshtriplett.org>
> Signed-off-by: Jamey Sharp <jamey@minilop.net>
> Cc: Shawn O. Pearce <spearce@spearce.org>
> Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> Cc: Johannes Sixt <johannes.sixt@telecom.at>

Also personally I do not appreciate seeing Cc: here. You already have them at the header of your e-mail; these lines belong there, not here.

I haven't looked deeply at the patch yet.
Previous: Jamey SharpNext: Johannes Schindelin
Message 3 of 11 in “[PATCHv2 1/2] Support multiple virtual repositories with a single object store and refs”
  1. Jamey SharpMay 24, 2011
  2. 2/2 Support virtual repositories in smart http-backend, specified by environmentJamey Sharp, May 24, 2011
  3. Junio C HamanoMay 24, 2011
  4. Johannes SchindelinMay 25, 2011
  5. Jamey SharpMay 25, 2011
  6. Junio C HamanoMay 25, 2011
  7. Johannes SchindelinMay 25, 2011
  8. Johannes SchindelinMay 25, 2011
  9. Josh TriplettMay 26, 2011
  10. Johannes SchindelinMay 26, 2011
  11. Junio C HamanoMay 26, 2011

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.