On 2006-10-27 03:42, Shawn Pearce wrote: > Nicolas Pitre <nico@xxxxxxx> wrote: >> On Fri, 27 Oct 2006, Eran Tromer wrote: >> Well, the race does exist. Don't do repack -a -d at the same time then. > > This is an issue for "central" repositories that people push into > and which might be getting repacked according to a cronjob. AFAICT, the bottom line of the "Re: auto-packing on kernel.org? please?" thread last October was "sure, go ahead". > Unfortunately I don't have a solution. I tried to come up with > one but didn't. :-) Here's one way to do it. Change git-repack to follow references under $GIT_DIR/tmp/refs/ too. To receive or fetch a pack: 1. Add references to the new heads in `mktemp $GIT_DIR/tmp/refs/XXXXXX`. 2. Put the new .pack under $GIT_DIR/objects/pack/. 3. Put the new .idx under $GIT_DIR/objects/pack/. 4. Update the relevant heads under $GIT_DIR/refs/. 5. Delete the references from step 1. This is repack-safe and never corrupts the repo. The worst-case failure mode is if you die before cleaning the refs from $GIT_DIR/tmp/refs. That may mean some packed objects will never be removed by "repack -a -d" even if they lose all references from $GIT_DIR/refs, so do "tmpwatch -m 240 $GIT_DIR/tmp/refs" to take care of that. Eran - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html