git init - permissão gratuita negada no stick USB de 16GB

0

Estou usando o GIT em uma máquina com Windows 7 (64 bits) e tenho aprendido a usar o GIT para controlar meus arquivos.

Agora, quero poder criar um repositório --bare em um dispositivo externo (nesse caso, um pendrive de 16 GB), mas infelizmente, ao tentar criar um repositório --bare , recebo o seguinte erro:

f:/: Permission denied

Estou usando o programa GIT Bash que é instalado com o GIT em máquinas com Windows, portanto, esses são os comandos que estou digitando (também estou abrindo o programa como administrador, mantendo ctrl + shift quando abro)

cd /f
git init --bare
f:/: Permission denied

No entanto, se eu criar um repositório normal, ele funcionará bem:

cd /f
git init
Initialized empty repository in f:/.git/

Alguém pode esclarecer por que não posso criar um repositório --bare ?

Qualquer ajuda seria muito apreciada.

    
por Jake Lucas 06.04.2012 / 05:58

1 resposta

2

Sistemas UNIX, quando você tenta criar um diretório que já existe, retorna um erro "diretório já existe". O Windows retornará um erro "permissão negada" se você não puder criar o diretório se ele não existir, mesmo que ele já exista. Isso faz com que muitos programadores tenham problemas ao portar o código UNIX para o Windows.

Quando você tenta criar um repositório vazio como f:\ , a primeira coisa que o git faz é criar o diretório para armazená-lo. Espera que, se o diretório já existir, ele receba um erro "diretório já existe". No entanto, f:\ é uma unidade para o Windows. O Windows interpreta isso como o programa que está tentando criar uma unidade e nega a permissão git para fazer isso. Como git não entende essa peculiaridade do Windows, acha que não tem permissão para acessar o diretório.

A solução é criar o repositório em um subdiretório.

(E para aqueles que escrevem / mantêm git : Tentando criar um diretório para certificar-se de que existe e então abortar se você obtiver um erro é um comportamento errado . Se você estiver criando um diretório só para ter certeza de que existe e você falha - por qualquer motivo - você deve verificar se o diretório existe, o que causou muitos bugs em muitos programas diferentes (como este ) e, caramba, vocês devem saber disso agora.)

    
por 06.04.2012 / 06:22