]>
Commit | Line | Data |
---|---|---|
91063bbc JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2005 Linus Torvalds | |
2276aa6c | 4 | # Copyright (c) 2005 Junio C Hamano |
91063bbc | 5 | # |
3dff5379 | 6 | # Resolve two trees, using enhanced multi-base read-tree. |
91063bbc JH |
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 | ||
7d3c82a7 | 28 | # Give up if we are given two or more remotes -- not handling octopus. |
91063bbc JH |
29 | case "$remotes" in |
30 | ?*' '?*) | |
31 | exit 2 ;; | |
32 | esac | |
33 | ||
88f8f0a5 FK |
34 | # Give up if this is a baseless merge. |
35 | if test '' = "$bases" | |
36 | then | |
37 | exit 2 | |
38 | fi | |
39 | ||
7bd93c1c | 40 | git update-index -q --refresh |
5be60078 | 41 | git read-tree -u -m --aggressive $bases $head $remotes || exit 2 |
91063bbc | 42 | echo "Trying simple merge." |
7bd93c1c | 43 | if result_tree=$(git write-tree 2>/dev/null) |
91063bbc JH |
44 | then |
45 | exit 0 | |
46 | else | |
47 | echo "Simple merge failed, trying Automatic merge." | |
974ce807 | 48 | if git merge-index -o git-merge-one-file -a |
91063bbc JH |
49 | then |
50 | exit 0 | |
51 | else | |
52 | exit 1 | |
53 | fi | |
54 | fi |