git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v6 13/28] rebase: split the cherry-pick stuff

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Aug 30, 2013, 05:56 UTC
Message-ID
<1377842182-18724-14-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1377842182-18724-1-git-send-email-felipe.contreras@gmail.com>

They do something completely different from 'git am', it belongs in a different file.

No functional changes.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 .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
Previous: Felipe ContrerasNext: Felipe Contreras
Message 14 of 29 in “Massive improvents to rebase and cherry-pick”
  1. 00/28 Massive improvents to rebase and cherry-pickFelipe Contreras, Aug 30, 2013
  2. 01/28 cherry-pick: don't barf when there's nothing to doFelipe Contreras, Aug 30, 2013
  3. 02/28 cherry-pick: add --skip-empty optionFelipe Contreras, Aug 30, 2013
  4. 03/28 revert/cherry-pick: add --quiet optionFelipe Contreras, Aug 30, 2013
  5. 04/28 revert/cherry-pick: add --skip optionFelipe Contreras, Aug 30, 2013
  6. 05/28 builtin: add rewrite helperFelipe Contreras, Aug 30, 2013
  7. 06/28 cherry-pick: store rewritten commitsFelipe Contreras, Aug 30, 2013
  8. 07/28 cherry-pick: don't store skipped commitFelipe Contreras, Aug 30, 2013
  9. 08/28 builtin: move run_rewrite_hook() to rewrite.cFelipe Contreras, Aug 30, 2013
  10. 09/28 builtin: rewrite: add copy_rewrite_notes()Felipe Contreras, Aug 30, 2013
  11. 10/28 cherry-pick: add --action-name optionFelipe Contreras, Aug 30, 2013
  12. 11/28 cherry-pick: copy notes and run hooksFelipe Contreras, Aug 30, 2013
  13. 12/28 cherry-pick: remember rerere-autoupdateFelipe Contreras, Aug 30, 2013
  14. 13/28 rebase: split the cherry-pick stuffFelipe Contreras, Aug 30, 2013
  15. 14/28 rebase: cherry-pick: fix mode storageFelipe Contreras, Aug 30, 2013
  16. 15/28 rebase: cherry-pick: fix sequence continuationFelipe Contreras, Aug 30, 2013
  17. 16/28 rebase: cherry-pick: fix abort of cherry modeFelipe Contreras, Aug 30, 2013
  18. 17/28 rebase: cherry-pick: fix command invocationsFelipe Contreras, Aug 30, 2013
  19. 18/28 rebase: cherry-pick: fix status messagesFelipe Contreras, Aug 30, 2013
  20. 19/28 rebase: cherry-pick: automatically commit stageFelipe Contreras, Aug 30, 2013
  21. 20/28 rebase: cherry-pick: set correct action-nameFelipe Contreras, Aug 30, 2013
  22. 21/28 rebase: trivial cleanupFelipe Contreras, Aug 30, 2013
  23. 22/28 t: rebase-autostash: fix setupFelipe Contreras, Aug 30, 2013
  24. 23/28 sequencer: store progress informationFelipe Contreras, Aug 30, 2013
  25. 24/28 prompt: parse cherry-pick rebase modeFelipe Contreras, Aug 30, 2013
  26. 25/28 rebase: use 'cherrypick' mode instead of 'am'Felipe Contreras, Aug 30, 2013
  27. 26/28 rebase: cherry-pick: add merge optionsFelipe Contreras, Aug 30, 2013
  28. 27/28 rebase: remove merge modeFelipe Contreras, Aug 30, 2013
  29. 28/28 rebase: cherry-pick: add copyrightFelipe Contreras, Aug 30, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.