git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] make pull.ff=true override merge.ff
@ 2015-05-18 13:45 Paul Tan
  2015-05-18 13:45 ` [PATCH v2 1/2] pull: " Paul Tan
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Paul Tan @ 2015-05-18 13:45 UTC (permalink / raw)
  To: git; +Cc: Stefan Beller, Johannes Schindelin, Paul Tan

This is a re-roll of [1], primarily to remove the use of "verbose".

Since b814da8 (pull: add pull.ff configuration, 2014-01-15), running
git-pull with the configuration pull.ff=false or pull.ff=only is
equivalent to passing --no-ff and --ff-only to git-merge. However, if
pull.ff=true, no switch is passed to git-merge. This leads to the
confusing behavior where pull.ff=false or pull.ff=only is able to
override merge.ff, while pull.ff=true is unable to.

This patch series adds a failing test to demonstrates the above, and fixes it.

The documentation is also tweaked to clarify that pull.ff is meant to override
merge.ff.

The last patch makes pull.ff consistent with merge.ff by supporting the config
aliases of true and false (on, off, 0, 1).

[1] http://thread.gmane.org/gmane.comp.version-control.git/268972

Paul Tan (2):
  pull: make pull.ff=true override merge.ff
  pull: parse pull.ff as a bool or string

 Documentation/config.txt     | 2 +-
 git-pull.sh                  | 5 ++++-
 t/t7601-merge-pull-config.sh | 8 ++++++++
 3 files changed, 13 insertions(+), 2 deletions(-)

-- 
2.1.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/2] pull: make pull.ff=true override merge.ff
  2015-05-18 13:45 [PATCH v2 0/2] make pull.ff=true override merge.ff Paul Tan
@ 2015-05-18 13:45 ` Paul Tan
  2015-05-18 13:45 ` [PATCH v2 2/2] pull: parse pull.ff as a bool or string Paul Tan
  2015-05-18 14:46 ` [PATCH v2 0/2] make pull.ff=true override merge.ff Johannes Schindelin
  2 siblings, 0 replies; 5+ messages in thread
From: Paul Tan @ 2015-05-18 13:45 UTC (permalink / raw)
  To: git; +Cc: Stefan Beller, Johannes Schindelin, Paul Tan, David Aguilar

Since b814da8 (pull: add pull.ff configuration, 2014-01-15), running
git-pull with the configuration pull.ff=false or pull.ff=only is
equivalent to passing --no-ff and --ff-only to git-merge. However, if
pull.ff=true, no switch is passed to git-merge. This leads to the
confusing behavior where pull.ff=false or pull.ff=only is able to
override merge.ff, while pull.ff=true is unable to.

Fix this by adding the --ff switch if pull.ff=true, and add a test to
catch future regressions.

Furthermore, clarify in the documentation that pull.ff overrides
merge.ff.

Signed-off-by: Paul Tan <pyokagan@gmail.com>
---
* Removed use of "verbose".

 Documentation/config.txt     | 2 +-
 git-pull.sh                  | 3 +++
 t/t7601-merge-pull-config.sh | 8 ++++++++
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 948b8b0..ec0f9ef 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -2042,7 +2042,7 @@ pull.ff::
 	a case (equivalent to giving the `--no-ff` option from the command
 	line). When set to `only`, only such fast-forward merges are
 	allowed (equivalent to giving the `--ff-only` option from the
-	command line).
+	command line). This setting overrides `merge.ff` when pulling.
 
 pull.rebase::
 	When true, rebase branches on top of the fetched branch, instead
diff --git a/git-pull.sh b/git-pull.sh
index 9ed01fd..e51dd37 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -56,6 +56,9 @@ fi
 # Setup default fast-forward options via `pull.ff`
 pull_ff=$(git config pull.ff)
 case "$pull_ff" in
+true)
+	no_ff=--ff
+	;;
 false)
 	no_ff=--no-ff
 	;;
diff --git a/t/t7601-merge-pull-config.sh b/t/t7601-merge-pull-config.sh
index f768c90..c6c44ec 100755
--- a/t/t7601-merge-pull-config.sh
+++ b/t/t7601-merge-pull-config.sh
@@ -45,6 +45,14 @@ test_expect_success 'fast-forward pull succeeds with "true" in pull.ff' '
 	test "$(git rev-parse HEAD)" = "$(git rev-parse c1)"
 '
 
+test_expect_success 'pull.ff=true overrides merge.ff=false' '
+	git reset --hard c0 &&
+	test_config merge.ff false &&
+	test_config pull.ff true &&
+	git pull . c1 &&
+	test "$(git rev-parse HEAD)" = "$(git rev-parse c1)"
+'
+
 test_expect_success 'fast-forward pull creates merge with "false" in pull.ff' '
 	git reset --hard c0 &&
 	test_config pull.ff false &&
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v2 2/2] pull: parse pull.ff as a bool or string
  2015-05-18 13:45 [PATCH v2 0/2] make pull.ff=true override merge.ff Paul Tan
  2015-05-18 13:45 ` [PATCH v2 1/2] pull: " Paul Tan
@ 2015-05-18 13:45 ` Paul Tan
  2015-05-18 14:46 ` [PATCH v2 0/2] make pull.ff=true override merge.ff Johannes Schindelin
  2 siblings, 0 replies; 5+ messages in thread
From: Paul Tan @ 2015-05-18 13:45 UTC (permalink / raw)
  To: git; +Cc: Stefan Beller, Johannes Schindelin, Paul Tan, David Aguilar

Since b814da8 (pull: add pull.ff configuration, 2014-01-15) git-pull
supported setting --(no-)ff via the pull.ff configuration value.
However, as it only matches the string values of "true" and "false", it
does not support other boolean aliases such as "on", "off", "1", "0".
This is inconsistent with the merge.ff setting, which supports these
aliases.

Fix this by using the bool_or_string_config function to retrieve the
value of pull.ff.

Signed-off-by: Paul Tan <pyokagan@gmail.com>
---

 git-pull.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/git-pull.sh b/git-pull.sh
index e51dd37..09bc678 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -54,7 +54,7 @@ then
 fi
 
 # Setup default fast-forward options via `pull.ff`
-pull_ff=$(git config pull.ff)
+pull_ff=$(bool_or_string_config pull.ff)
 case "$pull_ff" in
 true)
 	no_ff=--ff
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/2] make pull.ff=true override merge.ff
  2015-05-18 13:45 [PATCH v2 0/2] make pull.ff=true override merge.ff Paul Tan
  2015-05-18 13:45 ` [PATCH v2 1/2] pull: " Paul Tan
  2015-05-18 13:45 ` [PATCH v2 2/2] pull: parse pull.ff as a bool or string Paul Tan
@ 2015-05-18 14:46 ` Johannes Schindelin
  2015-05-18 18:22   ` Junio C Hamano
  2 siblings, 1 reply; 5+ messages in thread
From: Johannes Schindelin @ 2015-05-18 14:46 UTC (permalink / raw)
  To: Paul Tan; +Cc: git, Stefan Beller

Hi Paul,

On 2015-05-18 15:45, Paul Tan wrote:
> This is a re-roll of [1], primarily to remove the use of "verbose".

I think these two patches are good to go now.

Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/2] make pull.ff=true override merge.ff
  2015-05-18 14:46 ` [PATCH v2 0/2] make pull.ff=true override merge.ff Johannes Schindelin
@ 2015-05-18 18:22   ` Junio C Hamano
  0 siblings, 0 replies; 5+ messages in thread
From: Junio C Hamano @ 2015-05-18 18:22 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Paul Tan, git, Stefan Beller

Johannes Schindelin <johannes.schindelin@gmx.de> writes:

> Hi Paul,
>
> On 2015-05-18 15:45, Paul Tan wrote:
>> This is a re-roll of [1], primarily to remove the use of "verbose".
>
> I think these two patches are good to go now.
>
> Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> Ciao,
> Dscho

Yeah, looks good.  Thanks, both.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-05-18 18:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-18 13:45 [PATCH v2 0/2] make pull.ff=true override merge.ff Paul Tan
2015-05-18 13:45 ` [PATCH v2 1/2] pull: " Paul Tan
2015-05-18 13:45 ` [PATCH v2 2/2] pull: parse pull.ff as a bool or string Paul Tan
2015-05-18 14:46 ` [PATCH v2 0/2] make pull.ff=true override merge.ff Johannes Schindelin
2015-05-18 18:22   ` Junio C Hamano

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 NNTP newsgroup(s).