git init - на USB-накопителе 16 ГБ отказано в разрешении

0

Я использую GIT на компьютере с Windows 7 (64-разрядной) и изучаю, как использовать GIT для контроля версий моих файлов.

Теперь я хочу иметь возможность создать --bareрепозиторий на внешнем устройстве (в данном случае флешка объемом 16 ГБ), но, к сожалению, когда я пытаюсь создать --bareрепозиторий на нем, я получаю следующую ошибку:

f:/: Permission denied

Я использую программу GIT Bash, которая устанавливается вместе с GIT на компьютерах с Windows, поэтому я ввожу эти команды (я также открываю программу как администратор, удерживая Ctrl + Shift при ее открытии)

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

Однако, если я создаю нормальный репозиторий, он работает просто отлично:

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

Кто-нибудь может пролить свет на то, почему я не могу создать --bareхранилище?

Любая помощь приветствуется.

Джейк Лукас
источник

Ответы:

2

Системы UNIX, когда вы пытаетесь создать каталог, который уже существует, возвращает ошибку «каталог уже существует». Windows вернет ошибку «Отказано в доступе», если вы не смогли создать каталог, если он не существует, даже если он на самом деле уже существует. Это создает проблемы для многих программистов, когда они переносят код UNIX в Windows.

Когда вы пытаетесь создать пустой репозиторий as f:\, первым делом gitсоздается каталог для его хранения. Ожидается, что если каталог уже существует, он получит ошибку «каталог уже существует». Тем не менее, f:\это диск для Windows. Windows интерпретирует это как программу, пытающуюся создать диск , и отказывает в gitразрешении на это. Поскольку gitон не понимает эту причуду Windows, он думает, что не имеет разрешения на доступ к каталогу.

Решение состоит в том, чтобы создать хранилище в подкаталоге.

(И тем, кто пишет / поддерживает git: Попытка создать каталог, чтобы убедиться, что он существует, а затем прерывание, если вы получаете сообщение об ошибке, является неправильным поведением. Если вы создаете каталог, просто чтобы убедиться, что он существует, и вы потерпели неудачу - для любого причина - вы должны проверить, существует ли каталог. Это вызвало много ошибок во многих различных программах (например, этой ), и, черт возьми, вы, ребята, должны знать это уже сейчас.)

Дэвид Шварц
источник
Спасибо! Я понятия не имел, что Git делал вещи таким образом (я только начал его использовать). В любом случае, это работает сейчас, поэтому большое спасибо за вашу помощь.
Джейк Лукас