]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | # | |
3 | # Copyright (c) 2005 Linus Torvalds | |
4 | # Copyright (c) 2005 Junio C Hamano | |
5 | # | |
6 | # Resolve two trees, using enhanced multi-base read-tree. | |
7 | ||
8 | # The first parameters up to -- are merge bases; the rest are heads. | |
9 | bases= head= remotes= sep_seen= | |
10 | for arg | |
11 | do | |
12 | case ",$sep_seen,$head,$arg," in | |
13 | *,--,) | |
14 | sep_seen=yes | |
15 | ;; | |
16 | ,yes,,*) | |
17 | head=$arg | |
18 | ;; | |
19 | ,yes,*) | |
20 | remotes="$remotes$arg " | |
21 | ;; | |
22 | *) | |
23 | bases="$bases$arg " | |
24 | ;; | |
25 | esac | |
26 | done | |
27 | ||
28 | # Give up if we are given two or more remotes -- not handling octopus. | |
29 | case "$remotes" in | |
30 | ?*' '?*) | |
31 | exit 2 ;; | |
32 | esac | |
33 | ||
34 | # Give up if this is a baseless merge. | |
35 | if test '' = "$bases" | |
36 | then | |
37 | exit 2 | |
38 | fi | |
39 | ||
40 | git update-index -q --refresh | |
41 | git read-tree -u -m --aggressive $bases $head $remotes || exit 2 | |
42 | echo "Trying simple merge." | |
43 | if result_tree=$(git write-tree 2>/dev/null) | |
44 | then | |
45 | exit 0 | |
46 | else | |
47 | echo "Simple merge failed, trying Automatic merge." | |
48 | if git-merge-index -o git-merge-one-file -a | |
49 | then | |
50 | exit 0 | |
51 | else | |
52 | exit 1 | |
53 | fi | |
54 | fi |