Re: [PATCH] rebase [--onto O] A B: omit needless checkout
Ralf Wildenhues <Ralf.Wildenhues@gmx.de> writes:
Show 14 quoted lines
> Hello Junio,
>
> * Junio C Hamano wrote on Sat, Mar 15, 2008 at 09:42:11PM CET:
>> This teaches "git rebase [--onto O] A B" to omit an unnecessary checkout
>> of branch B before it goes on.
>
>> * Almost untested as I do not use this form very often. Feedback would
>> be good.
>
> Nice, and seems to do exactly what I meant. Actually the more important
> speedup gained from this change is that files that have changed in the
> non-common history of A but not in that of B, preserve their old time
> stamps, so the rebuild of my bugfix topic B after having built master
> is really quick now.
Actually, you would need this on top. Otherwise
$ git rebase master my-topic~3
would misbehave.
---
git-rebase.sh | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/git-rebase.sh b/git-rebase.sh
index 9273852..bd55ef6 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -320,7 +320,8 @@ case "$#" in
branch_name="$2"
switch_to="$2"
- if branch=$(git rev-parse --verify "refs/heads/$2" 2>/dev/null)
+ if git show-ref --verify --quiet -- "refs/heads/$2" &&
+ branch=$(git rev-parse --verify "refs/heads/$2" 2>/dev/null)
then
head_name="refs/heads/$2"
elif branch=$(git rev-parse --verify "$2" 2>/dev/null)