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