git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr>
To: git@vger.kernel.org
Cc: Remi Galan <remi.galan-alfonso@ensimag.grenoble-inp.fr>,
	Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr>,
	Guillaume Pages <guillaume.pages@ensimag.grenoble-inp.fr>,
	Louis-Alexandre Stuber 
	<louis--alexandre.stuber@ensimag.grenoble-inp.fr>,
	Antoine Delaite <antoine.delaite@ensimag.grenoble-inp.fr>,
	Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Subject: [PATCH 3/3] git-am: add am.threeWay config variable
Date: Tue, 26 May 2015 23:32:55 +0200	[thread overview]
Message-ID: <1432675975-11020-3-git-send-email-remi.lespinet@ensimag.grenoble-inp.fr> (raw)
In-Reply-To: <1432675975-11020-1-git-send-email-remi.lespinet@ensimag.grenoble-inp.fr>

Add the am.threeWay configuration variable to use the -3 or --3way
option of git am by default. When am.threeway is set and not desired
for a specific git am command, the --no-3way option can be used to
override it.

Signed-off-by: Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr>
---
 Even if git am will be rewritten soon, the code that will have to be
 ported is not the most important part of the patch and the tests and
 documentation parts can be reused.

 Documentation/config.txt |  7 +++++++
 Documentation/git-am.txt |  6 ++++--
 git-am.sh                |  7 +++++++
 t/t4150-am.sh            | 15 +++++++++++++++
 4 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index d44bc85..8e42752 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -769,6 +769,13 @@ am.keepcr::
 	by giving '--no-keep-cr' from the command line.
 	See linkgit:git-am[1], linkgit:git-mailsplit[1].
 
+am.threeWay::
+	If true, git-am will fall back on 3-way merge when the patch
+	cannot be applied cleanly, in the same way as the '-3' or
+	'--3-way' option. Can be overridden by giving '--no-3-way'
+	from the command line.
+	See linkgit:git-am[1].
+
 apply.ignoreWhitespace::
 	When set to 'change', tells 'git apply' to ignore changes in
 	whitespace, in the same way as the '--ignore-space-change'
diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
index 0d8ba48..3190c05 100644
--- a/Documentation/git-am.txt
+++ b/Documentation/git-am.txt
@@ -89,11 +89,13 @@ default.   You can use `--no-utf8` to override this.
 	linkgit:git-mailinfo[1]).
 
 -3::
---3way::
+--[no-]3way::
 	When the patch does not apply cleanly, fall back on
 	3-way merge if the patch records the identity of blobs
 	it is supposed to apply to and we have those blobs
-	available locally.
+	available locally.  `am.threeWay` configuration variable
+	can be used to specify the default behaviour.  `--no-3way`
+	is useful to override `am.threeWay`.
 
 --ignore-space-change::
 --ignore-whitespace::
diff --git a/git-am.sh b/git-am.sh
index 761befb..781507c 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -389,6 +389,11 @@ then
     keepcr=t
 fi
 
+if test "$(git config --bool --get am.threeWay)" = true
+then
+    threeway=t
+fi
+
 while test $# != 0
 do
 	case "$1" in
@@ -400,6 +405,8 @@ it will be removed. Please do not use it anymore."
 		;;
 	-3|--3way)
 		threeway=t ;;
+	--no-3way)
+		threeway=f ;;
 	-s|--signoff)
 		sign=t ;;
 	-u|--utf8)
diff --git a/t/t4150-am.sh b/t/t4150-am.sh
index 8f85098..e16ef0e 100755
--- a/t/t4150-am.sh
+++ b/t/t4150-am.sh
@@ -288,6 +288,21 @@ test_expect_success 'am -3 falls back to 3-way merge' '
 	git diff --exit-code lorem
 '
 
+test_expect_success 'am with config am.threeWay falls back to 3-way merge' '
+	setup_temporary_branch lorem2 &&
+	test_config am.threeWay 1 &&
+	git am lorem-move.patch &&
+	test_path_is_missing .git/rebase-apply &&
+	git diff --exit-code lorem
+'
+
+test_expect_success 'am with config am.threeWay overridden by --no-3way' '
+	setup_temporary_branch lorem2 &&
+	test_config am.threeWay 1 &&
+	test_must_fail git am --no-3way lorem-move.patch &&
+	test_path_is_dir .git/rebase-apply
+'
+
 test_expect_success 'am -3 -p0 can read --no-prefix patch' '
 	setup_temporary_branch lorem2 &&
 	git am -3 -p0 lorem-zero.patch &&
-- 
1.9.1

  parent reply	other threads:[~2015-05-26 21:40 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-26 21:32 [PATCH 1/3] t4150-am: refactor and clean common setup Remi Lespinet
2015-05-26 21:32 ` [PATCH 2/3] t4150-am: refactor am -3 tests Remi Lespinet
2015-05-26 21:32 ` Remi Lespinet [this message]
2015-05-28 13:47   ` [PATCH 3/3] git-am: add am.threeWay config variable Paul Tan
2015-05-28 17:57     ` Junio C Hamano
2015-05-28 19:20       ` Matthieu Moy
2015-05-28 13:10 ` [PATCH 1/3] t4150-am: refactor and clean common setup Paul Tan
2015-05-28 18:15   ` Eric Sunshine
2015-05-29 11:50     ` Remi LESPINET
2015-05-28 19:09 ` Eric Sunshine
2015-05-28 19:18   ` Eric Sunshine

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1432675975-11020-3-git-send-email-remi.lespinet@ensimag.grenoble-inp.fr \
    --to=remi.lespinet@ensimag.grenoble-inp.fr \
    --cc=antoine.delaite@ensimag.grenoble-inp.fr \
    --cc=git@vger.kernel.org \
    --cc=guillaume.pages@ensimag.grenoble-inp.fr \
    --cc=louis--alexandre.stuber@ensimag.grenoble-inp.fr \
    --cc=matthieu.moy@grenoble-inp.fr \
    --cc=remi.galan-alfonso@ensimag.grenoble-inp.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).