git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* git-repack.sh not server/multiuse safe?
@ 2012-09-05 21:18 Martin Fick
  0 siblings, 0 replies; only message in thread
From: Martin Fick @ 2012-09-05 21:18 UTC (permalink / raw)
  To: git

I have been reading the git-repack.sh script and I have 
found a piece that I am concerned with.  It looks like after 
repacking there is a place when packfiles could be 
temporarily unaccessible making the objects within 
temporarily unaccessible.  If my evaluation is true, it 
would seem like git repacking is not "server" safe?

In particular, I am talking about this loop:

 # Ok we have prepared all new packfiles.

 # First see if there are packs of the same name and if so
 # if we can move them out of the way (this can happen if we
 # repacked immediately after packing fully.
 rollback=
 failed=
 for name in $names
 do
        for sfx in pack idx
        do
                file=pack-$name.$sfx
                test -f "$PACKDIR/$file" || continue
                rm -f "$PACKDIR/old-$file" &&
                mv "$PACKDIR/$file" "$PACKDIR/old-$file" ||  
{
                        failed=t
                        break
                }
                rollback="$rollback $file"
        done
        test -z "$failed" || break
 done



It would seem that one way to avoid this (at least on 
systems supporting hardlinks), would be to instead link the 
original packfile to old-file first, then move the new 
packfile in place without ever deleting the original one 
(from its original name), only delete the old-file link.  
Does that make sense at all?

Thanks,

-Martin


-- 
Employee of Qualcomm Innovation Center, Inc. which is a 
member of Code Aurora Forum

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2012-09-05 21:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-05 21:18 git-repack.sh not server/multiuse safe? Martin Fick

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).