rebase: learn --keep-base and improvements on fast-forward behaviour
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v10 Latest9 patches 1 replyIn review
- v99 patches 4 repliesSuperseded
- v76 patches 1 replySuperseded
Earlier versions · 7
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v6 posting 2/2 | 6 patches | 1 reply | Superseded | |
| v6 posting 1/2 | 0 of 5 patches | 0 replies | Superseded | |
| v5 | 5 patches | 5 replies | Superseded | |
| v4 | 4 patches | 0 replies | Superseded | |
| v3 | 4 patches | 15 replies | Superseded | |
| v2 | 1 patch | 4 replies | Superseded | |
| v1 | 3 patches | 18 replies | Superseded |
Changes in v10 from the cover letter
* Remove unnecessary if-statement in patch 6/9
* Update commit message for patch 9/9 for clarity according to Philip's suggestions
Patches in v10 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/9 | t3431: add rebase --fork-point testst/ | +53 | 0 replies | |
| 2/9 | t3432: test rebase fast-forward behaviort/ | +72 | 0 replies | |
| 3/9 | t3432: distinguish "noop-same" v.s. "work-same" in "same head" testst/ | +48 | 0 replies | |
| 4/9 | t3432: test for --no-ff's interaction with fast-forwardt/ | +54 | 1 reply | |
| 5/9 | rebase: refactor can_fast_forward into goto towerbuiltin/ | +13 | 0 replies | |
| 6/9 | rebase: fast-forward --onto in more casesbuiltin/ t/ t/ +1 more | +23 | 0 replies | |
| 7/9 | rebase: fast-forward --fork-point in more casesbuiltin/ t/ | +17 | 0 replies | |
| 8/9 | rebase tests: test linear branch topologyt/ | +29 | 0 replies | |
| 9/9 | rebase: teach rebase --keep-baseDocumentation/ builtin/ contrib/ +3 more | +126 | 0 replies |
Reviews trailers per patch
None of the 9 patches has a Reviewed-by or Acked-by.
| Patch | Phillip Wood | Ævar Arnfjörð Bjarmason | Eric Sunshine | Junio C Hamano | Johannes Schindelin |
|---|---|---|---|---|---|
| 1/9 | |||||
| 2/9 | |||||
| 3/9 | |||||
| 4/9 | |||||
| 5/9 | |||||
| 6/9 | Helped-by | ||||
| 7/9 | Helped-by | ||||
| 8/9 | |||||
| 9/9 | Helped-by | Helped-by | Helped-by | Helped-by |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 5 reviewers.
Cover letter [PATCH v10 0/9] rebase: learn --keep-base and improvements on fast-forward behaviour
Thanks for your suggestions, Pratyush and Philip. I've incorporated both of them into this reroll.
Changes since v1:
* Squashed old set into one patch
* Fixed indentation style and dangling else
* Added more documentation after discussion with Ævar
Changes since v2:
* Add testing for rebase --fork-point behaviour
* Add testing for rebase fast-forward behaviour
* Make rebase --onto fast-forward in more cases
* Update documentation to include use-case
Changes since v3:
* Fix tests failing on bash 4.2
* Fix typo in t3431 comment
Changes since v4:
* Make rebase --fork-point fast-forward in more cases
Changes since v5:
* Fix graph illustrations so that the "branch off" is visually in the correct place
* Refactor if-else in can_fast_forward into one-level-deep ifs to increase clarity
Changes since v6:
* Remove redundant braces around if
* Update comment around can_fast_forward call
* Add completion for rebase
Changes since v7:
* Ævar sent in his WIP patchset
Changes since v8:
* Drop patches 9-13
* Fix some minor whitespace issues from v7
Changes since v9:
* Remove unnecessary if-statement in patch 6/9
* Update commit message for patch 9/9 for clarity according to Philip's suggestions
Denton Liu (6):
t3431: add rebase --fork-point tests
t3432: test rebase fast-forward behavior
rebase: refactor can_fast_forward into goto tower
rebase: fast-forward --onto in more cases
rebase: fast-forward --fork-point in more cases
rebase: teach rebase --keep-base
Ævar Arnfjörð Bjarmason (3):
t3432: distinguish "noop-same" v.s. "work-same" in "same head" tests
t3432: test for --no-ff's interaction with fast-forward rebase tests: test linear branch topology
Documentation/git-rebase.txt | 30 +++++- builtin/rebase.c | 84 ++++++++++++----- contrib/completion/git-completion.bash | 2 +- t/t3400-rebase.sh | 2 +- t/t3404-rebase-interactive.sh | 2 +- t/t3416-rebase-onto-threedots.sh | 57 +++++++++++ t/t3421-rebase-topology-linear.sh | 29 ++++++ t/t3431-rebase-fork-point.sh | 57 +++++++++++ t/t3432-rebase-fast-forward.sh | 125 +++++++++++++++++++++++++ 9 files changed, 360 insertions(+), 28 deletions(-) create mode 100755 t/t3431-rebase-fork-point.sh create mode 100755 t/t3432-rebase-fast-forward.sh
Range-diff against v9:
1: 03f769d410 = 1: 03f769d410 t3431: add rebase --fork-point tests
2: bc8998079d = 2: bc8998079d t3432: test rebase fast-forward behavior
3: 5c08e2b81f = 3: 5c08e2b81f t3432: distinguish "noop-same" v.s. "work-same" in "same head" tests
4: 48b4e41a17 = 4: 48b4e41a17 t3432: test for --no-ff's interaction with fast-forward
5: 9bd34b4a40 ! 5: 9acce7c911 rebase: refactor can_fast_forward into goto tower
@@ builtin/rebase.c: static int can_fast_forward(struct commit *onto, struct object
- res = 0;
+ goto done;
}
-- free_commit_list(merge_bases);
+
+ oidcpy(merge_base, &merge_bases->item->object.oid);
+ if (!oideq(merge_base, &onto->object.oid))
@@ builtin/rebase.c: static int can_fast_forward(struct commit *onto, struct object
+ res = 1;
+
+done:
-+ if (merge_bases)
-+ free_commit_list(merge_bases);
+ free_commit_list(merge_bases);
return res && is_linear_history(onto, head);
}
-
6: becb924232 = 6: 3f208421d6 rebase: fast-forward --onto in more cases
7: 4dab5847cb = 7: 126c20a95d rebase: fast-forward --fork-point in more cases
8: 4699a90993 = 8: bf6cc6a610 rebase tests: test linear branch topology
9: 6927aba617 ! 9: 6bc7423ac1 rebase: teach rebase --keep-base@@ Commit message
in order to preserve the merge base. This is useful when contributing a patch series to the Git mailing list, one often starts on top of the
- current 'master'. However, while developing the patches, 'master' is
- also developed further and it is sometimes not the best idea to keep
- rebasing on top of 'master', but to keep the base commit as-is.
+ current 'master'. While developing the patches, 'master' is also
+ developed further and it is sometimes not the best idea to keep rebasing
+ on top of 'master', but to keep the base commit as-is.
- Alternatively, a user wishing to test individual commits in a topic
- branch without changing anything may run
+ In addition to this, a user wishing to test individual commits in a
+ topic branch without changing anything may run
git rebase -x ./test.sh master... master
Signature · 1 line
2.23.0.248.g3a9dd8fb08