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 0/5] difftool and mergetool improvements
Date: Tue, 23 Apr 2019 01:53:55 -0700 [thread overview]
Message-ID: <cover.1556009181.git.liu.denton@gmail.com> (raw)
In-Reply-To: <cover.1555880168.git.liu.denton@gmail.com>
Thanks for the review, Eric.
Hopefully, these changes have addressed the concerns that you've raised.
---
Changes since v1:
* Introduce get_merge_tool_guessed function instead of changing
get_merge_tool
* Remove unnecessary if-tower in mutual exclusivity logic
Denton Liu (5):
t7610: add mergetool --gui tests
mergetool: use get_merge_tool_guessed function
mergetool: fallback to tool when guitool unavailable
difftool: make --gui, --tool and --extcmd mutually exclusive
difftool: fallback on merge.guitool
Documentation/git-difftool.txt | 4 ++-
Documentation/git-mergetool--lib.txt | 9 +++++-
Documentation/git-mergetool.txt | 4 ++-
builtin/difftool.c | 13 ++++-----
git-mergetool--lib.sh | 39 ++++++++++++++++++--------
git-mergetool.sh | 11 ++------
t/t7610-mergetool.sh | 41 ++++++++++++++++++++++++++++
t/t7800-difftool.sh | 24 ++++++++++++++++
8 files changed, 114 insertions(+), 31 deletions(-)
Range-diff against v1:
1: 678f9b11fc = 1: 678f9b11fc t7610: add mergetool --gui tests
2: 692875cf4b ! 2: e928db892e mergetool: use get_merge_tool function
@@ -1,15 +1,19 @@
Author: Denton Liu <liu.denton@gmail.com>
- mergetool: use get_merge_tool function
+ mergetool: use get_merge_tool_guessed function
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.
- Rewrite `get_merge_tool` to return whether or not the tool was guessed
- 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.
+ 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>
@@ -17,38 +21,32 @@
--- a/Documentation/git-mergetool--lib.txt
+++ b/Documentation/git-mergetool--lib.txt
@@
+
FUNCTIONS
---------
- get_merge_tool::
-- returns a merge tool.
++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-difftool--helper.sh b/git-difftool--helper.sh
- --- a/git-difftool--helper.sh
- +++ b/git-difftool--helper.sh
-@@
- then
- merge_tool="$GIT_DIFF_TOOL"
- else
-- merge_tool="$(get_merge_tool)" || exit
-+ merge_tool="$(get_merge_tool | sed -e 's/^[a-z]*://')" || exit
- fi
- fi
-
-
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@
+ echo "$merge_tool_path"
}
- get_merge_tool () {
+-get_merge_tool () {
++get_merge_tool_guessed () {
+ is_guessed=false
# Check if a merge tool has been configured
- merge_tool=$(get_configured_merge_tool)
@@ -61,6 +59,10 @@
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 () {
@@ -81,7 +83,7 @@
- guessed_merge_tool=true
- fi
+ IFS=':' read guessed_merge_tool merge_tool <<-EOF
-+ $(GIT_MERGETOOL_GUI=$gui_tool get_merge_tool)
++ $(GIT_MERGETOOL_GUI=$gui_tool get_merge_tool_guessed)
+ EOF
fi
merge_keep_backup="$(git config --bool mergetool.keepBackup || echo true)"
3: de1b897a11 = 3: 24db1afeee mergetool: fallback to tool when guitool unavailable
4: a272594bd2 = 4: 6f65b5c913 difftool: make --gui, --tool and --extcmd mutually exclusive
5: 4fc3f84bad = 5: 5a24772219 difftool: fallback on merge.guitool
--
2.21.0.1000.g11cd861522
next prev 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 ` Denton Liu [this message]
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 ` [PATCH v2 2/5] mergetool: use get_merge_tool_guessed function Denton Liu
2019-04-24 7:27 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.