Performance improvement for git pull rebase and autostash

2017-07-10 Thread neuling
Sorry, the max characters per line restriction of the e-mail broke the 
workflow.

Here it is again. 

  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   ||   ff merge
  |||   || |
  |||   || |
  ||pop stash   ||  pop stash
  |||   || |
  |||   || |
success  abort   success success   abort  success



Regarda,
Mattias




Von:Mattias Neuling/DAKOSY/DE
An: git@vger.kernel.org
Datum:  10.07.2017 18:09
Betreff:Performance improvement for git pull rebase and autostash 



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

Performance improvement for git pull rebase and autostash

2017-07-10 Thread neuling
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 success



Regarda,
Mattias