They do something completely different from 'git am', it belongs in a
different file.
No functional changes.
Signed-off-by: Felipe Contreras <redacted>
---
.gitignore | 1 +
Makefile | 1 +
git-rebase--am.sh | 11 +----------
git-rebase--cherrypick.sh | 30 ++++++++++++++++++++++++++++++
git-rebase.sh | 4 ++++
5 files changed, 37 insertions(+), 10 deletions(-)
create mode 100644 git-rebase--cherrypick.sh
diff --git a/.gitignore b/.gitignore
index 6b1fd1b..3514737 100644
--- a/.gitignore
+++ b/.gitignore
@@ -114,6 +114,7 @@
/git-read-tree
/git-rebase
/git-rebase--am
+/git-rebase--cherrypick
/git-rebase--interactive
/git-rebase--merge
/git-receive-pack
diff --git a/Makefile b/Makefile
index 9396d57..2d6521e 100644
--- a/Makefile
+++ b/Makefile
@@ -473,6 +473,7 @@ SCRIPT_SH += git-web--browse.sh
SCRIPT_LIB += git-mergetool--lib
SCRIPT_LIB += git-parse-remote
SCRIPT_LIB += git-rebase--am
+SCRIPT_LIB += git-rebase--cherrypick
SCRIPT_LIB += git-rebase--interactive
SCRIPT_LIB += git-rebase--merge
SCRIPT_LIB += git-sh-setup
diff --git a/git-rebase--am.sh b/git-rebase--am.sh
index 34e3102..aae6a85 100644
--- a/git-rebase--am.sh
+++ b/git-rebase--am.sh
@@ -19,15 +19,7 @@ esac
test -n "$rebase_root" && root_flag=--root
ret=0
-if test -n "$keep_empty"
-then
- # we have to do this the hard way. git format-patch completely squashes
- # empty commits and even if it didn't the format doesn't really lend
- # itself well to recording empty patches. fortunately, cherry-pick
- # makes this easy
- git cherry-pick --allow-empty "$revisions"
- ret=$?
-else
+
rm -f "$GIT_DIR/rebased-patches"
git format-patch -k --stdout --full-index --ignore-if-in-upstream \
@@ -63,7 +55,6 @@ else
ret=$?
rm -f "$GIT_DIR/rebased-patches"
-fi
if test 0 != $ret
then
diff --git a/git-rebase--cherrypick.sh b/git-rebase--cherrypick.sh
new file mode 100644
index 0000000..2c16995
--- /dev/null
+++ b/git-rebase--cherrypick.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+#
+# Copyright (c) 2010 Junio C Hamano.
+#
+
+case "$action" in
+continue)
+ git am --resolved --resolvemsg="$resolvemsg" &&
+ move_to_original_branch
+ return
+ ;;
+skip)
+ git am --skip --resolvemsg="$resolvemsg" &&
+ move_to_original_branch
+ return
+ ;;
+esac
+
+test -n "$rebase_root" && root_flag=--root
+
+git cherry-pick --allow-empty "$revisions"
+ret=$?
+
+if test 0 != $ret
+then
+ test -d "$state_dir" && write_basic_state
+ return $ret
+fi
+
+move_to_original_branch
diff --git a/git-rebase.sh b/git-rebase.sh
index 8d7659a..2310638 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -412,6 +412,10 @@ elif test -n "$do_merge"
then
type=merge
state_dir="$merge_dir"
+elif test -n "$keep_empty"
+then
+ type=cherrypick
+ state_dir="$apply_dir"
else
type=am
state_dir="$apply_dir"
--
1.8.4-fc