Thread (2 messages) flat view 2 messages, 2 authors, 2016-06-15

Re: rebase flattens history when it shouldn't?

From: Sergei Organov <hidden>
Date: 2016-06-15 23:02:01

Jonathan Nieder [off-list ref] writes:
quoted hunk
Hi Sergei,

Sergei Organov wrote:
quoted
     --C--
    /     \
   /   ----M topic,HEAD
  /   /
 A---B master

shouldn't

$ git rebase master

be a no-op here?
[...]
quoted
I'd expect --force-rebase to be required for this to happen:

-f, --force-rebase
    Force the rebase even if the current branch is a descendant of the
    commit you are rebasing onto. Normally non-interactive rebase will
    exit with the message "Current branch is up to date" in such a
    situation.
[...]
quoted
Do you think it's worth fixing?
Thanks for a clear report.

After a successful 'git rebase master', the current branch is always a
linear string of patches on top of 'master'.  The "already up to date"
behavior when -f is not passed is in a certain sense an optimization
--- it is about git noticing that 'git rebase' wouldn't have anything
to do (except for touching timestamps) and therefore doing nothing.

So I don't think requiring -f for this case would be an improvement.
What actually bothers me is the unfortunate consequence that "git pull"
is not always a no-op when nothing was changed at the origin since the
last "git pull". THIS is really surprising and probably should better be
fixed. Requiring -f is just one (obvious) way to fix this.
I do agree that the documentation is misleading.  Any ideas for
wording that could make it clearer?
I can't suggest anything as I don't see why -f is there in the first
place. What are use cases?

-- 
Sergey.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help