57
force_rebase=
58
allow_rerere_autoupdate=
59
60
+read_state () {
61
+ if test -d "$merge_dir"
62
+ then
63
+ state_dir="$merge_dir"
64
+ prev_head=$(cat "$merge_dir"/prev_head) &&
65
+ end=$(cat "$merge_dir"/end) &&
66
+ msgnum=$(cat "$merge_dir"/msgnum)
67
+ else
68
+ state_dir="$apply_dir"
69
+ fi &&
70
+ head_name=$(cat "$state_dir"/head-name) &&
71
+ onto=$(cat "$state_dir"/onto) &&
72
+ orig_head=$(cat "$state_dir"/orig-head) &&
73
+ GIT_QUIET=$(cat "$state_dir"/quiet)
74
+}
75
+
76
continue_merge () {
77
test -n "$prev_head" || die "prev_head must be defined"
78
test -d "$merge_dir" || die "$merge_dir directory does not exist"
154
}
155
156
move_to_original_branch () {
141
- test -z "$head_name" &&
142
- head_name="$(cat "$merge_dir"/head-name)" &&
143
- onto="$(cat "$merge_dir"/onto)" &&
144
- orig_head="$(cat "$merge_dir"/orig-head)"
157
case "$head_name" in
158
refs/*)
159
message="rebase finished: $head_name onto $onto"
232
echo "mark them as resolved using git add"
233
exit 1
234
}
235
+ read_state
236
if test -d "$merge_dir"
237
then
225
- prev_head=$(cat "$merge_dir/prev_head")
226
- end=$(cat "$merge_dir/end")
227
- msgnum=$(cat "$merge_dir/msgnum")
228
- onto=$(cat "$merge_dir/onto")
229
- GIT_QUIET=$(cat "$merge_dir/quiet")
238
continue_merge
239
while test "$msgnum" -le "$end"
240
do
244
finish_rb_merge
245
exit
246
fi
239
- head_name=$(cat "$apply_dir"/head-name) &&
240
- onto=$(cat "$apply_dir"/onto) &&
241
- orig_head=$(cat "$apply_dir"/orig-head) &&
242
- GIT_QUIET=$(cat "$apply_dir"/quiet)
247
git am --resolved --3way --resolvemsg="$RESOLVEMSG" &&
248
move_to_original_branch
249
exit
253
die "No rebase in progress?"
254
255
git reset --hard HEAD || exit $?
256
+ read_state
257
if test -d "$merge_dir"
258
then
259
git rerere clear
255
- prev_head=$(cat "$merge_dir/prev_head")
256
- end=$(cat "$merge_dir/end")
257
- msgnum=$(cat "$merge_dir/msgnum")
260
msgnum=$(($msgnum + 1))
259
- onto=$(cat "$merge_dir/onto")
260
- GIT_QUIET=$(cat "$merge_dir/quiet")
261
while test "$msgnum" -le "$end"
262
do
263
call_merge "$msgnum"
266
finish_rb_merge
267
exit
268
fi
269
- head_name=$(cat "$apply_dir"/head-name) &&
270
- onto=$(cat "$apply_dir"/onto) &&
271
- orig_head=$(cat "$apply_dir"/orig-head) &&
272
- GIT_QUIET=$(cat "$apply_dir"/quiet)
269
git am -3 --skip --resolvemsg="$RESOLVEMSG" &&
270
move_to_original_branch
271
exit
275
die "No rebase in progress?"
276
277
git rerere clear
282
-
283
- test -d "$merge_dir" || merge_dir="$apply_dir"
284
-
285
- head_name="$(cat "$merge_dir"/head-name)" &&
278
+ read_state
279
case "$head_name" in
280
refs/*)
281
git symbolic-ref HEAD $head_name ||
282
die "Could not move back to $head_name"
283
;;
284
esac
292
- git reset --hard $(cat "$merge_dir/orig-head")
293
- rm -r "$merge_dir"
285
+ git reset --hard $orig_head
286
+ rm -r "$state_dir"
287
exit
288
;;
289
--onto)
567
# this is rename-aware if the recursive (default) strategy is used
568
569
mkdir -p "$merge_dir"
577
-echo "$onto" > "$merge_dir/onto"
570
echo "$onto_name" > "$merge_dir/onto_name"
571
prev_head=$orig_head
572
echo "$prev_head" > "$merge_dir/prev_head"
581
-echo "$orig_head" > "$merge_dir/orig-head"
573
echo "$head_name" > "$merge_dir/head-name"
574
+echo "$onto" > "$merge_dir/onto"
575
+echo "$orig_head" > "$merge_dir/orig-head"
576
echo "$GIT_QUIET" > "$merge_dir/quiet"
577
578
msgnum=0