#!/bin/sh # # Copyright (c) 2005 Linus Torvalds # Copyright (c) 2005 Junio C Hamano # # Resolve two trees, using enhanced multi-base read-tree. # The first parameters up to -- are merge bases; the rest are heads. setglobal bases = '', head = '', remotes = '', sep_seen = ''for arg in @Argv { match ",$sep_seen,$head,$arg," { with *,--, setglobal sep_seen = 'yes' with ,yes,,* setglobal head = $arg with ,yes,* setglobal remotes = ""$remotes$arg "" with * setglobal bases = ""$bases$arg "" } } # Give up if we are given two or more remotes -- not handling octopus. match $remotes { with ?*' '?* exit 2 } # Give up if this is a baseless merge. if test '' = $bases { exit 2 } git update-index -q --refresh git read-tree -u -m --aggressive $bases $head $remotes || exit 2 echo "Trying simple merge." if setglobal result_tree = $[git write-tree !2 >/dev/null] { exit 0 } else { echo "Simple merge failed, trying Automatic merge." if git-merge-index -o git-merge-one-file -a { exit 0 } else { exit 1 } }