Re: [PATCH] mergetools: Simplify how we handle "vim" and "defaults"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Jan 26, 2013 at 4:12 AM, John Keeping <john@xxxxxxxxxxxxx> wrote:
> On Fri, Jan 25, 2013 at 10:50:58PM -0800, David Aguilar wrote:
>> Remove the exceptions for "vim" and "defaults" in the mergetool library
>> so that every filename in mergetools/ matches 1:1 with the name of a
>> valid built-in tool.
>>
>> Make common functions available in $MERGE_TOOLS_DIR/include/.
>>
>> Signed-off-by: David Aguilar <davvid@xxxxxxxxx>
>> ---
>>
>> diff --git a/Makefile b/Makefile
>> index f69979e..3bc6eb5 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -2724,7 +2724,7 @@ install: all
>>       $(INSTALL) $(install_bindir_programs) '$(DESTDIR_SQ)$(bindir_SQ)'
>>       $(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
>>       $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(mergetools_instdir_SQ)'
>> -     $(INSTALL) -m 644 mergetools/* '$(DESTDIR_SQ)$(mergetools_instdir_SQ)'
>> +     cp -R mergetools/* '$(DESTDIR_SQ)$(mergetools_instdir_SQ)'
>
> Shouldn't this be more like this?
>
>         $(INSTALL) -m 644 $(subst include,,$(wildcard mergetools/*)) \
>                 '$(DESTDIR_SQ)$(mergetools_instdir_SQ)'
>         $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(mergetools_instdir_SQ)/include'
>         $(INSTALL) -m 644 mergetools/include/* \
>                 '$(DESTDIR_SQ)$(mergetools_instdir_SQ)/include'
>
> I'm not sure creating an 'include' directory actually buys us much over
> declaring that 'vimdiff' is the real script and the others just source
> it.  Either way there is a single special entry in the mergetools
> directory.
>
>>  ifndef NO_GETTEXT
>>       $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(localedir_SQ)'
>>       (cd po/build/locale && $(TAR) cf - .) | \
>> diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
>> index aa38bd1..c866ed8 100644
>> --- a/git-mergetool--lib.sh
>> +++ b/git-mergetool--lib.sh
>> @@ -1,5 +1,7 @@
>>  #!/bin/sh
>>  # git-mergetool--lib is a library for common merge tool functions
>> +MERGE_TOOLS_DIR="$(git --exec-path)/mergetools"
>> +
>>  diff_mode() {
>>       test "$TOOL_MODE" = diff
>>  }
>> @@ -44,25 +46,14 @@ valid_tool () {
>>  }
>>
>>  setup_tool () {
>> -     case "$1" in
>> -     vim*|gvim*)
>> -             tool=vim
>> -             ;;
>> -     *)
>> -             tool="$1"
>> -             ;;
>> -     esac
>> -     mergetools="$(git --exec-path)/mergetools"
>> +     tool="$1"
>
> Unnecessary quoting.
>
>> -     # Load the default definitions
>> -     . "$mergetools/defaults"
>> -     if ! test -f "$mergetools/$tool"
>> +     if ! test -f "$MERGE_TOOLS_DIR/$tool"
>>       then
>>               return 1
>>       fi
>> -
>> -     # Load the redefined functions
>> -     . "$mergetools/$tool"
>> +     . "$MERGE_TOOLS_DIR/include/defaults.sh"
>> +     . "$MERGE_TOOLS_DIR/$tool"
>>
>>       if merge_mode && ! can_merge
>>       then
>> @@ -99,7 +90,7 @@ run_merge_tool () {
>>       base_present="$2"
>>       status=0
>>
>> -     # Bring tool-specific functions into scope
>> +     # Bring tool specific functions into scope
>
> This isn't related to this change (and I think tool-specific is more
> correct anyway).
>
>>       setup_tool "$1"
>>
>>       if merge_mode
>> @@ -177,18 +168,17 @@ list_merge_tool_candidates () {
>>  show_tool_help () {
>>       unavailable= available= LF='
>>  '
>> -
>> -     scriptlets="$(git --exec-path)"/mergetools
>> -     for i in "$scriptlets"/*
>> +     for i in "$MERGE_TOOLS_DIR"/*
>>       do
>> -             . "$scriptlets"/defaults
>> -             . "$i"
>> -
>> -             tool="$(basename "$i")"
>> -             if test "$tool" = "defaults"
>> +             if test -d "$i"
>>               then
>>                       continue
>> -             elif merge_mode && ! can_merge
>> +             fi
>> +
>> +             . "$MERGE_TOOLS_DIR"/include/defaults.sh
>> +             . "$i"
>> +
>> +             if merge_mode && ! can_merge
>>               then
>>                       continue
>>               elif diff_mode && ! can_diff
>> @@ -196,6 +186,7 @@ show_tool_help () {
>>                       continue
>>               fi
>
>
> I'd prefer to see my change to setup_tool done before this so that we
> can just use:
>
>         setup_tool "$tool" 2>/dev/null || continue
>
> for the above block.  I'll send a fixed version in a couple of minutes.


I'll reroll this patch with your notes on top of your new patch later today.

Thanks (and thanks for the Makefile hint.. I knew it was wrong! ;-).


>
>> +             tool=$(basename "$i")
>>               merge_tool_path=$(translate_merge_tool_path "$tool")
>>               if type "$merge_tool_path" >/dev/null 2>&1
>>               then
>> diff --git a/mergetools/gvimdiff b/mergetools/gvimdiff
>> new file mode 100644
>> index 0000000..f5890b1
>> --- /dev/null
>> +++ b/mergetools/gvimdiff
>> @@ -0,0 +1 @@
>> +. "$MERGE_TOOLS_DIR/include/vim.sh"
>> diff --git a/mergetools/gvimdiff2 b/mergetools/gvimdiff2
>> new file mode 100644
>> index 0000000..f5890b1
>> --- /dev/null
>> +++ b/mergetools/gvimdiff2
>> @@ -0,0 +1 @@
>> +. "$MERGE_TOOLS_DIR/include/vim.sh"
>> diff --git a/mergetools/defaults b/mergetools/include/defaults.sh
>> similarity index 100%
>> rename from mergetools/defaults
>> rename to mergetools/include/defaults.sh
>> diff --git a/mergetools/vim b/mergetools/include/vim.sh
>> similarity index 100%
>> rename from mergetools/vim
>> rename to mergetools/include/vim.sh
>> diff --git a/mergetools/vimdiff b/mergetools/vimdiff
>> new file mode 100644
>> index 0000000..f5890b1
>> --- /dev/null
>> +++ b/mergetools/vimdiff
>> @@ -0,0 +1 @@
>> +. "$MERGE_TOOLS_DIR/include/vim.sh"
>> diff --git a/mergetools/vimdiff2 b/mergetools/vimdiff2
>> new file mode 100644
>> index 0000000..f5890b1
>> --- /dev/null
>> +++ b/mergetools/vimdiff2
>> @@ -0,0 +1 @@
>> +. "$MERGE_TOOLS_DIR/include/vim.sh"



-- 
David
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]