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

Re: gc considered dangerous

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Feb 8, 2009, 14:56 UTC
Message-ID
<alpine.DEB.1.00.0902081551290.10279@pacific.mpi-cbg.de>
In-Reply-To
<200902080347.25970.robin.rosenberg.lists@dewire.com>
Hi,
On Sun, 8 Feb 2009, Robin Rosenberg wrote:
> I've seen this. Running git gc on Windows, while having Elipse open can 
> kill your object database.
You had me really scared with the mail subject!
> if gc doesn't find a new optimal pack it tries to rewrite a new pack 
> with the same id. So it rm's the idx file (fine) and the the pack file 
> (not ok) and gives up,

I disagree with your notion that it is fine to kill the existing idx file until the new one has been written successfully.

My preliminary guess is that this code in pack-write.c needs to use the lock file paradigm:

        if (!index_name) {
		[...]
        } else {
                unlink(index_name);
                fd = open(index_name, O_CREAT|O_EXCL|O_WRONLY, 0600);
        }

Ciao, Dscho

Previous: Robin RosenbergNext: Robin Rosenberg
Message 3 of 13 in “gc considered dangerous”
  1. Robin RosenbergFeb 8, 2009
  2. Robin RosenbergFeb 8, 2009
  3. Johannes SchindelinFeb 8, 2009
  4. Robin RosenbergFeb 8, 2009
  5. Johannes SchindelinFeb 8, 2009
  6. Steffen ProhaskaFeb 8, 2009
  7. Robin RosenbergFeb 8, 2009
  8. Junio C HamanoFeb 8, 2009
  9. Robin RosenbergFeb 8, 2009
  10. Robin RosenbergFeb 8, 2009
  11. Mike HommeyFeb 9, 2009
  12. Junio C HamanoFeb 9, 2009
  13. Junio C HamanoFeb 8, 2009

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.