3 accept_rerere
="--rerere-autoupdate" generate
=no update
= diff= edit
=
4 while case "$#,$1" in 0,*) break;; *,-*) ;; esac
9 -d) update
=${2?"diff with what?"}
13 -u) update
=${2?"update what?"}
23 test -f Meta
/whats-cooking.txt ||
return 0
26 my ($branch) = $ARGV[0];
37 next unless $in_section;
42 if ($in_section && @msg) {
43 open(my $fh, "-|", qw(git cat-file commit HEAD));
44 my @original = (<$fh>);
49 $in_section = 1 if (/^$/);
53 if (/^$/ && $in_section == 1) {
60 open($fh, "|-", qw(git commit --amend -F -));
64 ' <Meta
/whats-cooking.txt
"$1"
70 if ! git write-tree
2>/dev
/null
>/dev
/null
75 EDITOR
=: git commit
--no-verify
76 echo "Accepted previous resolution"
83 case "$branch" in '#'* |
'') continue ;; esac
88 save
=$
(git rev-parse
--verify HEAD
)
89 tip
=$
(git rev-parse
--verify "$branch^0")
90 mb
=$
(git merge-base
"$tip" "$save")
91 test "$mb" = "$tip" && continue
93 git merge
$accept_rerere --no-edit "$branch" ||
97 annotate_merge
"$branch" ||
exit
99 git commit
--amend ||
exit
101 this
=$
(git rev-parse
--verify HEAD
)
102 if test "$this" = "$save"
105 elif git show-ref
-q --verify "refs/merge-fix/$branch"
107 echo >&2 "Fixing up the merge"
108 git cherry-pick
--no-commit "refs/merge-fix/$branch" &&
109 EDITOR
=: git commit
--amend -a ||
exit
114 git cherry-pick
"$branch" ||
exit ;;
115 *) echo >&2 "Eh? $branch $eh"; exit ;;
121 if test -n "$update" && test $# = 0
123 set x $
(sed -n -e '2s/^# //p' <"$update") &&
127 # Generation (or updating)
129 x40
='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
130 x40
="$x40$x40$x40$x40$x40$x40$x40$x40"
136 "Merge branch '"*"'"*)
137 branch
=$
(expr "$msg" : "Merge branch '\(.*\)'")
140 "Merge remote branch '"*"'"*)
141 branch
=$
(expr "$msg" : "Merge remote branch '\(.*\)'")
145 echo 2>&1 "Huh?: $msg"
149 tip
=$
(git rev-parse
--verify "refs/$merge_hier$branch" 2>/dev
/null
) &&
150 merged
=$
(git name-rev
--refs="refs/$merge_hier$branch" "$other" 2>/dev
/null
) &&
151 merged
=$
(expr "$merged" : "$x40 \(.*\)") &&
152 test "$merged" != undefined ||
{
153 other
=$
(git log
-1 --pretty='format:%s' $other) &&
154 merged
="$branch :rebased? $other"
159 merged
="$(git rev-parse --verify "$commit") pick $msg"
167 echo 'case "$#,$1" in'
169 echo " exec $PROGRAM" '"$1" "$0"'
171 echo "$PROGRAM" '"$@" <<\EOF'
172 git log
--pretty=oneline
--first-parent "$1" |
175 while read commit msg
177 if other
=$
(git rev-parse
-q --verify "$commit^2")
188 series
="$merged$LF$series"
201 generate
"$0" "$@" |
diff -u "$update" -
204 echo >&2 "No changes."
206 echo >&2 -n "Update [y/N]? "
211 sed -e 's/ :rebased?.*//' >"$update" ;;
213 echo >&2 "No update then." ;;
217 generate
"$0" "$@" |
diff -u "$update" -