????
Current Path : /proc/self/root/usr/libexec/git-core/ |
Current File : //proc/self/root/usr/libexec/git-core/git-merge-resolve |
#!/bin/sh # # Copyright (c) 2005 Linus Torvalds # Copyright (c) 2005 Junio C Hamano # # Resolve two trees, using enhanced multi-base read-tree. . git-sh-setup # Abort if index does not match HEAD if ! git diff-index --quiet --cached HEAD -- then gettextln "Error: Your local changes to the following files would be overwritten by merge" git diff-index --cached --name-only HEAD -- | sed -e 's/^/ /' exit 2 fi # The first parameters up to -- are merge bases; the rest are heads. bases= head= remotes= sep_seen= for arg do case ",$sep_seen,$head,$arg," in *,--,) sep_seen=yes ;; ,yes,,*) head=$arg ;; ,yes,*) remotes="$remotes$arg " ;; *) bases="$bases$arg " ;; esac done # Give up if we are given two or more remotes -- not handling octopus. case "$remotes" in ?*' '?*) exit 2 ;; esac # Give up if this is a baseless merge. if test '' = "$bases" then exit 2 fi git update-index -q --refresh git read-tree -u -m --aggressive $bases $head $remotes || exit 2 echo "Trying simple merge." if result_tree=$(git write-tree 2>/dev/null) then exit 0 else echo "Simple merge failed, trying Automatic merge." if git merge-index -o git-merge-one-file -a then exit 0 else exit 1 fi fi