1#!/bin/sh
2#
3# Copyright (c) 2010 Junio C Hamano.
4#
5
6case "$action" in
7continue)
8 git am --resolved --resolvemsg="$resolvemsg" &&
9 move_to_original_branch
10 exit
11 ;;
12skip)
13 git am --skip --resolvemsg="$resolvemsg" &&
14 move_to_original_branch
15 exit
16 ;;
17esac
18
19test -n "$rebase_root" && root_flag=--root
20
21ret=0
22if test -n "$keep_empty"
23then
24 # we have to do this the hard way. git format-patch completely squashes
25 # empty commits and even if it didn't the format doesn't really lend
26 # itself well to recording empty patches. fortunately, cherry-pick
27 # makes this easy
28 git cherry-pick --allow-empty "$revisions"
29 ret=$?
30else
31 rm -f "$GIT_DIR/rebased-patches"
32
33 git format-patch -k --stdout --full-index --ignore-if-in-upstream \
34 --src-prefix=a/ --dst-prefix=b/ --no-renames --no-cover-letter \
35 $root_flag "$revisions" >"$GIT_DIR/rebased-patches"
36 ret=$?
37
38 if test 0 != $ret
39 then
40 rm -f "$GIT_DIR/rebased-patches"
41 case "$head_name" in
42 refs/heads/*)
43 git checkout -q "$head_name"
44 ;;
45 *)
46 git checkout -q "$orig_head"
47 ;;
48 esac
49
50 cat >&2 <<-EOF
51
52 git encountered an error while preparing the patches to replay
53 these revisions:
54
55 $revisions
56
57 As a result, git cannot rebase them.
58 EOF
59 exit $?
60 fi
61
62 git am $git_am_opt --rebasing --resolvemsg="$resolvemsg" <"$GIT_DIR/rebased-patches"
63 ret=$?
64
65 rm -f "$GIT_DIR/rebased-patches"
66fi
67
68if test 0 != $ret
69then
70 test -d "$state_dir" && write_basic_state
71 exit $ret
72fi
73
74move_to_original_branch