Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: _git: Update __git_merge_strategies to work with new git.



2008/8/24 Clint Adams <clint@xxxxxxx>:
> On Sun, Aug 24, 2008 at 09:16:13PM +0200, Mikael Magnusson wrote:
>> The git-bundled bash completion doesn't exclude it at any rate.
>
> The other issue is that the git merge -s '' trick doesn't work outside
> of git directories.
>
> So maybe this is the way to go.
>
> Index: Completion/Unix/Command/_git
> ===================================================================
> RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_git,v
> retrieving revision 1.88
> diff -u -r1.88 _git
> --- Completion/Unix/Command/_git        21 Aug 2008 12:25:26 -0000      1.88
> +++ Completion/Unix/Command/_git        24 Aug 2008 19:40:39 -0000
> @@ -4039,12 +4039,14 @@
>
>  (( $+functions[__git_merge_strategies] )) ||
>  __git_merge_strategies () {
> -  declare -a merge_strategies_cache
> +  local expl
> +  local -a merge_strategies
>
> -  merge_strategies_cache=(${${=${${(M)${(f)"$(<$(git --exec-path)/git-merge)"}:#all_strategies*}##all_strategies=\'}%%\'}:#recur})
> +  if ! merge_strategies=(${=${${(M)${(f)"$(_call_program strategies git merge -s '' 2>&1)"}:#[Aa]vailable (custom )#strategies are: *}#[Aa]vailable (custom )#strategies are: }%.}); then
> +    merge_strategies=(${=${${(M)${(f)"$(<$(git --exec-path)/git-merge)"}:#all_strategies*}##all_strategies=\'}%%\'})
> +  fi
>
> -  local expl
> -  _wanted merge-strategies expl 'merge strategy' compadd - $merge_strategies_cache
> +  _wanted merge-strategies expl 'merge strategy' compadd -a merge_strategies "$@"
>  }
>
>  # TODO: Use this in more places.

git-merge is a binary in newer versions of git.


-- 
Mikael Magnusson



Messages sorted by: Reverse Date, Date, Thread, Author