@matheusbsbs / matheus-bagliano / commits / 51add76e92
Fork 0

Retire 'stupid' merge strategy

As pointed out by Linus, this strategy tries to take the best merge base, but 'recursive' just does it better. If one needs something more than 'resolve' then he/she should really use 'recursive' and not 'stupid'. Cf. Message-ID: <alpine.LFD.1.10.0807030947360.18105@woody.linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Miklos Vajna committed Jul 5, 2008 at 16:43 UTC 51add76e92c9de9bcad3d421303b45ab488d529e
3 files changed +1 -83
.gitignore
-1
@@ -75,7 +75,6 @@ git-merge-one-file
75 git-merge-ours
76 git-merge-recursive
77 git-merge-resolve
78 -git-merge-stupid
78 git-merge-subtree
79 git-mergetool
80 git-mktag
Makefile
+1 -2
@@ -241,7 +241,6 @@ SCRIPT_SH += git-merge-octopus.sh
241 SCRIPT_SH += git-merge-one-file.sh
242 SCRIPT_SH += git-merge-resolve.sh
243 SCRIPT_SH += git-merge.sh
244 -SCRIPT_SH += git-merge-stupid.sh
244 SCRIPT_SH += git-mergetool.sh
245 SCRIPT_SH += git-parse-remote.sh
246 SCRIPT_SH += git-pull.sh
@@ -1429,7 +1428,7 @@ check-docs::
1428 do \
1429 case "$$v" in \
1430 git-merge-octopus | git-merge-ours | git-merge-recursive | \
1432 - git-merge-resolve | git-merge-stupid | git-merge-subtree | \
1431 + git-merge-resolve | git-merge-subtree | \
1432 git-fsck-objects | git-init-db | \
1433 git-?*--?* ) continue ;; \
1434 esac ; \
git-merge-stupid.sh deleted
-80
@@ -1,80 +0,0 @@
1 -#!/bin/sh
2 -#
3 -# Copyright (c) 2005 Linus Torvalds
4 -#
5 -# Resolve two trees, 'stupid merge'.
6 -
7 -# The first parameters up to -- are merge bases; the rest are heads.
8 -bases= head= remotes= sep_seen=
9 -for arg
10 -do
11 - case ",$sep_seen,$head,$arg," in
12 - *,--,)
13 - sep_seen=yes
14 - ;;
15 - ,yes,,*)
16 - head=$arg
17 - ;;
18 - ,yes,*)
19 - remotes="$remotes$arg "
20 - ;;
21 - *)
22 - bases="$bases$arg "
23 - ;;
24 - esac
25 -done
26 -
27 -# Give up if we are given two or more remotes -- not handling octopus.
28 -case "$remotes" in
29 -?*' '?*)
30 - exit 2 ;;
31 -esac
32 -
33 -# Find an optimum merge base if there are more than one candidates.
34 -case "$bases" in
35 -?*' '?*)
36 - echo "Trying to find the optimum merge base."
37 - G=.tmp-index$$
38 - best=
39 - best_cnt=-1
40 - for c in $bases
41 - do
42 - rm -f $G
43 - GIT_INDEX_FILE=$G git read-tree -m $c $head $remotes \
44 - 2>/dev/null || continue
45 - # Count the paths that are unmerged.
46 - cnt=`GIT_INDEX_FILE=$G git ls-files --unmerged | wc -l`
47 - if test $best_cnt -le 0 -o $cnt -le $best_cnt
48 - then
49 - best=$c
50 - best_cnt=$cnt
51 - if test "$best_cnt" -eq 0
52 - then
53 - # Cannot do any better than all trivial merge.
54 - break
55 - fi
56 - fi
57 - done
58 - rm -f $G
59 - common="$best"
60 - ;;
61 -*)
62 - common="$bases"
63 - ;;
64 -esac
65 -
66 -git update-index --refresh 2>/dev/null
67 -git read-tree -u -m $common $head $remotes || exit 2
68 -echo "Trying simple merge."
69 -if result_tree=$(git write-tree 2>/dev/null)
70 -then
71 - exit 0
72 -else
73 - echo "Simple merge failed, trying Automatic merge."
74 - if git-merge-index -o git-merge-one-file -a
75 - then
76 - exit 0
77 - else
78 - exit 1
79 - fi
80 -fi