From: pudinha <rogi@skylittlesystem.org>
To: git@vger.kernel.org
Cc: pudinha <rogi@skylittlesystem.org>
Subject: [PATCH v2 1/2] Refactor vimdiff and bc merge tool variants
Date: Sun, 19 Jul 2020 05:23:37 +0100 [thread overview]
Message-ID: <20200719042335.3913-2-rogi@skylittlesystem.org> (raw)
In-Reply-To: <20200718192001.27434-1-rogi@skylittlesystem.org>
The merge tools vimdiff2, vimdiff3, gvimdiff2, gvimdiff3 and bc3 are all
variants of the main tools vimdiff and bc. They are implemented in the
main and a one-liner script that just sources it exist for each.
This patch allows variants ending in [0-9] to be correctly wired without
the need for such one-liners, so instead of 5 scripts, only 1 (gvimdiff)
is needed.
---
git-mergetool--lib.sh | 28 +++++++++++++++++++++++-----
mergetools/bc | 5 +++++
mergetools/bc3 | 1 -
mergetools/gvimdiff2 | 1 -
mergetools/gvimdiff3 | 1 -
mergetools/vimdiff | 8 ++++++++
mergetools/vimdiff2 | 1 -
mergetools/vimdiff3 | 1 -
8 files changed, 36 insertions(+), 10 deletions(-)
delete mode 100644 mergetools/bc3
delete mode 100644 mergetools/gvimdiff2
delete mode 100644 mergetools/gvimdiff3
delete mode 100644 mergetools/vimdiff2
delete mode 100644 mergetools/vimdiff3
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index 204a5acd66..29fecc340f 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -43,7 +43,14 @@ show_tool_names () {
shown_any=
( cd "$MERGE_TOOLS_DIR" && ls ) | {
- while read toolname
+ while read scriptname
+ do
+ setup_tool "$scriptname" 2>/dev/null
+ variants="$variants$(list_tool_variants)\n"
+ done
+ variants="$(echo "$variants" | sort | uniq)"
+
+ for toolname in $variants
do
if setup_tool "$toolname" 2>/dev/null &&
(eval "$condition" "$toolname")
@@ -157,6 +164,10 @@ setup_tool () {
echo "$1"
}
+ list_tool_variants () {
+ echo "$tool"
+ }
+
# Most tools' exit codes cannot be trusted, so By default we ignore
# their exit code and check the merged file's modification time in
# check_unchanged() to determine whether or not the merge was
@@ -178,19 +189,26 @@ setup_tool () {
false
}
-
- if ! test -f "$MERGE_TOOLS_DIR/$tool"
+ if test -f "$MERGE_TOOLS_DIR/$tool"
then
+ . "$MERGE_TOOLS_DIR/$tool"
+ elif test -f "$MERGE_TOOLS_DIR/${tool%[0-9]}"
+ then
+ . "$MERGE_TOOLS_DIR/${tool%[0-9]}"
+ else
setup_user_tool
return $?
fi
- # Load the redefined functions
- . "$MERGE_TOOLS_DIR/$tool"
# Now let the user override the default command for the tool. If
# they have not done so then this will return 1 which we ignore.
setup_user_tool
+ if ! list_tool_variants | grep -q "^$tool$"
+ then
+ return 1
+ fi
+
if merge_mode && ! can_merge
then
echo "error: '$tool' can not be used to resolve merges" >&2
diff --git a/mergetools/bc b/mergetools/bc
index 3a69e60faa..a89086ee72 100644
--- a/mergetools/bc
+++ b/mergetools/bc
@@ -21,3 +21,8 @@ translate_merge_tool_path() {
echo bcompare
fi
}
+
+list_tool_variants () {
+ echo bc
+ echo bc3
+}
diff --git a/mergetools/bc3 b/mergetools/bc3
deleted file mode 100644
index 5d8dd48184..0000000000
--- a/mergetools/bc3
+++ /dev/null
@@ -1 +0,0 @@
-. "$MERGE_TOOLS_DIR/bc"
diff --git a/mergetools/gvimdiff2 b/mergetools/gvimdiff2
deleted file mode 100644
index 04a5bb0ea8..0000000000
--- a/mergetools/gvimdiff2
+++ /dev/null
@@ -1 +0,0 @@
-. "$MERGE_TOOLS_DIR/vimdiff"
diff --git a/mergetools/gvimdiff3 b/mergetools/gvimdiff3
deleted file mode 100644
index 04a5bb0ea8..0000000000
--- a/mergetools/gvimdiff3
+++ /dev/null
@@ -1 +0,0 @@
-. "$MERGE_TOOLS_DIR/vimdiff"
diff --git a/mergetools/vimdiff b/mergetools/vimdiff
index 10d86f3e19..3925e1fc3e 100644
--- a/mergetools/vimdiff
+++ b/mergetools/vimdiff
@@ -46,3 +46,11 @@ translate_merge_tool_path() {
exit_code_trustable () {
true
}
+
+list_tool_variants () {
+ for prefix in '' g; do
+ for suffix in '' 2 3; do
+ echo "${prefix}vimdiff${suffix}"
+ done
+ done
+}
diff --git a/mergetools/vimdiff2 b/mergetools/vimdiff2
deleted file mode 100644
index 04a5bb0ea8..0000000000
--- a/mergetools/vimdiff2
+++ /dev/null
@@ -1 +0,0 @@
-. "$MERGE_TOOLS_DIR/vimdiff"
diff --git a/mergetools/vimdiff3 b/mergetools/vimdiff3
deleted file mode 100644
index 04a5bb0ea8..0000000000
--- a/mergetools/vimdiff3
+++ /dev/null
@@ -1 +0,0 @@
-. "$MERGE_TOOLS_DIR/vimdiff"
--
2.27.0
next prev parent reply other threads:[~2020-07-19 4:28 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-18 19:20 [PATCH] Support nvim as mergetool pudinha
2020-07-18 20:30 ` Junio C Hamano
2020-07-19 4:23 ` [PATCH v2 0/2] Support nvim as merge tool pudinha
2020-07-29 21:31 ` [PATCH v3 0/2] mergetools: add support for nvimdiff (neovim) family pudinha
2020-07-29 21:31 ` [PATCH v3 1/2] mergetool--lib: improve support for vimdiff-style tool variants pudinha
2020-07-29 21:31 ` [PATCH v3 2/2] mergetools: add support for nvimdiff (neovim) family pudinha
2020-07-19 4:23 ` pudinha [this message]
2020-07-20 18:51 ` [PATCH v2 1/2] Refactor vimdiff and bc merge tool variants Junio C Hamano
2020-07-19 4:23 ` [PATCH v2 2/2] Support nvim as merge tool pudinha
2020-07-20 18:52 ` Junio C Hamano
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=20200719042335.3913-2-rogi@skylittlesystem.org \
--to=rogi@skylittlesystem.org \
--cc=git@vger.kernel.org \
/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).