# 2.6.11-tree tag would not be happy to be fed to resolve.
if git-cat-file commit "$head_" >/dev/null 2>&1
then
- head_=$(git-rev-parse --verify "$head_^0") || exit
- note_="$head_ $remote_name_ from $remote_nick_"
+ headc_=$(git-rev-parse --verify "$head_^0") || exit
+ note_="$headc_ $remote_name_ from $remote_nick_"
echo "$note_" >>$GIT_DIR/FETCH_HEAD
echo >&2 "* committish: $note_"
else
;;
esac || {
echo >&2 "* $1: does not fast forward to $4"
- case "$force" in
- t)
+ case "$force,$single_force" in
+ t,* | *,t)
echo >&2 " from $3; forcing update."
;;
*)
# These are relative path from $GIT_DIR, typically starting at refs/
# but may be HEAD
+ if expr "$ref" : '\+' >/dev/null
+ then
+ single_force=t
+ ref=$(expr "$ref" : '\+\(.*\)')
+ else
+ single_force=
+ fi
remote_name=$(expr "$ref" : '\([^:]*\):')
local_name=$(expr "$ref" : '[^:]*:\(.*\)')
while read sha1 remote_name
do
found=
+ single_force=
for ref in $refs
do
case "$ref" in
+ +$remote_name:*)
+ single_force=t
+ found="$ref"
+ break ;;
$remote_name:*)
found="$ref"
break ;;
done
local_name=$(expr "$found" : '[^:]*:\(.*\)')
- append_fetch_head "$sha1" "$remote" "$remote_name" "$remote_nick" "$local_name"
+ append_fetch_head "$sha1" "$remote" "$remote_name" "$remote_nick" "$local_name"
done
;;
esac