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

[RFC/PATCH v2 1/8] rebase: split the cherry-pick stuff

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
May 29, 2013, 04:16 UTC
Message-ID
<1369801000-3705-2-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1369801000-3705-1-git-send-email-felipe.contreras@gmail.com>

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

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 .gitignore                |  1 +
 Makefile                  |  1 +
 git-rebase--am.sh         | 11 +----------
 git-rebase--cherrypick.sh | 34 ++++++++++++++++++++++++++++++++++
 git-rebase.sh             |  4 ++++
 5 files changed, 41 insertions(+), 10 deletions(-)
 create mode 100644 git-rebase--cherrypick.sh
diff --git a/.gitignore b/.gitignore
index 6669bf0..a171533 100644
--- a/.gitignore
+++ b/.gitignore
@@ -113,6 +113,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 0f931a2..800e42d 100644
--- a/Makefile
+++ b/Makefile
@@ -469,6 +469,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 f84854f..ee1b1b9 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..cbf80f9
--- /dev/null
+++ b/git-rebase--cherrypick.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# Copyright (c) 2010 Junio C Hamano.
+#
+
+case "$action" in
+continue)
+	git am --resolved --resolvemsg="$resolvemsg" &&
+	move_to_original_branch
+	exit
+	;;
+skip)
+	git am --skip --resolvemsg="$resolvemsg" &&
+	move_to_original_branch
+	exit
+	;;
+esac
+
+test -n "$rebase_root" && root_flag=--root
+
+# 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=$?
+
+if test 0 != $ret
+then
+	test -d "$state_dir" && write_basic_state
+	exit $ret
+fi
+
+move_to_original_branch
diff --git a/git-rebase.sh b/git-rebase.sh
index 2c692c3..f929ca3 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -379,6 +379,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.3.rc3.312.g47657de
Previous: Felipe ContrerasNext: Felipe Contreras
Message 2 of 21 in “rebase: new cherry-pick mode”
  1. 0/8 rebase: new cherry-pick modeFelipe Contreras, May 29, 2013
  2. 1/8 rebase: split the cherry-pick stuffFelipe Contreras, May 29, 2013
  3. 2/8 rebase: cherry-pick: fix mode storageFelipe Contreras, May 29, 2013
  4. Martin von ZweigbergkMay 29, 2013
  5. Felipe ContrerasMay 29, 2013
  6. 3/8 rebase: cherry-pick: fix sequence continuationFelipe Contreras, May 29, 2013
  7. Martin von ZweigbergkMay 29, 2013
  8. Felipe ContrerasMay 29, 2013
  9. Martin von ZweigbergkMay 29, 2013
  10. Felipe ContrerasMay 29, 2013
  11. Martin von ZweigbergkMay 29, 2013
  12. 4/8 rebase: cherry-pick: fix abort of cherry modeFelipe Contreras, May 29, 2013
  13. Martin von ZweigbergkMay 29, 2013
  14. Felipe ContrerasMay 29, 2013
  15. Stefano LattariniMay 29, 2013
  16. 5/8 rebase: cherry-pick: fix command invocationsFelipe Contreras, May 29, 2013
  17. 6/8 rebase: cherry-pick: fix status messagesFelipe Contreras, May 29, 2013
  18. 7/8 rebase: cherry-pick: automatically commit stageFelipe Contreras, May 29, 2013
  19. 8/8 rebase: use 'cherrypick' mode instead of 'am'Felipe Contreras, May 29, 2013
  20. Junio C HamanoMay 29, 2013
  21. Felipe ContrerasMay 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.