git.vger.kernel.org archive mirror
 help / color / mirror / 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 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


  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 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).