Subject: Re: [PATCH] Add git-unbundle - unpack objects and references for disconnected transfer

From: "Shawn O. Pearce" <[email-masked]>
Date: Fri, 16 Feb 2007 02:45:03 -0500

Junio C Hamano <[email-masked]> wrote:
> "Shawn O. Pearce" <[email-masked]> writes:
> > Mark Levedahl <[email-masked]> wrote:
> >> +        # update only if non-fastforward
> >> +        local=$(git-rev-parse --verify "$ref^0" 2>/dev/null)
> >> ...
> >> +        git-update-ref -m "git-unbundle update" $ref $sha1
> >
> > What about passing $local as the final argument to update-ref,
> > so that the ref won't be modified if someone changed it while
> > an unbundle was running?  Sure its mostly a manual operation,
> > but imagine running it on a bare repository while someone else
> > is pushing into it...
> 
> The script already has $local at that point, so adding it to
> update-ref is a no-cost change to make things safer.  I think it
> makes sense.

Actually that's only if --force was not given.  If --force was
given, rev-parse wasn't run, so local is not populated.  So maybe
its not trivial.
 
> But I have to wonder...  While someone else is _pushing_ into
> it?  Why are _you_ sneakernetting, then?

People do weird things.  I agree, its probably unlikely to ever
happen.  But give a user a length of rope, they will find a way to
hang themselves...

I can see someone trying to use an update hook with bundle/unbundle
to move stuff from one repository to another, despite the fact that
are better ways to do that.  Better that we fail when an update
might lose changes.

-- 
Shawn.