mirror of
https://github.com/git/git
synced 2024-10-30 03:13:24 +00:00
pull: introduce a pull.rebase option to enable --rebase
Currently we either need to set branch.<name>.rebase for existing branches if we'd like "git pull" to mean "git pull --rebase", or have the forethought of setting "branch.autosetuprebase" before we create the branch. Introduce a "pull.rebase" option to globally configure "git pull" to mean "git pull --rebase" for any branch. This option will be considered at a lower priority than branch.<name>.rebase, i.e. we could set pull.rebase=true and branch.<name>.rebase=false and the latter configuration option would win. Reviewed-by: Sverre Rabbelier <srabbelier@gmail.com> Reviewed-by: Fernando Vezzosi <buccia@repnz.net> Reviewed-by: Eric Herman <eric@freesa.org> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Liked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
f696543dad
commit
6b37dff17f
4 changed files with 42 additions and 7 deletions
|
@ -668,10 +668,12 @@ branch.<name>.mergeoptions::
|
||||||
branch.<name>.rebase::
|
branch.<name>.rebase::
|
||||||
When true, rebase the branch <name> on top of the fetched branch,
|
When true, rebase the branch <name> on top of the fetched branch,
|
||||||
instead of merging the default branch from the default remote when
|
instead of merging the default branch from the default remote when
|
||||||
"git pull" is run.
|
"git pull" is run. See "pull.rebase" for doing this in a non
|
||||||
*NOTE*: this is a possibly dangerous operation; do *not* use
|
branch-specific manner.
|
||||||
it unless you understand the implications (see linkgit:git-rebase[1]
|
+
|
||||||
for details).
|
*NOTE*: this is a possibly dangerous operation; do *not* use
|
||||||
|
it unless you understand the implications (see linkgit:git-rebase[1]
|
||||||
|
for details).
|
||||||
|
|
||||||
browser.<tool>.cmd::
|
browser.<tool>.cmd::
|
||||||
Specify the command to invoke the specified browser. The
|
Specify the command to invoke the specified browser. The
|
||||||
|
@ -1548,6 +1550,16 @@ pretty.<name>::
|
||||||
Note that an alias with the same name as a built-in format
|
Note that an alias with the same name as a built-in format
|
||||||
will be silently ignored.
|
will be silently ignored.
|
||||||
|
|
||||||
|
pull.rebase::
|
||||||
|
When true, rebase branches on top of the fetched branch, instead
|
||||||
|
of merging the default branch from the default remote when "git
|
||||||
|
pull" is run. See "branch.<name>.rebase" for setting this on a
|
||||||
|
per-branch basis.
|
||||||
|
+
|
||||||
|
*NOTE*: this is a possibly dangerous operation; do *not* use
|
||||||
|
it unless you understand the implications (see linkgit:git-rebase[1]
|
||||||
|
for details).
|
||||||
|
|
||||||
pull.octopus::
|
pull.octopus::
|
||||||
The default merge strategy to use when pulling multiple branches
|
The default merge strategy to use when pulling multiple branches
|
||||||
at once.
|
at once.
|
||||||
|
|
|
@ -107,7 +107,7 @@ include::merge-options.txt[]
|
||||||
fetched, the rebase uses that information to avoid rebasing
|
fetched, the rebase uses that information to avoid rebasing
|
||||||
non-local changes.
|
non-local changes.
|
||||||
+
|
+
|
||||||
See `branch.<name>.rebase` and `branch.autosetuprebase` in
|
See `pull.rebase`, `branch.<name>.rebase` and `branch.autosetuprebase` in
|
||||||
linkgit:git-config[1] if you want to make `git pull` always use
|
linkgit:git-config[1] if you want to make `git pull` always use
|
||||||
`{litdd}rebase` instead of merging.
|
`{litdd}rebase` instead of merging.
|
||||||
+
|
+
|
||||||
|
|
|
@ -43,6 +43,10 @@ merge_args=
|
||||||
curr_branch=$(git symbolic-ref -q HEAD)
|
curr_branch=$(git symbolic-ref -q HEAD)
|
||||||
curr_branch_short="${curr_branch#refs/heads/}"
|
curr_branch_short="${curr_branch#refs/heads/}"
|
||||||
rebase=$(git config --bool branch.$curr_branch_short.rebase)
|
rebase=$(git config --bool branch.$curr_branch_short.rebase)
|
||||||
|
if test -z "$rebase"
|
||||||
|
then
|
||||||
|
rebase=$(git config --bool pull.rebase)
|
||||||
|
fi
|
||||||
dry_run=
|
dry_run=
|
||||||
while :
|
while :
|
||||||
do
|
do
|
||||||
|
|
|
@ -94,16 +94,35 @@ test_expect_success '--rebase' '
|
||||||
test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
|
test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
|
||||||
test new = $(git show HEAD:file2)
|
test new = $(git show HEAD:file2)
|
||||||
'
|
'
|
||||||
|
test_expect_success 'pull.rebase' '
|
||||||
|
git reset --hard before-rebase &&
|
||||||
|
git config --bool pull.rebase true &&
|
||||||
|
test_when_finished "git config --unset pull.rebase" &&
|
||||||
|
git pull . copy &&
|
||||||
|
test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
|
||||||
|
test new = $(git show HEAD:file2)
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'branch.to-rebase.rebase' '
|
test_expect_success 'branch.to-rebase.rebase' '
|
||||||
git reset --hard before-rebase &&
|
git reset --hard before-rebase &&
|
||||||
git config branch.to-rebase.rebase 1 &&
|
git config --bool branch.to-rebase.rebase true &&
|
||||||
|
test_when_finished "git config --unset branch.to-rebase.rebase" &&
|
||||||
git pull . copy &&
|
git pull . copy &&
|
||||||
git config branch.to-rebase.rebase 0 &&
|
|
||||||
test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
|
test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
|
||||||
test new = $(git show HEAD:file2)
|
test new = $(git show HEAD:file2)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'branch.to-rebase.rebase should override pull.rebase' '
|
||||||
|
git reset --hard before-rebase &&
|
||||||
|
git config --bool pull.rebase true &&
|
||||||
|
test_when_finished "git config --unset pull.rebase" &&
|
||||||
|
git config --bool branch.to-rebase.rebase false &&
|
||||||
|
test_when_finished "git config --unset branch.to-rebase.rebase" &&
|
||||||
|
git pull . copy &&
|
||||||
|
test $(git rev-parse HEAD^) != $(git rev-parse copy) &&
|
||||||
|
test new = $(git show HEAD:file2)
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success '--rebase with rebased upstream' '
|
test_expect_success '--rebase with rebased upstream' '
|
||||||
|
|
||||||
git remote add -f me . &&
|
git remote add -f me . &&
|
||||||
|
|
Loading…
Reference in a new issue