Git Alias 'Permission Denied'

1

Estou recebendo um erro de "permissão negada" em um alias do git. Ele funciona com root, mas não com minha conta de usuário:

$ andy@ubuntu:/usr/local/bin$ sudo git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
$ andy@ubuntu:/usr/local/bin$ git lg
    fatal: cannot exec 'git-lg': Permission denied
$ andy@ubuntu:/usr/local/bin$

Alguma idéia?

    
por andy 22.02.2013 / 14:56

2 respostas

4

Há uma entrada no seu $PATH apontando para um diretório que você não pode acessar, e você está usando uma versão do git anterior à 1.7.10.1.

Quando você executa git lg git, primeiro faz algumas configurações, incluindo adicionar uma entrada à cópia do $PATH que está usando. Em seguida, ele tenta executar o comando git-lg , para que um comando substitua o alias. Quando isso acontece, está recebendo o erro de permissão negada mostrado na sua saída.

Versões mais antigas do git paravam nesse ponto. A partir da versão 1.7.10.1, ele tratará esse erro da mesma forma que o comando não foi encontrado.

Quando você executou isso como root git foi capaz de olhar através de todos os diretórios no $PATH , veja se não existe nenhum comando git-lg , e então ele usaria o alias definido.

Para corrigir o problema, você pode atualizar para uma versão mais recente do git. A outra opção seria certificar-se de que você tem permissão para acessar todos os diretórios listados em seu $PATH , concedendo permissões adicionais em qualquer um que seja um problema ou não incluindo aqueles na lista.

    
por 22.02.2013 / 16:16
1

Para complementar a resposta do qqx ( link ).

Portanto, se você restringir o PATH a uma lista de caminhos para os quais você tem os direitos adequados, não há problema:

PATH=/usr/bin git lg

Ou mais persistentemente:

alias git='PATH=/usr/bin git'
git lg

Obrigado qqx

    
por 29.09.2017 / 14:01

Tags