add a perl script to convert MaintNotes to wiki format
[git/dscho.git] / Reintegrate
blob21da827f46090327824f22030ee2bfa4b7c9a9dc
1 #!/bin/sh
3 accept_rerere=t generate=no
4 while case "$#,$1" in 0,*) break;; *,-*) ;; esac
5 do
6 case "$1" in
7 -n) accept_rerere= ;;
8 *) generate=yes
9 break ;;
10 esac
11 shift
12 done
14 case "$generate" in
15 no)
16 accept_rerere () {
17 if test -z "$accept_rerere"
18 then
19 return 1
21 if git diff |
22 grep -e "^.+" -e "^+." |
23 grep -e "^..<<<<<<<" -e "^..=======" -e "^..>>>>>>>" >/dev/null
24 then
25 return 1
26 else
27 EDITOR=: git commit -a --no-verify
28 echo "Accepted previous resolution"
29 return 0
33 while read branch eh
35 case "$eh" in
36 "")
37 echo >&2 "* $branch"
38 git merge "$branch" || accept_rerere || exit
39 if git show-ref -q --verify "refs/merge-fix/$branch"
40 then
41 git cherry-pick --no-commit "refs/merge-fix/$branch" &&
42 EDITOR=: git commit --amend -a
45 pick" "*)
46 echo >&2 "* $eh"
47 git cherry-pick "$branch" || exit ;;
48 *) echo >&2 "Eh? $branch $eh"; exit ;;
49 esac
50 done
51 exit
52 esac
54 x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
55 x40="$x40$x40$x40$x40$x40$x40$x40$x40"
56 LF='
59 show_merge () {
60 case "$msg" in
61 "Merge branch '"*"'"*" into "*)
62 branch=$(expr "$msg" : "Merge branch '\(.*\)'")
63 merge_hier=heads/
65 "Merge remote branch '"*"'"*" into "*)
66 branch=$(expr "$msg" : "Merge remote branch '\(.*\)'")
67 merge_hier=
70 echo 2>&1 "Huh?: $msg"
71 exit 1
73 esac &&
74 tip=$(git rev-parse --verify "refs/$merge_hier$branch" 2>/dev/null) &&
75 merged=$(git name-rev --refs="refs/$merge_hier$branch" "$other" 2>/dev/null) &&
76 merged=$(expr "$merged" : "$x40 \(.*\)") &&
77 test "$merged" != undefined || {
78 other=$(git log -1 --pretty='format:%s' $other) &&
79 merged="$branch :rebased? $other"
83 show_pick () {
84 merged="$(git rev-parse --verify "$commit") pick $msg"
87 echo '#!/bin/sh'
88 echo "$0 <<\\EOF"
90 git log --pretty=oneline --first-parent "$1" |
92 series=
93 while read commit msg
95 if other=$(git rev-parse -q --verify "$commit^2")
96 then
97 show_merge
98 else
99 show_pick
102 if test -z "$series"
103 then
104 series="$merged"
105 else
106 series="$merged$LF$series"
108 done
109 echo "$series"
112 echo EOF