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: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ad562a8172
commit
c54b7817f4
@ -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
|
|||||||
-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
|
|||||||
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
|
|||||||
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' '
|
|||||||
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' '
|
|||||||
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 &&
|
||||||
|
Loading…
Reference in New Issue
Block a user