Skip to content

rebase: fix 2.11.0-era --fork-point regression

Ævar Arnfjörð Bjarmason git 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest2 patches 5 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/2rebase tests: test linear branch topologyt/t3421-rebase-topology-linear.sh+29 -02 replies
2/2rebase: don't rebase linear topology with --fork-pointbuiltin/rebase.c t/t3421-rebase-topology-linear.sh+19 -23 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/2] rebase: fix 2.11.0-era --fork-point regression
Quoted 34 lines · Jeff King
Quoted 23 lines · Ævar Arnfjörð Bjarmason
Quoted 3 lines

Those aren't using "--fork-point", so they're going to behave differently. The default with no arguments is basically "--fork-point @{u}".

Yeah, that's what it *should* do, but it's not equivalent to using --fork-point manually:

    # my series on top of origin/master
    $ git rev-parse HEAD
    2a67977d3f70fa7fc4bce89db24a1218dc9ab2aa
    # Junio's origin/master upstream
    $ git rev-parse @{u}
    35ee755a8c43bcb3c2786522d423f006c23d32df
    
    # Where my fork point is
    $ git merge-base --fork-point @{u}
    35ee755a8c43bcb3c2786522d423f006c23d32df
    
    # OK
    $ git rebase 35ee755a8c43bcb3c2786522d423f006c23d32df
    Current branch master is up to date.
Quoted 8 lines
    # OK
    $ git rebase $(git merge-base --fork-point @{u})
    Current branch master is up to date.
    
    # ???
    $ git rebase
    First, rewinding head to replay your work on top of it...
    [...]
Quoted 8 lines

Have you tried with "git rebase --fork-point"? It does more than just pass --fork-point to merge-base. It seems to also skip some of the "is up to date", I think due to 1e0dacdbdb (rebase: omit patch-identical commits with --fork-point, 2014-07-16).

I'm still not clear on whether my 4f21454b55 actually changed something menaingful here, or if it's simply that you're getting the fork-point behavior more consistently.

Yes it's a regression. Here's a fix for it. As seen in 2/2 how we got to the point of regressing was an interesting combination of factors.

Ævar Arnfjörð Bjarmason (2):
rebase tests: test linear branch topology
rebase: don't rebase linear topology with --fork-point

 builtin/rebase.c                  |  6 +++--
 t/t3421-rebase-topology-linear.sh | 44 +++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 2 deletions(-)
Signature · 1 line
2.21.0.rc0.258.g878e2cd30e