From: Shawn O. Pearce Date: Fri, 16 Feb 2007 07:45:03 GMT Subject: Re: [PATCH] Add git-unbundle - unpack objects and references for disconnected transfer Message-ID: <20070216074503.GH28894@spearce.org> In-Reply-To: <7v4ppma788.fsf@assigned-by-dhcp.cox.net> Junio C Hamano wrote: > "Shawn O. Pearce" writes: > > Mark Levedahl 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.