Как включить автозаполнение для псевдонима git-flow? - PullRequest
7 голосов
/ 17 января 2012

Это ломается

alias f='git flow feature'
complete -F __git_flow_feature f

Это работает в конце концов (после 2 «вкладок»), но выдает ошибку при каждом нажатии «вкладки».

-bash: [: 1: unary operator expected

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 22 января 2013

У меня тоже была эта проблема, и каждый поиск Google возвращал меня к этому сообщению.

Я публикую решение, которое я нашел, используя ответ Михала и комментарий Денита ...

Мой git-flow.bash был идентичным, но я думаю, что наши файлы завершения git могут отличаться.

Чтобы это исправить, мне пришлось изменить файл завершения git, расположенный по адресу /etc/bash_completion.d/git

Старый:

# __git_find_on_cmdline requires 1 argument
__git_find_on_cmdline ()
{
local word subcommand c=1
while [ $c -lt $cword ]; do
    word="${words[c]}"
    for subcommand in $1; do
        if [ "$subcommand" = "$word" ]; then
            echo "$subcommand"
            return
        fi
    done
    c=$((++c))
done
}

Новое:

# __git_find_on_cmdline requires 1 argument
__git_find_on_cmdline ()
{
local word subcommand c=1
while [[ $c -lt $cword ]]; do
    word="${words[c]}"
    for subcommand in $1; do
        if [ "$subcommand" = "$word" ]; then
            echo "$subcommand"
            return
        fi
    done
    c=$((++c))
done
}

Обратите внимание на двойную скобку, которую я должен был добавить к новому коду. Это было единственное изменение, которое я сделал.

2 голосов
/ 25 апреля 2014

Почему бы просто не использовать git-flow-complete ?Инструкции для bash :

$ cd /etc/bash_completion.d
$ sudo wget https://raw.githubusercontent.com/bobthecow/git-flow-completion/master/git-flow-completion.bash
$ exec $SHELL

, также есть инструкции для zsh или fish .

2 голосов
/ 17 января 2012

У меня работает, когда я делаю:

  1. wget http://www.triquanta.nl/sites/default/files/git-flow.bash
  2. источник git-flow.bash
  3. псевдоним f = 'Git Flow Feature'
  4. завершено -F __git_flow_feature f
  5. f вкладка вкладка

Как бы то ни было, наиболее распространенная причина ошибки "[: 1: ожидается унарный оператор" заключается в том, что в коде сценария оболочки есть такой код:

if [ 1 = $MYVAL ] 

и ваш MYVAL не установлен. Проверьте ваши функции завершения. Вы можете добавить set -x для его отладки.

Обычно самое простое решение - заключить переменную в кавычки, чтобы оператор получил пустой аргумент, но имел правильное количество аргументов:

if [ 1 = "$MYVAL" ] 
1 голос
/ 20 октября 2016

У меня есть псевдонимы:

alias gn="git-number"
alias gb="gn -c git blame"
alias ge="gn -c $EDITOR"
alias ga="gn add"
alias gr="gn -c git reset"
alias gap="EDITOR='$EDITOR -w' gn add -p"
alias gd="gn -c git diff -b -w --ignore-blank-lines"
alias gds="gd --staged"
alias gc="gn -c git checkout"
alias gcf="git flow feature checkout"
alias gl="gn -c git log -w -b -p --ignore-blank-lines"
alias gls="git log --stat"
alias cm="EDITOR='$EDITOR -w' git commit"
alias grb="git stash save 'REBASE' && EDITOR='$EDITOR -w' git rebase -i"
alias grbc="EDITOR='$EDITOR -w' git rebase --continue"

gcd() {
    test -n "$1" && cd $(dirname $(git list $1))
}

source ~/.git-completion.bash
__git_complete gn  _git
__git_complete ga  _git_add
__git_complete gap _git_add
__git_complete gd  _git_diff
__git_complete gds _git_diff
__git_complete gc  _git_checkout
__git_complete gcf _git_checkout
__git_complete gl  _git_log
__git_complete gls _git_log
__git_complete cm  _git_commit

source ~/.git-flow-completion.bash

И установите completion сценарии как:

wget -O ~/.git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
wget -O ~/.git-flow-completion.bash https://raw.githubusercontent.com/petervanderdoes/git-flow-completion/develop/git-flow-completion.bash    

Номер Git, указанный здесь: https://github.com/holygeek/git-number Просто скопируйте двоичные файлы в репо на ~/bin

...