Re: [PATCH 5/5] rebase: fix cherry-pick invocations
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:57:28
Felipe Contreras [off-list ref] writes:
quoted hunk
So that all the tests pass. Signed-off-by: Felipe Contreras <redacted> --- git-rebase--cherry.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)diff --git a/git-rebase--cherry.sh b/git-rebase--cherry.sh index ca78b1b..c3a2ac9 100644 --- a/git-rebase--cherry.sh +++ b/git-rebase--cherry.sh@@ -23,11 +23,26 @@ test -n "$rebase_root" && root_flag=--root mkdir "$state_dir" || die "Could not create temporary $state_dir" : > "$state_dir"/cherry || die "Could not mark as cherry" +if test -n "$rebase_root" +then + revisions="$onto...$orig_head" +else + revisions="$upstream...$orig_head" +fi
"So that all the tests pass" needs a bit more explanation to say for cherry-pick codepath why and how two-dot range fails and why and how three-dot variant with --right-only fixes it. What are the problematic cases?
# 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" +if test -n "$keep_empty" +then + extra="--allow-empty" +else + extra="--skip-empty --cherry-pick" +fi +test -n "$GIT_QUIET" && extra="$extra -q" +test -z "$force_rebase" && extra="$extra --ff" +git cherry-pick --no-merges --right-only --topo-order --do-walk --copy-notes $extra "$revisions" ret=$? if test 0 != $ret