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

Re: git auto-repack is broken...

From
Jeff King <peff@peff.net>
Date
Dec 8, 2011, 00:45 UTC
Message-ID
<20111208004515.GA23015@sigill.intra.peff.net>
In-Reply-To
<alpine.LFD.2.02.1112071912570.2907@xanadu.home>
On Wed, Dec 07, 2011 at 07:18:13PM -0500, Nicolas Pitre wrote:
Show 10 quoted lines
> > > Maybe  FETCH_HEAD should have a reflog too?
> > 
> > That might be nice. However, there is a complication, in that FETCH_HEAD
> > may contain many sha1s, but each reflog entry only has room for a single
> > sha1 transition. You could obviously encode it as a series of reflog
> > entries, but then "git show FETCH_HEAD@{1}" is not very meaningful.
> 
> What does "git show FETCH_HEAD" do now?  If it shows only one
> (presumably the first) SHA1 then its reflog doesn't have to be
> smarter, which would properly cover most cases already.

Are you proposing that it only store the first ref in the reflog, or that we accept that a single fetch may write lots of reflog entries?

If the former, then you are missing the expiration/connectivity properties.

If the latter, then it is not just "we only show the first one for FETCH_HEAD@{1}", but also "the thing that used to be FETCH_HEAD@{1} does not graduate to FETCH_HEAD@{2}, but rather FETCH_HEAD@{n} for some unknown n". That may be an acceptable limitation; I just wanted to mention it in case somebody can think of some clever solution.

> I certainly never did a multi-ref fetch myself.

Not consciously, perhaps, but you do it all the time without realizing it:

  $ git clone git://git.kernel.org/pub/scm/git/git.git
  $ cd git
  $ git fetch -v origin
   = [up to date]      maint      -> origin/maint
   = [up to date]      master     -> origin/master
   = [up to date]      next       -> origin/next
   = [up to date]      pu         -> origin/pu
   = [up to date]      todo       -> origin/todo
  $ cat .git/FETCH_HEAD
  b1af9630d758e1728fc0008b3f18d90d8f87f4c5        not-for-merge   branch 'maint' of git://git.kernel.org/pub/scm/git/git
  4cb5d10b14dcbe0155bed9c45ccb94e83bd4c599                branch 'master' of git://git.kernel.org/pub/scm/git/git
  03e5527c5df33d4550ccc1446d861c0aa5689d58        not-for-merge   branch 'next' of git://git.kernel.org/pub/scm/git/git
  cc4e3f01fc6a5e09ae5bbdc464965981fae4cf39        not-for-merge   branch 'pu' of git://git.kernel.org/pub/scm/git/git
  7a02dba15bd28826344f9c14a5e2b5c57eeb7e50        not-for-merge   branch 'todo' of git://git.kernel.org/pub/scm/git/git
-Peff
Previous: Nicolas PitreNext: Nicolas Pitre
Message 13 of 18 in “git auto-repack is broken...”
  1. Linus TorvaldsDec 2, 2011
  2. Ævar Arnfjörð BjarmasonDec 2, 2011
  3. Linus TorvaldsDec 2, 2011
  4. Jeff KingDec 2, 2011
  5. Junio C HamanoDec 2, 2011
  6. Jeff KingDec 2, 2011
  7. Junio C HamanoDec 2, 2011
  8. Jeff KingDec 2, 2011
  9. Brandon CaseyDec 3, 2011
  10. Nicolas PitreDec 7, 2011
  11. Jeff KingDec 7, 2011
  12. Nicolas PitreDec 8, 2011
  13. Jeff KingDec 8, 2011
  14. Nicolas PitreDec 8, 2011
  15. Jeff KingDec 8, 2011
  16. Junio C HamanoDec 9, 2011
  17. Nicolas PitreDec 9, 2011
  18. Jeff KingDec 8, 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.