Git над samba - невозможно записать имя файла sha1 | Доступ запрещен
Когда я использую usig git через samba share на windows, я получаю сообщение об ошибке, когда я хочу зафиксировать файл через git_extentions или tortoiseGIT.
Ошибка:
Ошибка: невозможно записать имя файла sha1.git/objects/b4/e819f886bf31b67c42249a0eff8e8b16cf7622: Разрешение отклонено
Когда я добавляю файл через ubuntu-сервер и фиксирую файл, он отлично работает.
Я также работаю в банрах.
Я уже попробовал chmod 777 всю папку .git.
Ответы
Ответ 1
Я тоже это видел. Это дефект git, который может повлиять на то, как он создает и изменяет файлы. Чтобы прояснить проблему:
# mount a samba share locally.
$ mount -t cifs options //share/project /mnt/project
# The share contains a git checkout.
# Do some typical development.
$ cd /mnt/project
$ vi file ## ok
$ git pull ## ok
$ git status ## ok
$ git add file ## error!
error: unable to create temporary sha1 filename
.git/objects/8b/tmp_obj_mYE1Xi: Permission denied
## But everything from the shell seems to work.
$ ls -latr .git/objects/8b/ ## ok. empty dir.
$ touch .git/objects/8b/tmp_obj_mYE1Xi ## ok.
$ echo test123> .git/objects/8b/tmp_obj_mYE1Xi ## ok.
$ cat .git/objects/8b/tmp_obj_mYE1Xi ## ok.
test123
$ rm .git/objects/8b/tmp_obj_mYE1Xi ## ok.
В git версии 1.5.6.5 (последний пакет Debian) вы получите сообщение об ошибке при попытке git-add
. Если вы установите git 1.7.3.2 (последняя версия), вы можете добавить файл, но вы получите сообщение об ошибке при попытке совершить.
Ответ 2
Эта проблема была рассмотрена ранее в той или иной форме для установок Git/Samba. Не уверен, что источник проблемы еще не надел.
http://code.google.com/p/msysgit/issues/detail?id=130#makechanges
Update:
выглядит как git v. 1.7.3.3 разрешил эту проблему.
Ответ 3
Хорошо, я нашел решение, которое сработало для меня.
Я использую git над samba (samba-common-3.0.33-3.7.el5) на века без проблем.
Я обновил git до Git-1.7.6-preview20110708, и все это отправилось в банк!
Как я такой методический разработчик, я не записал то, что я обновил!
Итак, я просмотрел список предыдущих выпусков и увидел Звезду рядом с Git-1.7.0.2-preview20100309, поэтому немного устарел, но поставил это на.... и удар... он работает!
Ответ 4
мы начали использовать git сегодня. версия 1.7.10 отлично подходит для машин win7. на winXP произошла данная ошибка. для тех машин мы понизили до 1.7.0.2, как заявил Ян в своем посте, и теперь он работает.
Ответ 5
Возможно, samba блокирует dotfiles? Почему бы не использовать ssh вместо samba для нажатия?
Ответ 6
В моем случае это антивирусное программное обеспечение в Windows, блокирующее файл (ы). Временное отключение антивируса устраняет проблему.
Ответ 7
Я ответил на этот вопрос здесь, а также
В моем случае, похоже, что Git (v 2.6.3) попытался создать свои собственные права на чтение/запись на диске Samba. Это предотвратит получение файлов пакета и/или объектов (ошибка распаковки)
remote: error: unable to write sha1 filename ./objects/pack/pack-<some_hex_string>.pack: Permission denied
remote: fatal: cannot store pack file
error: unpack failed: index-pack abnormal exit
To z:\git\<repo name>
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs
Я пошел туда и обратно, пытаясь исправить ситуацию. Наконец, поскольку у меня был контроль над машиной Samba, я добавил строку в конфигурацию диска samba, в которой говорится: "Наследовать разрешения = да". Я перезапустил Samba и попытался нажать. Это сработало!
Это сработало для меня, так как я единственный человек, использующий сервер Samba. Для других у вас может быть игра с "режимом справочной системы" или "режимом создания силы". Вы можете найти страницы руководства для тех, кто здесь:
https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/AccessControls.html