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|| die "Not a git archive" 8 9orig_head=$(cat "$GIT_DIR/HEAD")|| die "Pulling into a black hole?" 10git-fetch --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' ' ') 28 29case"$merge_head"in 30'') 31echo>&2"No changes." 32exit0 33;; 34*' '?*) 35echo>&2"Pulling more than one heads; making an Octopus." 36exec git-octopus 37;; 38esac 39 40merge_name=$(git-fmt-merge-msg <"$GIT_DIR/FETCH_HEAD") 41git-resolve"$(cat "$GIT_DIR"/HEAD)"$merge_head"$merge_name"