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

Re: [PATCH] Add commands that git-gc runs underneath

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 31, 2007, 21:12 UTC
Message-ID
<7vlkbrxvbm.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<46D7E058.9050001@op5.se>
Andreas Ericsson <ae@op5.se> writes:
Show 21 quoted lines
> Junio C Hamano wrote:
>> Andreas Ericsson <ae@op5.se> writes:
>>
>>> When gc was a shell-script, it was fairly easy to find out the command-
>>> sequence...
>>
>> Maybe referring more advanced/curious users to contrib/examples/
>> directory is a good idea, but not necessarily from manpages of
>> the commands that have been rewritten in C.
>>
>> I think contrib/examples/ needs a README file that effectively
>> say "these are the last versions of shell script implementation
>> of the commands before they were rewritten in C.  New features
>> may have been added to the built-in ones but these example
>> scripts are not kept up to date.  They are here to serve as
>> examples to show you how you would pipeline the plumbing level
>> commands."
>
> Sensible, and also avoids the possible bitrot problem with the
> man-page should there be additional actions added to standard
> git-gc operations.

Oh, I did not mean to address bit-rot issue. I was addressing "ah, in good old days we had tons of example scripts" issue.

If we want the manual to be explicit about what exactly happens when you run "git-gc" (and I think we do), that needs to be done independently. But my feeling is that we do not want to describe what happens solely in terms of what other individual commands do. Referring to other manual pages for more details is fine, but that should not be the sole description.

In other words, instead of saying:
 - runs "git pack-refs", "git reflog expire --all", "git repack
   -a -d -l", ...
I think we would want to say it this way:
 * Under such-and-such condition, loose refs are packed for
   quicker access in $GIT_DIR/packed-refs file (runs "git
   pack-refs --prune");
 * Old reflog entries that record how tips of each branches were
   moved are expired (runs "git-reflog expire --all");
 * Packfiles are repacked along with loose object files, while
   exclusing objects that are available from the alternates
   (runs "git repack -a -d -l");
 * Unreferenced loose objects are removed if --prune is given
   (runs "git prune");
  
 * Old rerere records that record resolutions to previously
   conflicted merges are expired (runs "git rerere gc").
Previous: David KastrupNext: David Kastrup
Message 11 of 13 in “Add commands that git-gc runs underneath”
  1. Add commands that git-gc runs underneathJari Aalto, Aug 30, 2007
  2. Johannes SchindelinAug 30, 2007
  3. Andreas EricssonAug 30, 2007
  4. Johannes SchindelinAug 30, 2007
  5. Andreas EricssonAug 30, 2007
  6. Tom ClarkeAug 30, 2007
  7. Theodore TsoAug 30, 2007
  8. Junio C HamanoAug 30, 2007
  9. Andreas EricssonAug 31, 2007
  10. David KastrupAug 31, 2007
  11. Junio C HamanoAug 31, 2007
  12. David KastrupAug 31, 2007
  13. David KastrupAug 30, 2007

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.