git-rebase has lots of options that are mutually incompatible. Even among
aspects of its behavior that is common to all rebase types, it has a number
of inconsistencies. This series tries to document, fix, and/or warn users
about many of these.
Changes since v4 (short branch-diff at the end):
- Fixed --strategy vs. --strategy-option (in patch 3, carries over to
context region in later commit)
v4 didn't get a lot of feedback (though it was picked up by Junio), so I'll
repeat the areas that would be of most note for reviewers since v3:
* I have left patch 9 in RFC state; since v3 it has an expanded the
commit message with an in-depth usability rationale for the
change.
* It sounded like Junio was slightly unclear about the intent of the
wording in Patch 1. Not sure if my answer (in email) was sufficient or
if there are wording improvements others might suggest.
* I'm assuming the --keep-empty and/or --empty={drop,halt,keep} (see
comments on patch 5 of v3) can be resolved in a later series.
Elijah Newren (9):
git-rebase.txt: document incompatible options
git-rebase.sh: update help messages a bit
t3422: new testcases for checking when incompatible options passed
git-rebase: error out when incompatible options passed
git-rebase.txt: address confusion between --no-ff vs --force-rebase
directory-rename-detection.txt: technical docs on abilities and
limitations
git-rebase.txt: document behavioral differences between modes
t3401: add directory rename testcases for rebase and am
git-rebase: make --allow-empty-message the default
Documentation/git-rebase.txt | 135 ++++++++++++++----
.../technical/directory-rename-detection.txt | 115 +++++++++++++++
git-rebase.sh | 43 +++++-
t/t3401-rebase-and-am-rename.sh | 105 ++++++++++++++
t/t3404-rebase-interactive.sh | 7 +-
t/t3405-rebase-malformed.sh | 11 +-
t/t3422-rebase-incompatible-options.sh | 88 ++++++++++++
7 files changed, 462 insertions(+), 42 deletions(-)
create mode 100644 Documentation/technical/directory-rename-detection.txt
create mode 100755 t/t3401-rebase-and-am-rename.sh
create mode 100755 t/t3422-rebase-incompatible-options.sh
1: 3f454ebc5e = 1: 3f454ebc5e git-rebase.txt: document incompatible options
2: 31a5a071a6 = 2: 31a5a071a6 git-rebase.sh: update help messages a bit
3: 5a2b5eec79 ! 3: bc3a5a3f95 t3422: new testcases for checking when
incompatible options passed
@@ -62,7 +62,7 @@
+
+ test_expect_failure "$opt incompatible with --strategy-option=ours" "
+ git checkout B^0 &&
-+ test_must_fail git rebase $opt --strategy=ours A
++ test_must_fail git rebase $opt --strategy-option=ours A
+ "
+
+ test_expect_failure "$opt incompatible with --interactive" "
4: 1e1c83724a ! 4: ca3b8327f7 git-rebase: error out when incompatible options
passed
@@ -104,7 +104,7 @@
- test_expect_failure "$opt incompatible with --strategy-option=ours" "
+ test_expect_success "$opt incompatible with --strategy-option=ours" "
git checkout B^0 &&
- test_must_fail git rebase $opt --strategy=ours A
+ test_must_fail git rebase $opt --strategy-option=ours A
"
- test_expect_failure "$opt incompatible with --interactive" "
5: 51023269d3 = 5: 6ac359359e git-rebase.txt: address confusion between
--no-ff vs --force-rebase
6: f017d45dd9 = 6: e5c5db9110 directory-rename-detection.txt: technical docs
on abilities and limitations
7: 0a359df404 = 7: e330437305 git-rebase.txt: document behavioral differences
between modes
8: beaadceaef = 8: f704f7eee8 t3401: add directory rename testcases for
rebase and am
9: 431b2c36d5 = 9: 436f597487 git-rebase: make --allow-empty-message the
default
--
2.18.0.9.g431b2c36d5