This command redoes merges. It's useful if you rebase a branch that
contains merges and you want to preserve these merges. You can also use
it to add new merges.
---
git-rebase--interactive.sh | 25 +++++++++++++++++++++++++
t/t3404-rebase-interactive.sh | 3 +++
2 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 7dac51b..18cdf3d 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -362,6 +362,29 @@ do_next () {
git rev-parse --verify HEAD > "$MARKS"/$mark || \
die "HEAD is invalid"
;;
+ merge|m)
+ comment_for_reflog merge
+
+ if ! git rev-parse --verify $sha1
+ then
+ die "Invalid reference merge '$sha1' in $command $sha1 $rest"
+ fi
+
+ new_parents=
+ for p in $rest
+ do
+ tmp=$(mark_to_sha1 $p) || \
+ tmp=$(git rev-parse --verify $p) ||
+ die "Invalid parent '$sha1' in $command $sha1 $rest"
+ new_parents="$new_parents $tmp"
+ done
+ new_parents="${new_parents# }"
+ test -n "$new_parents" || \
+ die "You forgot to give the parents for the merge"
+
+ mark_action_done
+ redo_merge $sha1 $new_parents
+ ;;
reset|r)
comment_for_reflog reset
@@ -589,6 +612,8 @@ do
# squash = use commit, but meld into previous commit
# mark #NUM = mark the current HEAD for later reference
# reset #NUM|commit = reset HEAD to a previous set mark or a commit
+# merge commit-M #NUM|commit-P ... = redo merge commit-M with the
+# current HEAD and the parents marked with #NUM or the commit-P
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 521206f..892fd5d 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -88,6 +88,9 @@ for line in $FAKE_LINES; do
reset*)
echo "reset ${line#reset}"
echo "reset ${line#reset}" >> "$1";;
+ merge*)
+ echo "merge ${line#merge}" | tr / ' '
+ echo "merge ${line#merge}" | tr / ' ' >> "$1";;
*)
echo sed -n "${line}s/^pick/$action/p"
sed -n "${line}p" < "$1".tmp
--
1.5.4.5
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html