Skip to content

Commit

Permalink
Merge branch 'ab/pull-rebase-config'
Browse files Browse the repository at this point in the history
* ab/pull-rebase-config:
  pull: introduce a pull.rebase option to enable --rebase
  • Loading branch information
gitster committed Dec 9, 2011
2 parents ef87690 + 6b37dff commit 1ee740e
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 7 deletions.
20 changes: 16 additions & 4 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -677,10 +677,12 @@ branch.<name>.mergeoptions::
branch.<name>.rebase::
When true, rebase the branch <name> on top of the fetched branch,
instead of merging the default branch from the default remote when
"git pull" is run.
*NOTE*: this is a possibly dangerous operation; do *not* use
it unless you understand the implications (see linkgit:git-rebase[1]
for details).
"git pull" is run. See "pull.rebase" for doing this in a non
branch-specific manner.
+
*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::
Specify the command to invoke the specified browser. The
Expand Down Expand Up @@ -1590,6 +1592,16 @@ pretty.<name>::
Note that an alias with the same name as a built-in format
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::
The default merge strategy to use when pulling multiple branches
at once.
Expand Down
2 changes: 1 addition & 1 deletion Documentation/git-pull.txt
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ include::merge-options.txt[]
fetched, the rebase uses that information to avoid rebasing
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
`{litdd}rebase` instead of merging.
+
Expand Down
4 changes: 4 additions & 0 deletions git-pull.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ merge_args=
curr_branch=$(git symbolic-ref -q HEAD)
curr_branch_short="${curr_branch#refs/heads/}"
rebase=$(git config --bool branch.$curr_branch_short.rebase)
if test -z "$rebase"
then
rebase=$(git config --bool pull.rebase)
fi
dry_run=
while :
do
Expand Down
23 changes: 21 additions & 2 deletions t/t5520-pull.sh
Original file line number Diff line number Diff line change
Expand Up @@ -94,16 +94,35 @@ test_expect_success '--rebase' '
test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
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' '
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 config branch.to-rebase.rebase 0 &&
test $(git rev-parse HEAD^) = $(git rev-parse copy) &&
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' '
git remote add -f me . &&
Expand Down

0 comments on commit 1ee740e

Please sign in to comment.