Merge branch 'jc/checkout-merge-base'
* jc/checkout-merge-base: rebase -i: teach --onto A...B syntax rebase: fix --onto A...B parsing and add tests "rebase --onto A...B" replays history on the merge base between A and B "checkout A...B" switches to the merge base between A and B
This commit is contained in:
@ -495,6 +495,25 @@ get_saved_options () {
|
||||
test -f "$DOTEST"/rebase-root && REBASE_ROOT=t
|
||||
}
|
||||
|
||||
LF='
|
||||
'
|
||||
parse_onto () {
|
||||
case "$1" in
|
||||
*...*)
|
||||
if left=${1%...*} right=${1#*...} &&
|
||||
onto=$(git merge-base --all ${left:-HEAD} ${right:-HEAD})
|
||||
then
|
||||
case "$onto" in
|
||||
?*"$LF"?* | '')
|
||||
exit 1 ;;
|
||||
esac
|
||||
echo "$onto"
|
||||
exit 0
|
||||
fi
|
||||
esac
|
||||
git rev-parse --verify "$1^0"
|
||||
}
|
||||
|
||||
while test $# != 0
|
||||
do
|
||||
case "$1" in
|
||||
@ -602,7 +621,7 @@ first and then run 'git rebase --continue' again."
|
||||
;;
|
||||
--onto)
|
||||
shift
|
||||
ONTO=$(git rev-parse --verify "$1") ||
|
||||
ONTO=$(parse_onto "$1") ||
|
||||
die "Does not point to a valid commit: $1"
|
||||
;;
|
||||
--)
|
||||
|
Reference in New Issue
Block a user