path: root/
diff options
authorNeil Horman <>2012-04-20 14:36:17 (GMT)
committerJunio C Hamano <>2012-04-24 22:24:14 (GMT)
commit90e1818f9a06015159712e204dd90868e0a6c421 (patch)
tree7f67e462df570c25739263c3f181fff63c129133 /
parentbedfe86ce6ccee90e2cbecbf8d72e06219a2768a (diff)
git-rebase: add keep_empty flag
Add a command line switch to git-rebase to allow a user the ability to specify that they want to keep any commits in a series that are empty. When git-rebase's type is am, then this option will automatically keep any commit that has a tree object identical to its parent. This patch changes the default behavior of interactive rebases as well. With this patch, git-rebase -i will produce a revision set passed to git-revision-editor, in which empty commits are commented out. Empty commits may be kept manually by uncommenting them. If the new --keep-empty option is used in an interactive rebase the empty commits will automatically all be uncommented in the editor. Signed-off-by: Neil Horman <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to '')
1 files changed, 14 insertions, 5 deletions
diff --git a/ b/
index c815a24..04d8941 100644
--- a/
+++ b/
@@ -20,11 +20,20 @@ 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" &&
+if test -n "$keep_empty"
+ # 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"
+ 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"
+fi && move_to_original_branch
test 0 != $ret -a -d "$state_dir" && write_basic_state
exit $ret