From: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Eric Wong <e@80x24.org>,
Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: [PATCH v2 0/7] Drop support for git rebase --preserve-merges
Date: Wed, 01 Sep 2021 11:57:07 +0000 [thread overview]
Message-ID: <pull.195.v2.git.1630497435.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.195.git.1574542242.gitgitgadget@gmail.com>
In 427c3bd28ab (rebase: deprecate --preserve-merges, 2019-03-11) (which was
included in v2.22.0), we officially deprecated the --preserve-merges
backend. Over two years later, it is time to drop that backend, and here is
a patch series that does just that.
Changes since v1:
* Rebased onto v2.33.0
Johannes Schindelin (7):
t5520: do not use `pull.rebase=preserve`
remote: warn about unhandled branch.<name>.rebase values
tests: stop testing `git rebase --preserve-merges`
pull: remove support for `--rebase=preserve`
rebase: drop support for `--preserve-merges`
git-svn: drop support for `--preserve-merges`
rebase: drop the internal `rebase--interactive` command
.github/workflows/main.yml | 1 -
.gitignore | 1 -
Documentation/config/branch.txt | 4 -
Documentation/config/pull.txt | 4 -
Documentation/git-pull.txt | 6 +-
Documentation/git-rebase.txt | 51 -
Documentation/git-svn.txt | 1 -
Makefile | 2 -
builtin/pull.c | 9 +-
builtin/rebase.c | 318 +------
builtin/remote.c | 3 +
contrib/completion/git-completion.bash | 2 +-
git-rebase--preserve-merges.sh | 1057 ---------------------
git-svn.perl | 1 -
git.c | 1 -
rebase.c | 2 -
rebase.h | 1 -
t/t3404-rebase-interactive.sh | 76 --
t/t3408-rebase-multi-line.sh | 10 -
t/t3409-rebase-preserve-merges.sh | 130 ---
t/t3410-rebase-preserve-dropped-merges.sh | 90 --
t/t3411-rebase-preserve-around-merges.sh | 80 --
t/t3412-rebase-root.sh | 37 -
t/t3414-rebase-preserve-onto.sh | 85 --
t/t3418-rebase-continue.sh | 15 -
t/t3421-rebase-topology-linear.sh | 19 -
t/t3422-rebase-incompatible-options.sh | 11 -
t/t3425-rebase-topology-merges.sh | 151 ---
t/t3427-rebase-subtree.sh | 19 -
t/t5520-pull.sh | 24 +-
t/t7505-prepare-commit-msg-hook.sh | 1 -
t/t7517-per-repo-email.sh | 13 -
t/test-lib.sh | 4 -
33 files changed, 17 insertions(+), 2212 deletions(-)
delete mode 100644 git-rebase--preserve-merges.sh
delete mode 100755 t/t3409-rebase-preserve-merges.sh
delete mode 100755 t/t3410-rebase-preserve-dropped-merges.sh
delete mode 100755 t/t3411-rebase-preserve-around-merges.sh
delete mode 100755 t/t3414-rebase-preserve-onto.sh
base-commit: 225bc32a989d7a22fa6addafd4ce7dcd04675dbf
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-195%2Fdscho%2Fdrop-rebase-p-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-195/dscho/drop-rebase-p-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/195
Range-diff vs v1:
1: 662e16dbc12 ! 1: 8da29d539fc t5520: do not use `pull.rebase=preserve`
@@ t/t5520-pull.sh: test_expect_success '--rebase=false create a new merge commit'
- test_config pull.rebase preserve &&
+ test_config pull.rebase merges &&
git pull --rebase=true . copy &&
- test "$(git rev-parse HEAD^^)" = "$(git rev-parse copy)" &&
- test file3 = "$(git show HEAD:file3.t)"
+ test_cmp_rev HEAD^^ copy &&
+ echo file3 >expect &&
@@ t/t5520-pull.sh: test_expect_success '--rebase=invalid fails' '
- ! git pull --rebase=invalid . copy
+ test_must_fail git pull --rebase=invalid . copy
'
-test_expect_success '--rebase overrides pull.rebase=preserve and flattens keep-merge' '
@@ t/t5520-pull.sh: test_expect_success '--rebase=invalid fails' '
- test_config pull.rebase preserve &&
+ test_config pull.rebase merges &&
git pull --rebase . copy &&
- test "$(git rev-parse HEAD^^)" = "$(git rev-parse copy)" &&
- test file3 = "$(git show HEAD:file3.t)"
+ test_cmp_rev HEAD^^ copy &&
+ echo file3 >expect &&
2: fb531064b35 < -: ----------- remote: warn about unhandled branch.<name>.rebase values
-: ----------- > 2: acda0f59947 remote: warn about unhandled branch.<name>.rebase values
3: b614336f3df ! 3: cdb9fae4b93 tests: stop testing `git rebase --preserve-merges`
@@ Commit message
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
- ## azure-pipelines.yml ##
-@@ azure-pipelines.yml: jobs:
- HOME: $(Build.SourcesDirectory)
- MSYSTEM: MINGW64
- NO_SVN_TESTS: 1
-- GIT_TEST_SKIP_REBASE_P: 1
- - powershell: |
- if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
- cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
-@@ azure-pipelines.yml: jobs:
- HOME: $(Build.SourcesDirectory)
- MSYSTEM: MINGW64
- NO_SVN_TESTS: 1
-- GIT_TEST_SKIP_REBASE_P: 1
- - powershell: |
- if ("$GITFILESHAREPWD" -ne "" -and "$GITFILESHAREPWD" -ne "`$`(gitfileshare.pwd)") {
- cmd /c rmdir "$(Build.SourcesDirectory)\test-cache"
+ ## .github/workflows/main.yml ##
+@@ .github/workflows/main.yml: jobs:
+ shell: bash
+ env:
+ NO_SVN_TESTS: 1
+- GIT_TEST_SKIP_REBASE_P: 1
+ run: ci/run-test-slice.sh ${{matrix.nr}} 10
+ - name: ci/print-test-failures.sh
+ if: failure()
## t/t3404-rebase-interactive.sh ##
@@ t/t3404-rebase-interactive.sh: test_expect_success 'retain authorship when squashing' '
@@ t/t3404-rebase-interactive.sh: test_expect_success 'retain authorship when squas
-'
-
-test_expect_success REBASE_P 'preserve merges with -p' '
-- git checkout -b to-be-preserved master^ &&
+- git checkout -b to-be-preserved primary^ &&
- : > unrelated-file &&
- git add unrelated-file &&
- test_tick &&
- git commit -m "unrelated" &&
-- git checkout -b another-branch master &&
+- git checkout -b another-branch primary &&
- echo B > file1 &&
- test_tick &&
- git commit -m J file1 &&
@@ t/t3404-rebase-interactive.sh: test_expect_success 'retain authorship when squas
- git commit -m M file1 &&
- git checkout -b to-be-rebased &&
- test_tick &&
-- git rebase -i -p --onto branch1 master &&
+- git rebase -i -p --onto branch1 primary &&
- git update-index --refresh &&
- git diff-files --quiet &&
- git diff-index --quiet --cached HEAD -- &&
-- test $(git rev-parse HEAD~6) = $(git rev-parse branch1) &&
-- test $(git rev-parse HEAD~4^2) = $(git rev-parse to-be-preserved) &&
-- test $(git rev-parse HEAD^^2^) = $(git rev-parse HEAD^^^) &&
+- test_cmp_rev HEAD~6 branch1 &&
+- test_cmp_rev HEAD~4^2 to-be-preserved &&
+- test_cmp_rev HEAD^^2^ HEAD^^^ &&
- test $(git show HEAD~5:file1) = B &&
- test $(git show HEAD~3:file1) = C &&
- test $(git show HEAD:file1) = E &&
@@ t/t3409-rebase-preserve-merges.sh (deleted)
-
-Run "git rebase -p" and check that merges are properly carried along
-'
+-GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+-export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+-
-. ./test-lib.sh
-
-if ! test_have_prereq REBASE_P; then
@@ t/t3409-rebase-preserve-merges.sh (deleted)
-
-# Clone 2 (conflicting merge):
-#
--# A1--A2--B3 <-- origin/master
+-# A1--A2--B3 <-- origin/main
-# \ \
-# B1------M <-- topic
-# \
@@ t/t3409-rebase-preserve-merges.sh (deleted)
-#
-# Clone 3 (no-ff merge):
-#
--# A1--A2--B3 <-- origin/master
+-# A1--A2--B3 <-- origin/main
-# \
-# B1------M <-- topic
-# \ /
@@ t/t3409-rebase-preserve-merges.sh (deleted)
- echo Second > B &&
- git add B &&
- git commit -m "Add B1" &&
-- git checkout -f master &&
+- git checkout -f main &&
- echo Third >> A &&
- git commit -a -m "Modify A2" &&
- echo Fifth > B &&
@@ t/t3409-rebase-preserve-merges.sh (deleted)
- (
- cd clone2 &&
- git checkout -b topic origin/topic &&
-- test_must_fail git merge origin/master &&
+- test_must_fail git merge origin/main &&
- echo Resolved >B &&
- git add B &&
-- git commit -m "Merge origin/master into topic"
+- git commit -m "Merge origin/main into topic"
- ) &&
-
- git clone ./. clone3 &&
@@ t/t3412-rebase-root.sh: test_expect_success 'pre-rebase got correct input (4)' '
-test_expect_success REBASE_P 'rebase -i -p with linear history' '
- git checkout -b work5 other &&
-- git rebase -i -p --root --onto master &&
+- git rebase -i -p --root --onto main &&
- git log --pretty=tformat:"%s" > rebased5 &&
- test_cmp expect rebased5
-'
@@ t/t3412-rebase-root.sh: commit work6~4
-test_expect_success REBASE_P 'rebase -i -p with merge' '
- git checkout -b work6 other &&
-- git rebase -i -p --root --onto master &&
+- git rebase -i -p --root --onto main &&
- log_with_names work6 > rebased6 &&
- test_cmp expect-side rebased6
-'
@@ t/t3412-rebase-root.sh: commit work7~5
-test_expect_success REBASE_P 'rebase -i -p with two roots' '
- git checkout -b work7 other &&
-- git rebase -i -p --root --onto master &&
+- git rebase -i -p --root --onto main &&
- log_with_names work7 > rebased7 &&
- test_cmp expect-third rebased7
-'
@@ t/t3412-rebase-root.sh: commit conflict3~6
-test_expect_success REBASE_P 'rebase -i -p --root with conflict (first part)' '
- git checkout -b conflict3 other &&
-- test_must_fail git rebase -i -p --root --onto master &&
+- test_must_fail git rebase -i -p --root --onto main &&
- git ls-files -u | grep "B$"
-'
-
@@ t/t3418-rebase-continue.sh: test_rerere_autoupdate
## t/t3421-rebase-topology-linear.sh ##
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase success -p
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
test_expect_success 'setup branches and remote tracking' '
git tag -l >tags &&
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase success -p
test_run_rebase () {
result=$1
-@@ t/t3421-rebase-topology-linear.sh: test_run_rebase success ''
+@@ t/t3421-rebase-topology-linear.sh: test_run_rebase success --apply
test_run_rebase success --fork-point
test_run_rebase success -m
test_run_rebase success -i
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase success ''
test_run_rebase () {
result=$1
-@@ t/t3421-rebase-topology-linear.sh: test_run_rebase success ''
+@@ t/t3421-rebase-topology-linear.sh: test_run_rebase success --apply
test_run_rebase success --fork-point
test_run_rebase success -m
test_run_rebase success -i
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase success ''
test_run_rebase () {
result=$1
-@@ t/t3421-rebase-topology-linear.sh: test_run_rebase success ''
+@@ t/t3421-rebase-topology-linear.sh: test_run_rebase success --apply
test_run_rebase success --fork-point
test_run_rebase success -m
test_run_rebase success -i
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase success ''
# f
# /
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase success -p
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
test_run_rebase () {
result=$1
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase success -p
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
test_run_rebase () {
result=$1
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase success -p
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
test_run_rebase () {
result=$1
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase success -p
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
# a---b---c---j!
# \
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase failure --apply
test_run_rebase success -m
test_run_rebase success -i
--test_have_prereq !REBASE_P || test_run_rebase success -p
+-test_have_prereq !REBASE_P || test_run_rebase failure -p
test_run_rebase () {
result=$1
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ }
test_run_rebase success -m
test_run_rebase success -i
--test_have_prereq !REBASE_P || test_run_rebase failure -p
+-test_have_prereq !REBASE_P || test_run_rebase success -p
test_run_rebase () {
result=$1
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ }
test_run_rebase success -m
test_run_rebase success -i
--test_have_prereq !REBASE_P || test_run_rebase failure -p
+-test_have_prereq !REBASE_P || test_run_rebase success -p
test_run_rebase success --rebase-merges
# m
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase success -p
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
test_run_rebase () {
result=$1
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase failure -p
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
test_run_rebase () {
result=$1
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase success -p
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
test_run_rebase () {
result=$1
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase failure -p
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
test_run_rebase () {
result=$1
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
- test_run_rebase success ''
+ test_run_rebase success --apply
test_run_rebase success -m
test_run_rebase success -i
-test_have_prereq !REBASE_P || test_run_rebase failure -p
@@ t/t3421-rebase-topology-linear.sh: test_run_rebase () {
test_done
## t/t3422-rebase-incompatible-options.sh ##
-@@ t/t3422-rebase-incompatible-options.sh: test_rebase_am_only --ignore-whitespace
- test_rebase_am_only --committer-date-is-author-date
+@@ t/t3422-rebase-incompatible-options.sh: test_rebase_am_only () {
+ test_rebase_am_only --whitespace=fix
test_rebase_am_only -C4
-test_expect_success REBASE_P '--preserve-merges incompatible with --signoff' '
@@ t/t3422-rebase-incompatible-options.sh: test_rebase_am_only --ignore-whitespace
test_done
## t/t3425-rebase-topology-merges.sh ##
-@@ t/t3425-rebase-topology-merges.sh: test_run_rebase success 'd n o e' ''
+@@ t/t3425-rebase-topology-merges.sh: test_run_rebase success 'd n o e' --apply
test_run_rebase success 'd n o e' -m
test_run_rebase success 'd n o e' -i
@@ t/t3427-rebase-subtree.sh: test_expect_success 'setup' '
git commit -m "Empty commit" --allow-empty
'
--# FAILURE: Does not preserve master4.
+-# FAILURE: Does not preserve topic_4.
-test_expect_failure REBASE_P 'Rebase -Xsubtree --preserve-merges --onto commit' '
- reset_rebase &&
- git checkout -b rebase-preserve-merges to-rebase &&
-- git rebase -Xsubtree=files_subtree --preserve-merges --onto files-master master &&
-- verbose test "$(commit_message HEAD~)" = "master4" &&
-- verbose test "$(commit_message HEAD)" = "files_subtree/master5"
+- git rebase -Xsubtree=files_subtree --preserve-merges --onto files-main main &&
+- verbose test "$(commit_message HEAD~)" = "topic_4" &&
+- verbose test "$(commit_message HEAD)" = "files_subtree/topic_5"
-'
-
--# FAILURE: Does not preserve master4.
+-# FAILURE: Does not preserve topic_4.
-test_expect_failure REBASE_P 'Rebase -Xsubtree --keep-empty --preserve-merges --onto commit' '
- reset_rebase &&
- git checkout -b rebase-keep-empty to-rebase &&
-- git rebase -Xsubtree=files_subtree --keep-empty --preserve-merges --onto files-master master &&
-- verbose test "$(commit_message HEAD~2)" = "master4" &&
-- verbose test "$(commit_message HEAD~)" = "files_subtree/master5" &&
+- git rebase -Xsubtree=files_subtree --keep-empty --preserve-merges --onto files-main main &&
+- verbose test "$(commit_message HEAD~2)" = "topic_4" &&
+- verbose test "$(commit_message HEAD~)" = "files_subtree/topic_5" &&
- verbose test "$(commit_message HEAD)" = "Empty commit"
-'
-
- test_expect_success 'Rebase -Xsubtree --keep-empty --onto commit' '
+ test_expect_success 'Rebase -Xsubtree --empty=ask --onto commit' '
reset_rebase &&
git checkout -b rebase-onto to-rebase &&
## t/t5520-pull.sh ##
@@ t/t5520-pull.sh: test_expect_success 'pull.rebase=1 is treated as true and flattens keep-merge' '
- test file3 = "$(git show HEAD:file3.t)"
+ test_cmp expect actual
'
-test_expect_success REBASE_P \
@@ t/t5520-pull.sh: test_expect_success 'pull.rebase=1 is treated as true and flatt
- git reset --hard before-preserve-rebase &&
- test_config pull.rebase preserve &&
- git pull . copy &&
-- test "$(git rev-parse HEAD^^)" = "$(git rev-parse copy)" &&
-- test "$(git rev-parse HEAD^2)" = "$(git rev-parse keep-merge)"
+- test_cmp_rev HEAD^^ copy &&
+- test_cmp_rev HEAD^2 keep-merge
-'
-
test_expect_success 'pull.rebase=interactive' '
write_script "$TRASH_DIRECTORY/fake-editor" <<-\EOF &&
echo I was here >fake.out &&
@@ t/t5520-pull.sh: test_expect_success '--rebase=true rebases and flattens keep-merge' '
- test file3 = "$(git show HEAD:file3.t)"
+ test_cmp expect actual
'
-test_expect_success REBASE_P \
@@ t/t5520-pull.sh: test_expect_success '--rebase=true rebases and flattens keep-me
- git reset --hard before-preserve-rebase &&
- test_config pull.rebase true &&
- git pull --rebase=preserve . copy &&
-- test "$(git rev-parse HEAD^^)" = "$(git rev-parse copy)" &&
-- test "$(git rev-parse HEAD^2)" = "$(git rev-parse keep-merge)"
+- test_cmp_rev HEAD^^ copy &&
+- test_cmp_rev HEAD^2 keep-merge
-'
-
test_expect_success '--rebase=invalid fails' '
git reset --hard before-preserve-rebase &&
- ! git pull --rebase=invalid . copy
+ test_must_fail git pull --rebase=invalid . copy
## t/t7505-prepare-commit-msg-hook.sh ##
@@ t/t7505-prepare-commit-msg-hook.sh: test_rebase () {
@@ t/t7505-prepare-commit-msg-hook.sh: test_rebase () {
-test_have_prereq !REBASE_P || test_rebase success -p
test_expect_success 'with hook (cherry-pick)' '
- test_when_finished "git checkout -f master" &&
+ test_when_finished "git checkout -f main" &&
## t/t7517-per-repo-email.sh ##
@@ t/t7517-per-repo-email.sh: test_expect_success 'noop interactive rebase does not care about ident' '
@@ t/t7517-per-repo-email.sh: test_expect_success 'noop interactive rebase does not
-test_expect_success REBASE_P \
- 'fast-forward rebase does not care about ident (preserve)' '
- git checkout -B tmp side-without-commit &&
-- git rebase -p master
+- git rebase -p main
-'
-
-test_expect_success REBASE_P \
- 'non-fast-forward rebase refuses to write commits (preserve)' '
- test_when_finished "git rebase --abort || true" &&
- git checkout -B tmp side-with-commit &&
-- test_must_fail git rebase -p master
+- test_must_fail git rebase -p main
-'
-
test_expect_success 'author.name overrides user.name' '
@@ t/t7517-per-repo-email.sh: test_expect_success 'noop interactive rebase does not
test_config user.email user@example.com &&
## t/test-lib.sh ##
-@@ t/test-lib.sh: test_lazy_prereq CURL '
- test_lazy_prereq SHA1 '
- test $(git hash-object /dev/null) = e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
+@@ t/test-lib.sh: test_lazy_prereq SHA1 '
+ esac
'
--
+
-test_lazy_prereq REBASE_P '
- test -z "$GIT_TEST_SKIP_REBASE_P"
-'
+-
+ # Ensure that no test accidentally triggers a Git command
+ # that runs the actual maintenance scheduler, affecting a user's
+ # system permanently.
4: 0c8bfe5d18d ! 4: b493046134d pull: remove support for `--rebase=preserve`
@@ Commit message
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
## Documentation/config/branch.txt ##
-@@ Documentation/config/branch.txt: When `merges`, pass the `--rebase-merges` option to 'git rebase'
+@@ Documentation/config/branch.txt: When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
so that the local merge commits are included in the rebase (see
linkgit:git-rebase[1] for details).
+
--When `preserve` (deprecated in favor of `merges`), also pass
+-When `preserve` (or just 'p', deprecated in favor of `merges`), also pass
-`--preserve-merges` along to 'git rebase' so that locally committed merge
-commits will not be flattened by running 'git pull'.
-+
- When the value is `interactive`, the rebase is run in interactive mode.
+ When the value is `interactive` (or just 'i'), the rebase is run in interactive
+ mode.
+
- *NOTE*: this is a possibly dangerous operation; do *not* use
## Documentation/config/pull.txt ##
-@@ Documentation/config/pull.txt: When `merges`, pass the `--rebase-merges` option to 'git rebase'
+@@ Documentation/config/pull.txt: When `merges` (or just 'm'), pass the `--rebase-merges` option to 'git rebase'
so that the local merge commits are included in the rebase (see
linkgit:git-rebase[1] for details).
+
--When `preserve` (deprecated in favor of `merges`), also pass
+-When `preserve` (or just 'p', deprecated in favor of `merges`), also pass
-`--preserve-merges` along to 'git rebase' so that locally committed merge
-commits will not be flattened by running 'git pull'.
-+
- When the value is `interactive`, the rebase is run in interactive mode.
+ When the value is `interactive` (or just 'i'), the rebase is run in interactive
+ mode.
+
- *NOTE*: this is a possibly dangerous operation; do *not* use
## Documentation/git-pull.txt ##
@@ Documentation/git-pull.txt: Options related to merging
@@ Documentation/git-pull.txt: When set to `merges`, rebase using `git rebase --reb
-`--preserve-merges` option passed to `git rebase` so that locally created
-merge commits will not be flattened.
-+
- When false, merge the current branch into the upstream branch.
+ When false, merge the upstream branch into the current branch.
+
When `interactive`, enable the interactive mode of rebase.
## builtin/pull.c ##
-@@ builtin/pull.c: enum rebase_type {
- REBASE_INVALID = -1,
- REBASE_FALSE = 0,
- REBASE_TRUE,
-- REBASE_PRESERVE,
- REBASE_MERGES,
- REBASE_INTERACTIVE
- };
-@@ builtin/pull.c: enum rebase_type {
+@@
/**
* Parses the value of --rebase. If value is a false value, returns
* REBASE_FALSE. If value is a true value, returns REBASE_TRUE. If value is
@@ builtin/pull.c: enum rebase_type {
*/
static enum rebase_type parse_config_rebase(const char *key, const char *value,
int fatal)
-@@ builtin/pull.c: static enum rebase_type parse_config_rebase(const char *key, const char *value,
- return REBASE_FALSE;
- else if (v > 0)
- return REBASE_TRUE;
-- else if (!strcmp(value, "preserve") || !strcmp(value, "p"))
-- return REBASE_PRESERVE;
- else if (!strcmp(value, "merges") || !strcmp(value, "m"))
- return REBASE_MERGES;
- else if (!strcmp(value, "interactive") || !strcmp(value, "i"))
@@ builtin/pull.c: static struct option pull_options[] = {
/* Options passed to git-merge or git-rebase */
OPT_GROUP(N_("Options related to merging")),
- { OPTION_CALLBACK, 'r', "rebase", &opt_rebase,
-- "(false|true|merges|preserve|interactive)",
-+ "(false|true|merges|interactive)",
- N_("incorporate changes by rebasing rather than merging"),
- PARSE_OPT_OPTARG, parse_opt_rebase },
+ OPT_CALLBACK_F('r', "rebase", &opt_rebase,
+- "(false|true|merges|preserve|interactive)",
++ "(false|true|merges|interactive)",
+ N_("incorporate changes by rebasing rather than merging"),
+ PARSE_OPT_OPTARG, parse_opt_rebase),
OPT_PASSTHRU('n', NULL, &opt_diffstat, NULL,
-@@ builtin/pull.c: static int run_rebase(const struct object_id *curr_head,
+@@ builtin/pull.c: static int run_rebase(const struct object_id *newbase,
/* Options passed to git-rebase */
if (opt_rebase == REBASE_MERGES)
- argv_array_push(&args, "--rebase-merges");
+ strvec_push(&args, "--rebase-merges");
- else if (opt_rebase == REBASE_PRESERVE)
-- argv_array_push(&args, "--preserve-merges");
+- strvec_push(&args, "--preserve-merges");
else if (opt_rebase == REBASE_INTERACTIVE)
- argv_array_push(&args, "--interactive");
+ strvec_push(&args, "--interactive");
if (opt_diffstat)
## contrib/completion/git-completion.bash ##
@@ contrib/completion/git-completion.bash: __git_complete_config_variable_value ()
return
;;
remote.pushdefault)
+
+ ## rebase.c ##
+@@ rebase.c: enum rebase_type rebase_parse_value(const char *value)
+ return REBASE_FALSE;
+ else if (v > 0)
+ return REBASE_TRUE;
+- else if (!strcmp(value, "preserve") || !strcmp(value, "p"))
+- return REBASE_PRESERVE;
+ else if (!strcmp(value, "merges") || !strcmp(value, "m"))
+ return REBASE_MERGES;
+ else if (!strcmp(value, "interactive") || !strcmp(value, "i"))
+
+ ## rebase.h ##
+@@ rebase.h: enum rebase_type {
+ REBASE_INVALID = -1,
+ REBASE_FALSE = 0,
+ REBASE_TRUE,
+- REBASE_PRESERVE,
+ REBASE_MERGES,
+ REBASE_INTERACTIVE
+ };
5: 14e242b3cf9 ! 5: eb738b1bf05 rebase: drop support for `--preserve-merges`
@@ Documentation/git-rebase.txt: i.e. commits that would be excluded by linkgit:git
onto `<upstream>` (or `<onto>`, if specified).
+
-The `--rebase-merges` mode is similar in spirit to the deprecated
--`--preserve-merges`, but in contrast to that option works well in interactive
--rebases: commits can be reordered, inserted and dropped at will.
+-`--preserve-merges` but works with interactive rebases,
+-where commits can be reordered, inserted and dropped at will.
-+
It is currently only possible to recreate the merge commits using the
`recursive` merge strategy; Different merge strategies can be used only via
@@ Documentation/git-rebase.txt: are incompatible with the following options:
- * --preserve-merges
* --interactive
* --exec
- * --keep-empty
+ * --no-keep-empty
@@ Documentation/git-rebase.txt: are incompatible with the following options:
In addition, the following pairs of options are incompatible:
@@ Documentation/git-rebase.txt: are incompatible with the following options:
- * --preserve-merges and --interactive
- * --preserve-merges and --signoff
- * --preserve-merges and --rebase-merges
+- * --preserve-merges and --empty=
+- * --preserve-merges and --ignore-whitespace
+- * --preserve-merges and --committer-date-is-author-date
+- * --preserve-merges and --ignore-date
* --keep-base and --onto
* --keep-base and --root
-
-@@ Documentation/git-rebase.txt: merge tlsv1.3
- merge cmake
- ------------
+ * --fork-point and --root
+@@ Documentation/git-rebase.txt: CONFIGURATION
+ include::config/rebase.txt[]
+ include::config/sequencer.txt[]
-BUGS
-----
@@ Documentation/git-rebase.txt: merge tlsv1.3
Part of the linkgit:git[1] suite
## Makefile ##
-@@ Makefile: SCRIPT_SH += git-web--browse.sh
+@@ Makefile: SCRIPT_SH += git-submodule.sh
+ SCRIPT_SH += git-web--browse.sh
SCRIPT_LIB += git-mergetool--lib
- SCRIPT_LIB += git-parse-remote
-SCRIPT_LIB += git-rebase--preserve-merges
- SCRIPT_LIB += git-sh-setup
SCRIPT_LIB += git-sh-i18n
+ SCRIPT_LIB += git-sh-setup
@@ Makefile: XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --language=Perl \
+ --keyword=__ --keyword=N__ --keyword="__n:1,2"
LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H)
LOCALIZED_SH = $(SCRIPT_SH)
- LOCALIZED_SH += git-parse-remote.sh
-LOCALIZED_SH += git-rebase--preserve-merges.sh
LOCALIZED_SH += git-sh-setup.sh
LOCALIZED_PERL = $(SCRIPT_PERL)
## builtin/rebase.c ##
-@@ builtin/rebase.c: enum rebase_type {
+@@ builtin/rebase.c: static GIT_PATH_FUNC(merge_dir, "rebase-merge")
+ enum rebase_type {
REBASE_UNSPECIFIED = -1,
- REBASE_AM,
- REBASE_MERGE,
-- REBASE_INTERACTIVE,
+ REBASE_APPLY,
+- REBASE_MERGE,
- REBASE_PRESERVE_MERGES
-+ REBASE_INTERACTIVE
++ REBASE_MERGE
};
- struct rebase_options {
+ enum empty_type {
@@ builtin/rebase.c: int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
- static int is_interactive(struct rebase_options *opts)
+ static int is_merge(struct rebase_options *opts)
{
-- return opts->type == REBASE_INTERACTIVE ||
+- return opts->type == REBASE_MERGE ||
- opts->type == REBASE_PRESERVE_MERGES;
-+ return opts->type == REBASE_INTERACTIVE;
++ return opts->type == REBASE_MERGE;
}
- static void imply_interactive(struct rebase_options *opts, const char *option)
-@@ builtin/rebase.c: static void imply_interactive(struct rebase_options *opts, const char *option)
- die(_("%s requires an interactive rebase"), option);
+ static void imply_merge(struct rebase_options *opts, const char *option)
+@@ builtin/rebase.c: static void imply_merge(struct rebase_options *opts, const char *option)
+ die(_("%s requires the merge backend"), option);
break;
- case REBASE_INTERACTIVE:
+ case REBASE_MERGE:
- case REBASE_PRESERVE_MERGES:
break;
- case REBASE_MERGE:
- /* we now implement --merge via --interactive */
+ default:
+ opts->type = REBASE_MERGE; /* implied */
@@ builtin/rebase.c: static struct commit *peel_committish(const char *name)
return (struct commit *)peel_to_type(name, 0, obj, OBJ_COMMIT);
}
@@ builtin/rebase.c: static struct commit *peel_committish(const char *name)
- }
-}
-
- #define GIT_REFLOG_ACTION_ENVIRONMENT "GIT_REFLOG_ACTION"
-
- #define RESET_HEAD_DETACH (1<<0)
+ static int move_to_original_branch(struct rebase_options *opts)
+ {
+ struct strbuf orig_head_reflog = STRBUF_INIT, head_reflog = STRBUF_INIT;
@@ builtin/rebase.c: static int run_am(struct rebase_options *opts)
static int run_specific_rebase(struct rebase_options *opts, enum action action)
@@ builtin/rebase.c: static int run_am(struct rebase_options *opts)
int status;
- const char *backend, *backend_func;
- if (opts->type == REBASE_INTERACTIVE) {
- /* Run builtin interactive rebase */
+ if (opts->type == REBASE_MERGE) {
+ /* Run sequencer-based rebase */
@@ builtin/rebase.c: static int run_specific_rebase(struct rebase_options *opts, enum action action)
}
- status = run_rebase_interactive(opts, action);
+ status = run_sequencer_rebase(opts, action);
- goto finished_rebase;
- }
-
-- if (opts->type == REBASE_AM) {
-+ } else if (opts->type == REBASE_AM)
+- if (opts->type == REBASE_APPLY) {
++ } else if (opts->type == REBASE_APPLY)
status = run_am(opts);
- goto finished_rebase;
- }
@@ builtin/rebase.c: static int run_specific_rebase(struct rebase_options *opts, en
- add_var(&script_snippet, "revisions", opts->revisions);
- add_var(&script_snippet, "restrict_revision", opts->restrict_revision ?
- oid_to_hex(&opts->restrict_revision->object.oid) : NULL);
-- add_var(&script_snippet, "GIT_QUIET",
-- opts->flags & REBASE_NO_QUIET ? "" : "t");
-- sq_quote_argv_pretty(&buf, opts->git_am_opts.argv);
+- sq_quote_argv_pretty(&buf, opts->git_am_opts.v);
- add_var(&script_snippet, "git_am_opt", buf.buf);
- strbuf_release(&buf);
- add_var(&script_snippet, "verbose",
@@ builtin/rebase.c: static int run_specific_rebase(struct rebase_options *opts, en
- add_var(&script_snippet, "git_format_patch_opt",
- opts->git_format_patch_opt.buf);
-
-- if (is_interactive(opts) &&
+- if (is_merge(opts) &&
- !(opts->flags & REBASE_INTERACTIVE_EXPLICIT)) {
- strbuf_addstr(&script_snippet,
- "GIT_SEQUENCE_EDITOR=:; export GIT_SEQUENCE_EDITOR; ");
@@ builtin/rebase.c: static int run_specific_rebase(struct rebase_options *opts, en
-finished_rebase:
if (opts->dont_finish_rebase)
; /* do nothing */
- else if (opts->type == REBASE_INTERACTIVE)
+ else if (opts->type == REBASE_MERGE)
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
N_("let the user edit the list of commits to rebase"),
PARSE_OPT_NOARG | PARSE_OPT_NONEG,
- parse_opt_interactive },
+ parse_opt_interactive),
- OPT_SET_INT_F('p', "preserve-merges", &options.type,
- N_("(DEPRECATED) try to recreate merges instead of "
- "ignoring them"),
- REBASE_PRESERVE_MERGES, PARSE_OPT_HIDDEN),
OPT_RERERE_AUTOUPDATE(&options.allow_rerere_autoupdate),
- OPT_BOOL('k', "keep-empty", &options.keep_empty,
- N_("preserve empty commits during rebase")),
+ OPT_CALLBACK_F(0, "empty", &options, "{drop,keep,ask}",
+ N_("how to handle commits that become empty"),
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
strbuf_reset(&buf);
strbuf_addf(&buf, "%s/rewritten", merge_dir());
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
if (options.onto_name)
die(_("cannot combine '--keep-base' with '--onto'"));
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
+ case REBASE_APPLY:
die(_("--strategy requires --merge or --interactive"));
case REBASE_MERGE:
- case REBASE_INTERACTIVE:
- case REBASE_PRESERVE_MERGES:
/* compatible */
break;
case REBASE_UNSPECIFIED:
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
+
switch (options.type) {
case REBASE_MERGE:
- case REBASE_INTERACTIVE:
- case REBASE_PRESERVE_MERGES:
options.state_dir = merge_dir();
break;
- case REBASE_AM:
+ case REBASE_APPLY:
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
- }
+ options.reschedule_failed_exec = reschedule_failed_exec;
if (options.signoff) {
- if (options.type == REBASE_PRESERVE_MERGES)
- die("cannot combine '--signoff' with "
- "'--preserve-merges'");
- argv_array_push(&options.git_am_opts, "--signoff");
+ strvec_push(&options.git_am_opts, "--signoff");
options.flags |= REBASE_FORCE;
}
@@ git-rebase--preserve-merges.sh (deleted)
- fi
-}
-
--# Put the last action marked done at the beginning of the todo list
--# again. If there has not been an action marked done yet, leave the list of
--# items on the todo list unchanged.
--reschedule_last_action () {
-- tail -n 1 "$done" | cat - "$todo" >"$todo".new
-- sed -e \$d <"$done" >"$done".new
-- mv -f "$todo".new "$todo"
-- mv -f "$done".new "$done"
--}
--
-append_todo_help () {
- gettext "
-Commands:
6: b7ba83969da = 6: a987e9439af git-svn: drop support for `--preserve-merges`
7: 634e4141e97 ! 7: 4492cca369c rebase: drop the internal `rebase--interactive` command
@@ builtin/rebase.c: static const char *action_names[] = { "undefined",
static int edit_todo_file(unsigned flags)
{
const char *todo_file = rebase_path_todo();
-@@ builtin/rebase.c: static int run_rebase_interactive(struct rebase_options *opts,
+@@ builtin/rebase.c: static int run_sequencer_rebase(struct rebase_options *opts,
break;
}
@@ builtin/rebase.c: static int run_rebase_interactive(struct rebase_options *opts,
default:
BUG("invalid command '%d'", command);
}
-@@ builtin/rebase.c: static int run_rebase_interactive(struct rebase_options *opts,
- return ret;
+@@ builtin/rebase.c: static int parse_opt_keep_empty(const struct option *opt, const char *arg,
+ return 0;
}
-static const char * const builtin_rebase_interactive_usage[] = {
@@ builtin/rebase.c: static int run_rebase_interactive(struct rebase_options *opts,
-int cmd_rebase__interactive(int argc, const char **argv, const char *prefix)
-{
- struct rebase_options opts = REBASE_OPTIONS_INIT;
-- struct object_id squash_onto = null_oid;
+- struct object_id squash_onto = *null_oid();
- enum action command = ACTION_NONE;
- struct option options[] = {
- OPT_NEGBIT(0, "ff", &opts.flags, N_("allow fast-forward"),
- REBASE_FORCE),
-- OPT_BOOL(0, "keep-empty", &opts.keep_empty, N_("keep empty commits")),
-- OPT_BOOL(0, "allow-empty-message", &opts.allow_empty_message,
-- N_("allow commits with empty messages")),
+- OPT_CALLBACK_F('k', "keep-empty", &options, NULL,
+- N_("keep commits which start empty"),
+- PARSE_OPT_NOARG | PARSE_OPT_HIDDEN,
+- parse_opt_keep_empty),
+- OPT_BOOL_F(0, "allow-empty-message", &opts.allow_empty_message,
+- N_("allow commits with empty messages"),
+- PARSE_OPT_HIDDEN),
- OPT_BOOL(0, "rebase-merges", &opts.rebase_merges, N_("rebase merge commits")),
- OPT_BOOL(0, "rebase-cousins", &opts.rebase_cousins,
- N_("keep original branch points of cousins")),
@@ builtin/rebase.c: static int run_rebase_interactive(struct rebase_options *opts,
- warning(_("--[no-]rebase-cousins has no effect without "
- "--rebase-merges"));
-
-- return !!run_rebase_interactive(&opts, command);
+- return !!run_sequencer_rebase(&opts, command);
-}
-
- static int is_interactive(struct rebase_options *opts)
+ static int is_merge(struct rebase_options *opts)
{
- return opts->type == REBASE_INTERACTIVE;
+ return opts->type == REBASE_MERGE;
## git.c ##
@@ git.c: static struct cmd_struct commands[] = {
8: 45fee72059d < -: ----------- remote: no longer claim that branch.*.rebase=preserve is a thing
--
gitgitgadget
next prev parent reply other threads:[~2021-09-01 11:57 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-23 20:50 [PATCH 0/8] Drop support for git rebase --preserve-merges Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 1/8] t5520: do not use `pull.rebase=preserve` Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 2/8] remote: warn about unhandled branch.<name>.rebase values Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 3/8] tests: stop testing `git rebase --preserve-merges` Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 4/8] pull: remove support for `--rebase=preserve` Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 5/8] rebase: drop support for `--preserve-merges` Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 6/8] git-svn: " Johannes Schindelin via GitGitGadget
2019-11-23 22:08 ` Eric Wong
2019-11-24 21:29 ` Johannes Schindelin
2019-11-25 3:15 ` Eric Wong
2019-11-23 20:50 ` [PATCH 7/8] rebase: drop the internal `rebase--interactive` command Johannes Schindelin via GitGitGadget
2019-11-23 20:50 ` [PATCH 8/8] remote: no longer claim that branch.*.rebase=preserve is a thing Johannes Schindelin via GitGitGadget
2021-09-01 11:57 ` Johannes Schindelin via GitGitGadget [this message]
2021-09-01 11:57 ` [PATCH v2 1/7] t5520: do not use `pull.rebase=preserve` Johannes Schindelin via GitGitGadget
2021-09-01 11:57 ` [PATCH v2 2/7] remote: warn about unhandled branch.<name>.rebase values Johannes Schindelin via GitGitGadget
2021-09-01 11:57 ` [PATCH v2 3/7] tests: stop testing `git rebase --preserve-merges` Johannes Schindelin via GitGitGadget
2021-09-01 13:26 ` Ævar Arnfjörð Bjarmason
2021-09-01 11:57 ` [PATCH v2 4/7] pull: remove support for `--rebase=preserve` Johannes Schindelin via GitGitGadget
2021-09-01 11:57 ` [PATCH v2 5/7] rebase: drop support for `--preserve-merges` Johannes Schindelin via GitGitGadget
2021-09-01 12:21 ` Ævar Arnfjörð Bjarmason
2021-09-02 13:54 ` Johannes Schindelin
2021-09-02 14:11 ` Ævar Arnfjörð Bjarmason
2021-09-01 13:33 ` Ævar Arnfjörð Bjarmason
2021-09-02 13:59 ` Johannes Schindelin
2021-09-02 14:16 ` Ævar Arnfjörð Bjarmason
2021-09-02 14:28 ` Ævar Arnfjörð Bjarmason
2021-09-02 14:34 ` Ævar Arnfjörð Bjarmason
2021-09-02 14:56 ` Ævar Arnfjörð Bjarmason
2021-09-02 15:34 ` Ævar Arnfjörð Bjarmason
2021-09-04 19:41 ` Johannes Schindelin
2021-09-05 7:32 ` Ævar Arnfjörð Bjarmason
2021-09-05 22:36 ` Junio C Hamano
2021-09-06 10:15 ` Phillip Wood
2021-09-07 12:32 ` Johannes Schindelin
2021-09-07 15:31 ` Phillip Wood
2021-09-07 19:44 ` Johannes Schindelin
2021-09-01 11:57 ` [PATCH v2 6/7] git-svn: " Johannes Schindelin via GitGitGadget
2021-09-01 13:25 ` Ævar Arnfjörð Bjarmason
2021-09-02 14:00 ` Johannes Schindelin
2021-09-02 14:08 ` Johannes Schindelin
2021-09-01 11:57 ` [PATCH v2 7/7] rebase: drop the internal `rebase--interactive` command Johannes Schindelin via GitGitGadget
2021-09-06 10:10 ` Phillip Wood
2021-09-07 12:39 ` Johannes Schindelin
2021-09-01 13:37 ` [PATCH v2 0/7] Drop support for git rebase --preserve-merges Ævar Arnfjörð Bjarmason
2021-09-02 14:16 ` Johannes Schindelin
2021-09-02 14:51 ` Ævar Arnfjörð Bjarmason
2021-09-01 22:25 ` Junio C Hamano
2021-09-02 14:18 ` Johannes Schindelin
2021-09-02 20:06 ` Johannes Sixt
2021-09-07 17:33 ` Johannes Schindelin
2021-09-07 22:48 ` Elijah Newren
2021-09-10 12:08 ` Johannes Schindelin
2021-09-10 17:16 ` Elijah Newren
2021-09-13 11:24 ` merge-ort and --rebase-merges, was " Johannes Schindelin
2021-09-13 15:53 ` Elijah Newren
2021-09-06 6:58 ` Ævar Arnfjörð Bjarmason
2021-09-07 18:27 ` Junio C Hamano
2021-09-07 19:52 ` Ævar Arnfjörð Bjarmason
2021-09-04 22:30 ` Alban Gruin
2021-09-06 10:17 ` Phillip Wood
2021-09-07 12:48 ` Johannes Schindelin
2021-09-07 21:05 ` [PATCH v3 00/11] " Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 01/11] t5520: do not use `pull.rebase=preserve` Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 02/11] remote: warn about unhandled branch.<name>.rebase values Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 03/11] tests: stop testing `git rebase --preserve-merges` Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 04/11] pull: remove support for `--rebase=preserve` Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 05/11] rebase: drop support for `--preserve-merges` Johannes Schindelin via GitGitGadget
2021-09-10 14:53 ` Ævar Arnfjörð Bjarmason
2022-07-21 19:02 ` re-mentioning --preserve-merges in the docs (was: [PATCH v3 05/11] rebase: drop support for `--preserve-merges`) Ævar Arnfjörð Bjarmason
2022-07-21 20:15 ` re-mentioning --preserve-merges in the docs Junio C Hamano
2022-07-29 13:24 ` Johannes Schindelin
2021-09-07 21:05 ` [PATCH v3 06/11] git-svn: drop support for `--preserve-merges` Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 07/11] rebase: drop the internal `rebase--interactive` command Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 08/11] rebase: remove obsolete code comment Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 09/11] rebase: stop mentioning the -p option in comments Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 10/11] rebase: remove a no-longer-used function Johannes Schindelin via GitGitGadget
2021-09-07 21:05 ` [PATCH v3 11/11] sequencer: restrict scope of a formerly public function Johannes Schindelin via GitGitGadget
2021-09-08 1:30 ` [PATCH v3 00/11] Drop support for git rebase --preserve-merges Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.195.v2.git.1630497435.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=e@80x24.org \
--cc=git@vger.kernel.org \
--cc=johannes.schindelin@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).