Git не работает через AFP

У меня есть репозиторий git на файловом сервере, к которому я подключаюсь через AFP. Всякий раз, когда я пытаюсь выполнить операцию git в общем репозитории, например, создать файл, я получаю следующее сообщение об ошибке:

fatal: Unable to write new index file

Если я выполняю команду git на сервере, она работает нормально, поэтому есть что-то в совместном использовании репозитория через AFP, что не работает.

Я использую Mountain Lion как на сервере, так и на клиенте.

ОБНОВЛЯТЬ

Кажется, у меня есть разрешение на запись для обоих .gitи .git/index:

$ ls -ld .git
drwxr-xr-x  1 david  staff  364 Nov 29 22:38 .git/
$ ls -l .git/index
-rw-r--r--  1 david  staff  2232 Nov 29 21:45 .git/index
$ cp .git/index backup
$ echo change >> .git/index

Я попытался рекурсивно применить разрешения, .gitкак это было предложено в ответе ниже, но это не помогло:

$ chmod -Rv +w .git
$ git add deploy.js 
fatal: Unable to write new index file

Хм, похоже, что кто-то другой использует indexфайл:

$ cp .git/index backup; mv backup .git/index
mv: rename backup to .git/index: Resource busy

Но fuserи lsofне помогают:

$ fuser -fu .git/index
.git/index: 
$ lsof .git/index

Странный обходной путь: если я выполню следующую команду на сервере , это позволит мне записать новый indexфайл на клиенте через AFP.

$ cp .git/index backup; mv backup .git/index

Я полностью потерян в этот момент; любые новые теории?

Я бы предположил, что git обычно (лучше всего?) сохраняется на вашем локальном диске. Затем вы можете клонировать на сервер для резервного копирования или запустить другое репо в качестве сервера git.

Ответы (4)

Мы неоднократно сталкивались с одной и той же проблемой, особенно когда пытаемся использовать XCode 6. В настоящее время я меняю свое подключение к нашему серверу на WebDAV (подключение к нашему серверу через Finder> Перейти (меню)> Подключиться к серверу. . > https://localnetworkIP/userfolder/ ).

Это работает для нас (пока).

ОБНОВЛЕНИЕ: через несколько дней я заметил новую проблему с использованием WebDAV: файлы исчезали из поля зрения в Finder, из-за чего XCode/Git думал, что файл был удален. Просмотр сервера показал, что файлы все еще там.

Затем я изменил тип подключения на SMB. Это хорошо сработало для меня: Git больше не сталкивается с ошибками прав доступа к файлам, а Finder (OSX 10.10 Yosemite) не «теряет» файлы.

Ошибка указывает на то, что он не может писать в.git/index , что обычно означает, что он не может писать .gitи в него.

Убедитесь, что у вас есть разрешение, .gitи рекурсивно применяйте такие разрешения к содержимому папки и подпапок, а также к новым создаваемым файлам.

Хорошая догадка, но, кажется, у меня есть разрешение. Пожалуйста, смотрите обновление моего вопроса.

Я получаю это периодически, и ввод git status на удаленном хосте исправляет это для меня.

Спасибо, я больше не использую Git вместо AFP, но попробую вашу идею в следующий раз.

Хотя этот ответ может не удовлетворить ваши потребности, Mercurial без проблем работает с объемом AFP .

Я столкнулся с той же проблемой. Git — моя основная VCS, однако в этом случае у меня не было лучшего способа, чем перейти на Mercurial.

К счастью, переключение прошло легко, поскольку оба инструмента очень похожи в рамках базового использования.