autorisation git init --bare refusée sur clé USB 16 Go

0

J'utilise GIT sur une machine Windows 7 (64 bits) et j'ai appris à utiliser GIT pour contrôler les versions de mes fichiers.

Maintenant, je veux pouvoir créer un --bareréférentiel sur un périphérique externe (dans ce cas, une clé USB de 16 Go), mais malheureusement, lorsque j'essaie de créer un --bareréférentiel, le message d' erreur suivant s'affiche:

f:/: Permission denied

J'utilise le programme GIT Bash qui est installé avec GIT sur les machines Windows. Ce sont donc les commandes que je tape (j'ouvre également le programme en tant qu'administrateur en maintenant Ctrl + Maj enfoncé.)

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

Cependant, si je crée un référentiel normal, cela fonctionne parfaitement:

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

Quelqu'un peut-il expliquer pourquoi je ne peux pas créer de --bareréférentiel?

Toute aide serait très appréciée.

Jake Lucas
la source

Réponses:

2

Systèmes UNIX, lorsque vous essayez de créer un répertoire qui existe déjà, renvoyez une erreur "le répertoire existe déjà". Windows renverra une erreur "autorisation refusée" si vous ne pouvez pas créer le répertoire s'il n'existait pas, même s'il existe déjà. Cela pose des problèmes à beaucoup de programmeurs lorsqu'ils portent le code UNIX sous Windows.

Lorsque vous essayez de créer un référentiel nu en tant que f:\, la première chose à gitfaire est de créer le répertoire pour le stocker. Il est prévu que si le répertoire existe déjà, il obtiendra une erreur "le répertoire existe déjà". Cependant, f:\est un lecteur de Windows. Windows interprète cela comme le programme essayant de créer un lecteur et refuse gitde le faire. Comme gitil ne comprend pas ce caprice de Windows, il pense ne pas avoir la permission d’accéder au répertoire.

La solution consiste à créer le référentiel dans un sous-répertoire.

(Et à ceux qui écrivent / maintiennent git: Essayer de créer un répertoire pour s’assurer qu’il existe, puis abandonner si vous obtenez une erreur est un comportement incorrect . Si vous créez un répertoire juste pour vous assurer qu’il existe et que vous échouez - pour tout raison - vous devriez alors vérifier si le répertoire existe, ce qui a causé de nombreux bugs dans de nombreux programmes (comme celui-ci ) et, bon sang, vous devriez le savoir maintenant.)

David Schwartz
la source
Je vous remercie! Je ne savais pas que git faisait les choses de cette façon (je viens juste de commencer à les utiliser). En tout cas, cela fonctionne maintenant, alors merci beaucoup pour votre aide.
Jake Lucas