Performance improvement for git pull rebase and autostash
- From
- neuling@dakosy.de <neuling@dakosy.de>
- Date
- Jul 10, 2017, 16:09 UTC
- Message-ID
- <OF9C7EC4BE.7EA71FCD-ONC1258159.003A60B3-C1258159.0058C18F@dakosy.de>
Hi,
I have some suggestions to improve performance of 'git pull --rebase'.
1. If I have no new local commits "git pull --rebase" will do a fast forward merge. But if I have changes to local files I have to stash them also if they are not affected by the new commits from origin. I think in that case git should not reject changes to every local file and has to use the fast forward merge validation instead.
2. If I have no changes to local files and I use 'git pull --rebase --autostash' no stashing should take place.
The improved workflow would look like as follows.
git pull rebase = true or preserve
|
|
|
|
|
check if local branch has no new commits
|
no | yes
---------------------+---------------------
| |
| |
| |
rebase validation ff merge validation for
for local changes conflicting local changes
| |
no changes| changes no conflicts | has conflicts
--------+--------- ------------+----------
| | | |
| | | |
| | | |
do rebase use autostash? do ff merge use autostash?
| | | |
| no | yes | no | yes
| --------+--------- | ---------+---------
| | | | | |
| | | | | |
| conflict error stash changes | conflict error stash
changes
| | | | | |
| | | | | |
| | do rebase | | do ff
merge
| | | | | |
| | | | | |
| | pop stash | | pop
stash
| | | | | |
| | | | | |
success abort success success abort successRegarda, Mattias