提交 c54b7817 编写于 作者: J Johannes Schindelin 提交者: Junio C Hamano

rebase -i: several cleanups

Support "--verbose" in addition to "-v", show short names in the list
comment, clean up if there is nothing to do, and add several "test_ticks"
in the test script.
Signed-off-by: NJohannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 ad562a81
...@@ -60,6 +60,11 @@ die_with_patch () { ...@@ -60,6 +60,11 @@ die_with_patch () {
die "$2" die "$2"
} }
die_abort () {
rm -rf "$DOTEST"
die "$1"
}
pick_one () { pick_one () {
case "$1" in -n) sha1=$2 ;; *) sha1=$1 ;; esac case "$1" in -n) sha1=$2 ;; *) sha1=$1 ;; esac
git rev-parse --verify $sha1 || die "Invalid commit name: $sha1" git rev-parse --verify $sha1 || die "Invalid commit name: $sha1"
...@@ -212,7 +217,7 @@ do ...@@ -212,7 +217,7 @@ do
-C*) -C*)
die "Interactive rebase uses merge, so $1 does not make sense" die "Interactive rebase uses merge, so $1 does not make sense"
;; ;;
-v) -v|--verbose)
VERBOSE=t VERBOSE=t
;; ;;
-i|--interactive) -i|--interactive)
...@@ -264,8 +269,11 @@ do ...@@ -264,8 +269,11 @@ do
echo $ONTO > "$DOTEST"/onto echo $ONTO > "$DOTEST"/onto
test t = "$VERBOSE" && : > "$DOTEST"/verbose test t = "$VERBOSE" && : > "$DOTEST"/verbose
SHORTUPSTREAM=$(git rev-parse --short $UPSTREAM)
SHORTHEAD=$(git rev-parse --short $HEAD)
SHORTONTO=$(git rev-parse --short $ONTO)
cat > "$TODO" << EOF cat > "$TODO" << EOF
# Rebasing $UPSTREAM..$HEAD onto $ONTO # Rebasing $SHORTUPSTREAM..$SHORTHEAD onto $SHORTONTO
# #
# Commands: # Commands:
# pick = use commit # pick = use commit
...@@ -277,13 +285,16 @@ EOF ...@@ -277,13 +285,16 @@ EOF
sed "s/^/pick /" >> "$TODO" sed "s/^/pick /" >> "$TODO"
test -z "$(grep -ve '^$' -e '^#' < $TODO)" && test -z "$(grep -ve '^$' -e '^#' < $TODO)" &&
die "Nothing to do" die_abort "Nothing to do"
cp "$TODO" "$TODO".backup cp "$TODO" "$TODO".backup
${VISUAL:-${EDITOR:-vi}} "$TODO" || ${VISUAL:-${EDITOR:-vi}} "$TODO" ||
die "Could not execute editor" die "Could not execute editor"
git reset --hard $ONTO && do_rest test -z "$(grep -ve '^$' -e '^#' < $TODO)" &&
die_abort "Nothing to do"
git checkout $ONTO && do_rest
esac esac
shift shift
done done
...@@ -140,6 +140,7 @@ test_expect_success 'abort' ' ...@@ -140,6 +140,7 @@ test_expect_success 'abort' '
test_expect_success 'retain authorship' ' test_expect_success 'retain authorship' '
echo A > file7 && echo A > file7 &&
git add file7 && git add file7 &&
test_tick &&
GIT_AUTHOR_NAME="Twerp Snog" git commit -m "different author" && GIT_AUTHOR_NAME="Twerp Snog" git commit -m "different author" &&
git tag twerp && git tag twerp &&
git rebase -i --onto master HEAD^ && git rebase -i --onto master HEAD^ &&
...@@ -149,6 +150,7 @@ test_expect_success 'retain authorship' ' ...@@ -149,6 +150,7 @@ test_expect_success 'retain authorship' '
test_expect_success 'squash' ' test_expect_success 'squash' '
git reset --hard twerp && git reset --hard twerp &&
echo B > file7 && echo B > file7 &&
test_tick &&
GIT_AUTHOR_NAME="Nitfol" git commit -m "nitfol" file7 && GIT_AUTHOR_NAME="Nitfol" git commit -m "nitfol" file7 &&
echo "******************************" && echo "******************************" &&
FAKE_LINES="1 squash 2" git rebase -i --onto master HEAD~2 && FAKE_LINES="1 squash 2" git rebase -i --onto master HEAD~2 &&
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册