1#!/bin/sh 2# 3# Copyright (c) 2005 Junio C Hamano 4# 5# Fetch one or more remote refs and merge it/them into the current HEAD. 6 7. git-sh-setup-script|| die "Not a git archive" 8 9orig_head=$(cat "$GIT_DIR/HEAD")|| die "Pulling into a black hole?" 10git-fetch-script --update-head-ok"$@"||exit1 11 12curr_head=$(cat "$GIT_DIR/HEAD") 13iftest"$curr_head"!="$orig_head" 14then 15# The fetch involved updating the current branch. 16 17# The working tree and the index file is still based on the 18# $orig_head commit, but we are merging into $curr_head. 19# First update the working tree to match $curr_head. 20 21echo>&2"Warning: fetch updated the current branch head." 22echo>&2"Warning: fast forwarding your working tree." 23 git-read-tree -u -m"$orig_head""$curr_head"|| 24 die "You need to first update your working tree." 25fi 26 27merge_head=$(sed -e 's/ .*//' "$GIT_DIR"/FETCH_HEAD | tr '\012' ' ') 28merge_name=$(sed-e's/^[0-9a-f]* //'"$GIT_DIR"/FETCH_HEAD | 29tr'\012'' ') 30 31case"$merge_head"in 32'') 33echo>&2"No changes." 34exit0 35;; 36*' '?*) 37echo>&2"Pulling more than one heads; making an Octopus." 38exec git-octopus-script 39;; 40esac 41 42git-resolve-script \ 43"$(cat "$GIT_DIR"/HEAD)" \ 44$merge_head"Merge$merge_name"