Ошибка разрешения доступа Git при работе на удаленном хосте - PullRequest
0 голосов
/ 18 апреля 2009

Я пытаюсь поставить свой сайт под контроль версий. Я работаю напрямую на сервере с ExpanDrive, который использует MacFUSE для монтирования SFTP-подключения в качестве локального тома, к которому я могу получить доступ через терминал и другие локальные приложения.

В любом случае, все идет гладко, пока я не попытаюсь зафиксировать, когда получу это сообщение:

fatal: exec .git/hooks/pre-commit failed.

Если я пытаюсь запустить команду exec вручную, я вижу это:

-bash: /Volumes/1&1 Internet/website/.git/hooks/pre-commit: Permission denied
-bash: exec: /Volumes/1&1 Internet/website/.git/hooks/pre-commit: cannot execute: Unknown error: 0

Я пытался использовать свой SFTP-клиент, чтобы дать все в каталоге .git полные (777) разрешения, но все еще не повезло. Кто-нибудь знает что-нибудь еще, что я мог попробовать?

Ответы [ 4 ]

3 голосов
/ 19 апреля 2009

Предоставляя все права доступа в каталоге .git (777), вы включили все примеры сценариев, которые поставляются с Git, в .git / hooks, обычно с отключенными битами выполнения. Когда вы пытаетесь commit, теперь исполняемый пример сценария предварительной фиксации пытается запустить форматирование фиксации как патча.

Если это не то, что вы пытаетесь сделать, я предлагаю вам chmod / git / hooks / * to 644, чтобы сценарии ловушек не выполнялись.

Редактировать - Сброс разрешений перехвата возвращает вас к тому состоянию, в котором вы впервые столкнулись с проблемой. Затем попробуйте выполнить коммит с флагом --no-verify, который должен обойти хук предварительной фиксации (а также некоторые незначительные проверки сообщения коммита). Это может быть обходной путь, но я все еще не понимаю, почему у вас была первоначальная проблема. Код выглядит очень простым - я не понимаю, как он может попытаться выполнить этот хук, если он не включен. Если это не сработает таким же образом, то я думаю, что система ExpanDrive / MacFuse не обрабатывает разрешения должным образом (но это маловероятно).

1 голос
/ 17 октября 2009

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

1 голос
/ 09 мая 2009

Я закончил настраивать локальную среду разработки на своем ноутбуке, я разочаровался в попытке использовать git через ExpanDrive. Потратив на это больше времени, кажется, что эти инструменты просто не предназначены для совместной работы.

0 голосов
/ 31 августа 2012

У меня была такая же проблема. Я занимаюсь разработкой и тестированием на отдельном сервере разработки (devserver), а моя IDE (PhpStorm) - на моем Macbook. Я использую ExpanDrive для монтирования web-корня devserver через SFTP (SSH) на моем Mac. Когда я пытался использовать Git на своем Mac, я получал ошибки о файлах SHA1 и других вещах.

Я решил это так:

Я переместил .git каталог со смонтированного диска в /Volumes/devserver в папку в моем домашнем каталоге на моем Macbook. И после этого я связал старое местоположение с новым местоположением .git dir. Мне пришлось использовать ../../Users/jeroen/###, потому что в противном случае ссылка была неправильной.

Пример перемещения и создания символической ссылки:

cd  /Volumes/devserver
mkdir -p /Users/$USER/Code/devserver
mv .git /Users/$USER/Code/devserver/.git
ln -s ../../Users/$USER/Code/devserver/.git ./git
git status

При первом использовании команды "git" это может занять некоторое время, поскольку Git перестраивает некоторые кэши.

...