1#!/bin/sh 2# 3# This is the git merge script, called with 4# 5# $1 - original file SHA1 (or empty) 6# $2 - file in branch1 SHA1 (or empty) 7# $3 - file in branch2 SHA1 (or empty) 8# $4 - pathname in repository 9# 10# 11# Handle some trivial cases.. The _really_ trivial cases have 12# been handled already by read-tree, but that one doesn't 13# do any merges that migth change the tree layout 14# 15 16case"${1:-.}${2:-.}${3:-.}"in 17# 18# deleted in both, or deleted in one and unchanged in the other 19# 20"$1.."|"$1.$1"|"$1$1.") 21rm-f --"$4" 22 update-cache --remove --"$4" 23exit0 24;; 25 26# 27# added in one, or added identically in both 28# 29".$2."|"..$3"|".$2$2") 30mv$(unpack-file "${2:-$3}") $4 31 update-cache --add --$4 32exit0 33;; 34 35# 36# Modified in both, but differently ;( 37# 38"$1$2$3") 39echo"Auto-merging$4" 40 orig=$(unpack-file $1) 41 src1=$(unpack-file $2) 42 src2=$(unpack-file $3) 43 merge "$src2""$orig""$src1"||echo Leaving conflict merge in$src2&&exit1 44cp"$src2""$4"&& update-cache --add --"$4"&&exit0 45;; 46 47*) 48echo"Not handling case$1->$2->$3" 49;; 50esac 51exit1