diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-05-04 17:42:51 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-05-06 15:01:56 -0700 |
commit | 0d8fc3efc65df74a2b39b3f9798861a1b2055b62 (patch) | |
tree | 8dbec03b5d44bc2fde3a04d5a5ada030d515e9de /t | |
parent | e923eaeb901ff056421b9007adcbbce271caa7b6 (diff) | |
download | git-0d8fc3efc65df74a2b39b3f9798861a1b2055b62.tar.gz git-0d8fc3efc65df74a2b39b3f9798861a1b2055b62.tar.xz |
merge: make branch.<name>.mergeoptions correctly override merge.<option>
The parsing of the additional command line parameters supplied to
the branch.<name>.mergeoptions configuration variable was implemented
at the wrong stage. If any merge-related variable came after we read
branch.<name>.mergeoptions, the earlier value was overwritten.
We should first read all the merge.* configuration, override them by
reading from branch.<name>.mergeoptions and then finally read from
the command line.
This patch should fix it, even though I now strongly suspect that
branch.<name>.mergeoptions that gives a single command line that
needs to be parsed was likely to be an ill-conceived idea to begin
with. Sigh...
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-x | t/t7600-merge.sh | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh index 57f6d2bae..56c653d02 100755 --- a/t/t7600-merge.sh +++ b/t/t7600-merge.sh @@ -372,6 +372,38 @@ test_expect_success 'merge c1 with c2 (no-commit in config)' ' test_debug 'gitk --all' +test_expect_success 'merge c1 with c2 (log in config)' ' + git config branch.master.mergeoptions "" && + git reset --hard c1 && + git merge --log c2 && + git show -s --pretty=tformat:%s%n%b >expect && + + git config branch.master.mergeoptions --log && + git reset --hard c1 && + git merge c2 && + git show -s --pretty=tformat:%s%n%b >actual && + + test_cmp expect actual +' + +test_expect_success 'merge c1 with c2 (log in config gets overridden)' ' + ( + git config --remove-section branch.master + git config --remove-section merge + ) + git reset --hard c1 && + git merge c2 && + git show -s --pretty=tformat:%s%n%b >expect && + + git config branch.master.mergeoptions "--no-log" && + git config merge.log true && + git reset --hard c1 && + git merge c2 && + git show -s --pretty=tformat:%s%n%b >actual && + + test_cmp expect actual +' + test_expect_success 'merge c1 with c2 (squash in config)' ' git reset --hard c1 && git config branch.master.mergeoptions "--squash" && |