git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Denton Liu <liu.denton@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	David Aguilar <davvid@gmail.com>,
	Jeff Hostetler <git@jeffhostetler.com>,
	Eric Sunshine <sunshine@sunshineco.com>
Subject: [PATCH v2 2/5] mergetool: use get_merge_tool_guessed function
Date: Tue, 23 Apr 2019 01:54:01 -0700	[thread overview]
Message-ID: <e928db892e35bcb68fcdb52c9bf7158dbbb46616.1556009181.git.liu.denton@gmail.com> (raw)
In-Reply-To: <cover.1556009181.git.liu.denton@gmail.com>

In git-mergetool, the logic for getting which merge tool to use is
duplicated in git-mergetool--lib, except for the fact that it needs to
know whether the tool was guessed or not.

Write `get_merge_tool_guessed` to return whether or not the tool was
guessed in addition to the actual tool and make git-mergetool call this
function instead of duplicating the logic. Also, let
`$GIT_MERGETOOL_GUI` be set to determine whether or not the guitool will
be selected.

Make `get_merge_tool` use this function internally so that code
duplication is reduced.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
---

After thinking about it for a while, I realised that if it was easy to
find one (albeit old) public project using our code, there should be
many others who we don't know about that will also be using our code.

Let's save them the trouble and just introduce a new function instead of
changing the behaviour of the old one.

---
 Documentation/git-mergetool--lib.txt |  9 ++++++++-
 git-mergetool--lib.sh                | 12 +++++++++---
 git-mergetool.sh                     | 11 +++--------
 3 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/Documentation/git-mergetool--lib.txt b/Documentation/git-mergetool--lib.txt
index 055550b2bc..343268d885 100644
--- a/Documentation/git-mergetool--lib.txt
+++ b/Documentation/git-mergetool--lib.txt
@@ -27,8 +27,15 @@ to define the operation mode for the functions listed below.
 
 FUNCTIONS
 ---------
+get_merge_tool_guessed::
+	returns '$is_guessed:$merge_tool'. '$is_guessed' is 'true' if
+	the tool was guessed, else 'false'. '$merge_tool' is the merge
+	tool to use. '$GIT_MERGETOOL_GUI' may be set to 'true' to search
+	for the appropriate guitool.
+
 get_merge_tool::
-	returns a merge tool.
+	returns a merge tool. '$GIT_MERGETOOL_GUI' may be set to 'true'
+	to search for the appropriate guitool.
 
 get_merge_tool_cmd::
 	returns the custom command for a merge tool.
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index 83bf52494c..5eedb1a08a 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -402,15 +402,21 @@ get_merge_tool_path () {
 	echo "$merge_tool_path"
 }
 
-get_merge_tool () {
+get_merge_tool_guessed () {
+	is_guessed=false
 	# Check if a merge tool has been configured
-	merge_tool=$(get_configured_merge_tool)
+	merge_tool=$(get_configured_merge_tool $GIT_MERGETOOL_GUI)
 	# Try to guess an appropriate merge tool if no tool has been set.
 	if test -z "$merge_tool"
 	then
 		merge_tool=$(guess_merge_tool) || exit
+		is_guessed=true
 	fi
-	echo "$merge_tool"
+	echo "$is_guessed:$merge_tool"
+}
+
+get_merge_tool () {
+	get_merge_tool_guessed | sed -e 's/^[a-z]*://'
 }
 
 mergetool_find_win32_cmd () {
diff --git a/git-mergetool.sh b/git-mergetool.sh
index 01b9ad59b2..63e4da1b2f 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -449,14 +449,9 @@ main () {
 
 	if test -z "$merge_tool"
 	then
-		# Check if a merge tool has been configured
-		merge_tool=$(get_configured_merge_tool $gui_tool)
-		# Try to guess an appropriate merge tool if no tool has been set.
-		if test -z "$merge_tool"
-		then
-			merge_tool=$(guess_merge_tool) || exit
-			guessed_merge_tool=true
-		fi
+		IFS=':' read guessed_merge_tool merge_tool <<-EOF
+		$(GIT_MERGETOOL_GUI=$gui_tool get_merge_tool_guessed)
+		EOF
 	fi
 	merge_keep_backup="$(git config --bool mergetool.keepBackup || echo true)"
 	merge_keep_temporaries="$(git config --bool mergetool.keepTemporaries || echo false)"
-- 
2.21.0.1000.g11cd861522


  parent reply	other threads:[~2019-04-23  8:54 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-22  5:07 [PATCH 0/5] difftool and mergetool improvements Denton Liu
2019-04-22  5:07 ` [PATCH 1/5] t7610: add mergetool --gui tests Denton Liu
2019-04-22  5:07 ` [PATCH 2/5] mergetool: use get_merge_tool function Denton Liu
2019-04-22  7:07   ` Eric Sunshine
2019-04-22  8:35     ` Denton Liu
2019-04-22  5:07 ` [PATCH 3/5] mergetool: fallback to tool when guitool unavailable Denton Liu
2019-04-22  5:07 ` [PATCH 4/5] difftool: make --gui, --tool and --extcmd exclusive Denton Liu
2019-04-22  7:03   ` Eric Sunshine
2019-04-22  5:07 ` [PATCH 5/5] difftool: fallback on merge.guitool Denton Liu
2019-04-22 18:18   ` Jeff Hostetler
2019-04-22 18:33     ` Denton Liu
2019-04-23  8:53 ` [PATCH v2 0/5] difftool and mergetool improvements Denton Liu
2019-04-23  8:53   ` [PATCH v2 1/5] t7610: add mergetool --gui tests Denton Liu
2019-04-24  7:07     ` Junio C Hamano
2019-04-23  8:54   ` Denton Liu [this message]
2019-04-24  7:27     ` [PATCH v2 2/5] mergetool: use get_merge_tool_guessed function Junio C Hamano
2019-04-23  8:54   ` [PATCH v2 3/5] mergetool: fallback to tool when guitool unavailable Denton Liu
2019-04-23  8:54   ` [PATCH v2 4/5] difftool: make --gui, --tool and --extcmd mutually exclusive Denton Liu
2019-04-23  8:54   ` [PATCH v2 5/5] difftool: fallback on merge.guitool Denton Liu
2019-04-24 22:46   ` [PATCH v3 0/6] difftool and mergetool improvements Denton Liu
2019-04-24 22:46     ` [PATCH v3 1/6] t7610: unsuppress output Denton Liu
2019-04-25  2:31       ` Junio C Hamano
2019-04-24 22:46     ` [PATCH v3 2/6] t7610: add mergetool --gui tests Denton Liu
2019-04-24 22:47     ` [PATCH v3 3/6] mergetool: use get_merge_tool function Denton Liu
2019-04-25  2:36       ` Junio C Hamano
2019-04-24 22:47     ` [PATCH v3 4/6] mergetool: fallback to tool when guitool unavailable Denton Liu
2019-04-25  3:02       ` Junio C Hamano
2019-04-25  5:16         ` Denton Liu
2019-04-24 22:47     ` [PATCH v3 5/6] difftool: make --gui, --tool and --extcmd mutually exclusive Denton Liu
2019-04-24 22:47     ` [PATCH v3 6/6] difftool: fallback on merge.guitool Denton Liu
2019-04-25  3:10       ` Junio C Hamano
2019-04-25  9:54     ` [PATCH v4 0/6] difftool and mergetool improvements Denton Liu
2019-04-25  9:54       ` [PATCH v4 1/6] t7610: unsuppress output Denton Liu
2019-04-25  9:54       ` [PATCH v4 2/6] t7610: add mergetool --gui tests Denton Liu
2019-04-25  9:54       ` [PATCH v4 3/6] mergetool: use get_merge_tool function Denton Liu
2019-04-28 23:52         ` David Aguilar
2019-04-25  9:54       ` [PATCH v4 4/6] mergetool: fallback to tool when guitool unavailable Denton Liu
2019-04-28 23:56         ` David Aguilar
2019-04-25  9:54       ` [PATCH v4 5/6] difftool: make --gui, --tool and --extcmd mutually exclusive Denton Liu
2019-04-25  9:54       ` [PATCH v4 6/6] difftool: fallback on merge.guitool Denton Liu
2019-04-29  6:20       ` [PATCH v5 0/7] difftool and mergetool improvements Denton Liu
2019-04-29  6:21         ` [PATCH v5 1/7] t7610: unsuppress output Denton Liu
2019-04-29  6:21         ` [PATCH v5 2/7] t7610: add mergetool --gui tests Denton Liu
2019-04-29  6:21         ` [PATCH v5 3/7] mergetool: use get_merge_tool function Denton Liu
2019-04-29  6:21         ` [PATCH v5 4/7] mergetool--lib: create gui_mode function Denton Liu
2019-04-29  6:21         ` [PATCH v5 5/7] mergetool: fallback to tool when guitool unavailable Denton Liu
2019-04-29  6:21         ` [PATCH v5 6/7] difftool: make --gui, --tool and --extcmd mutually exclusive Denton Liu
2019-04-29  6:21         ` [PATCH v5 7/7] difftool: fallback on merge.guitool Denton Liu

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=e928db892e35bcb68fcdb52c9bf7158dbbb46616.1556009181.git.liu.denton@gmail.com \
    --to=liu.denton@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=davvid@gmail.com \
    --cc=git@jeffhostetler.com \
    --cc=git@vger.kernel.org \
    --cc=sunshine@sunshineco.com \
    /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).