]>
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 | ||
28 | # Give up if we are given more than two remotes -- not handling octopus. | |
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 | ||
91063bbc | 40 | git-update-index --refresh 2>/dev/null |
1b1fdf8c | 41 | git-read-tree -u -m --aggressive $bases $head $remotes || exit 2 |
91063bbc JH |
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 |