rebase: extract am code to new source file

Extract the code for am-based rebase to git-rebase--am.sh.

Suggested-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Martin von Zweigbergk 2011-02-06 13:43:48 -05:00 committed by Junio C Hamano
parent fa99c1e1e1
commit 46df82d5fa
4 changed files with 38 additions and 29 deletions

1
.gitignore vendored
View File

@ -102,6 +102,7 @@
/git-quiltimport
/git-read-tree
/git-rebase
/git-rebase--am
/git-rebase--interactive
/git-rebase--merge
/git-receive-pack

View File

@ -369,6 +369,7 @@ SCRIPT_SH += git-merge-resolve.sh
SCRIPT_SH += git-mergetool.sh
SCRIPT_SH += git-pull.sh
SCRIPT_SH += git-quiltimport.sh
SCRIPT_SH += git-rebase--am.sh
SCRIPT_SH += git-rebase--interactive.sh
SCRIPT_SH += git-rebase--merge.sh
SCRIPT_SH += git-rebase.sh

34
git-rebase--am.sh Normal file
View File

@ -0,0 +1,34 @@
#!/bin/sh
#
# Copyright (c) 2010 Junio C Hamano.
#
. git-sh-setup
case "$action" in
continue)
git am --resolved --3way --resolvemsg="$resolvemsg" &&
move_to_original_branch
exit
;;
skip)
git am --skip -3 --resolvemsg="$resolvemsg" &&
move_to_original_branch
exit
;;
esac
test -n "$rebase_root" && root_flag=--root
git format-patch -k --stdout --full-index --ignore-if-in-upstream \
--src-prefix=a/ --dst-prefix=b/ \
--no-renames $root_flag "$revisions" |
git am $git_am_opt --rebasing --resolvemsg="$resolvemsg" &&
move_to_original_branch
ret=$?
test 0 != $ret -a -d "$state_dir" &&
echo $head_name > "$state_dir/head-name" &&
echo $onto > "$state_dir/onto" &&
echo $orig_head > "$state_dir/orig-head" &&
echo "$GIT_QUIET" > "$state_dir/quiet"
exit $ret

View File

@ -91,7 +91,7 @@ run_specific_rebase () {
GIT_EDITOR=:
export GIT_EDITOR
fi
test "$type" != am && . git-rebase--$type
. git-rebase--$type
}
run_pre_rebase_hook () {
@ -261,17 +261,11 @@ continue)
}
read_basic_state
run_specific_rebase
git am --resolved --3way --resolvemsg="$resolvemsg" &&
move_to_original_branch
exit
;;
skip)
git reset --hard HEAD || exit $?
read_basic_state
run_specific_rebase
git am -3 --skip --resolvemsg="$resolvemsg" &&
move_to_original_branch
exit
;;
abort)
git rerere clear
@ -324,14 +318,12 @@ then
shift
upstream=`git rev-parse --verify "${upstream_name}^0"` ||
die "invalid upstream $upstream_name"
unset root_flag
upstream_arg="$upstream_name"
else
test -z "$onto" && die "You must specify --onto when using --root"
unset upstream_name
unset upstream
root_flag="--root"
upstream_arg="$root_flag"
upstream_arg=--root
fi
# Make sure the branch to rebase onto is valid.
@ -457,23 +449,4 @@ else
revisions="$upstream..$orig_head"
fi
if test -z "$do_merge"
then
git format-patch -k --stdout --full-index --ignore-if-in-upstream \
--src-prefix=a/ --dst-prefix=b/ \
--no-renames $root_flag "$revisions" |
git am $git_am_opt --rebasing --resolvemsg="$resolvemsg" &&
move_to_original_branch
ret=$?
test 0 != $ret -a -d "$apply_dir" &&
echo $head_name > "$apply_dir/head-name" &&
echo $onto > "$apply_dir/onto" &&
echo $orig_head > "$apply_dir/orig-head" &&
echo "$GIT_QUIET" > "$apply_dir/quiet"
exit $ret
fi
# start doing a rebase with git-merge
# this is rename-aware if the recursive (default) strategy is used
run_specific_rebase