Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
mergetool--lib: list user configured tools in '--tool-help'
author
John Keeping
<john@keeping.me.uk>
Wed, 30 Jan 2013 19:55:46 +0000
(19:55 +0000)
committer
Junio C Hamano
<gitster@pobox.com>
Sun, 3 Feb 2013 05:46:52 +0000
(21:46 -0800)
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-mergetool--lib.sh
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
17a1f1c
)
diff --git
a/git-mergetool--lib.sh
b/git-mergetool--lib.sh
index 293b8e8a9330a8f70afc659dc7e38cc1441db2a5..330b036ac931198aa1b6e93c3602d2a2cd38291c 100644
(file)
--- a/
git-mergetool--lib.sh
+++ b/
git-mergetool--lib.sh
@@
-19,9
+19,24
@@
is_available () {
type "$merge_tool_path" >/dev/null 2>&1
}
type "$merge_tool_path" >/dev/null 2>&1
}
+list_config_tools () {
+ section=$1
+ line_prefix=${2:-}
+
+ git config --get-regexp $section'\..*\.cmd' |
+ while read -r key value
+ do
+ toolname=${key#$section.}
+ toolname=${toolname%.cmd}
+
+ printf "%s%s\n" "$line_prefix" "$toolname"
+ done
+}
+
show_tool_names () {
condition=${1:-true} per_line_prefix=${2:-} preamble=${3:-}
not_found_msg=${4:-}
show_tool_names () {
condition=${1:-true} per_line_prefix=${2:-} preamble=${3:-}
not_found_msg=${4:-}
+ extra_content=${5:-}
shown_any=
( cd "$MERGE_TOOLS_DIR" && ls ) | {
shown_any=
( cd "$MERGE_TOOLS_DIR" && ls ) | {
@@
-40,6
+55,19
@@
show_tool_names () {
fi
done
fi
done
+ if test -n "$extra_content"
+ then
+ if test -n "$preamble"
+ then
+ # Note: no '\n' here since we don't want a
+ # blank line if there is no initial content.
+ printf "%s" "$preamble"
+ preamble=
+ fi
+ shown_any=yes
+ printf "\n%s\n" "$extra_content"
+ fi
+
if test -n "$preamble" && test -n "$not_found_msg"
then
printf "%s\n" "$not_found_msg"
if test -n "$preamble" && test -n "$not_found_msg"
then
printf "%s\n" "$not_found_msg"
@@
-254,9
+282,20
@@
show_tool_help () {
any_shown=no
cmd_name=${TOOL_MODE}tool
any_shown=no
cmd_name=${TOOL_MODE}tool
+ config_tools=$({
+ diff_mode && list_config_tools difftool "$tab$tab"
+ list_config_tools mergetool "$tab$tab"
+ } | sort)
+ extra_content=
+ if test -n "$config_tools"
+ then
+ extra_content="${tab}user-defined:${LF}$config_tools"
+ fi
+
show_tool_names 'mode_ok && is_available' "$tab$tab" \
"$tool_opt may be set to one of the following:" \
show_tool_names 'mode_ok && is_available' "$tab$tab" \
"$tool_opt may be set to one of the following:" \
- "No suitable tool for 'git $cmd_name --tool=<tool>' found." &&
+ "No suitable tool for 'git $cmd_name --tool=<tool>' found." \
+ "$extra_content" &&
any_shown=yes
show_tool_names 'mode_ok && ! is_available' "$tab$tab" \
any_shown=yes
show_tool_names 'mode_ok && ! is_available' "$tab$tab" \