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

From: "Shawn O. Pearce" <[email-masked]>
Date: Fri, 16 Feb 2007 01:48:52 -0500

Mark Levedahl <[email-masked]> wrote:
> +        # update only if non-fastforward
> +        local=$(git-rev-parse --verify "$ref^0" 2>/dev/null)
> +        if test -n "$local"  ; then
> +            mb=$(git-merge-base $local $sha1)
> +            if test "$mb" != "$local" ; then
> +                echo "Not applying non-fast forward update: $ref"
> +            else
> +                ok=1
> +            fi
> +        else
> +            ok=1
> +        fi
> +    else
> +        #forced, accept non-fast forward update
> +        ok=1
> +    fi
> +    if test -n "$ok" ; then
> +        echo "updating: $ref to $sha1"
> +        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...

-- 
Shawn.