diff options
| -rw-r--r-- | Documentation/config.txt | 20 | ||||
| -rw-r--r-- | Documentation/git-pull.txt | 2 | ||||
| -rwxr-xr-x | git-pull.sh | 4 | ||||
| -rwxr-xr-x | t/t5520-pull.sh | 23 | 
4 files changed, 42 insertions, 7 deletions
| diff --git a/Documentation/config.txt b/Documentation/config.txt index 6b93777199..256d27c3b5 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -668,10 +668,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 @@ -1548,6 +1550,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. diff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt index 14609cbd4d..756909cb10 100644 --- a/Documentation/git-pull.txt +++ b/Documentation/git-pull.txt @@ -107,7 +107,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.  + diff --git a/git-pull.sh b/git-pull.sh index fb9e2df931..277ed40cdb 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -43,6 +43,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 diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh index 0e5eb678ce..35304b41e9 100755 --- a/t/t5520-pull.sh +++ b/t/t5520-pull.sh @@ -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 . && | 
