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