Git over samba - невозможно написать имя файла sha1 |Доступ запрещен - PullRequest
14 голосов
/ 30 сентября 2010

Когда я использую git через общий ресурс samba в Windows, я получаю сообщение об ошибке, когда хочу зафиксировать файл через git_extentions или tortoiseGIT. Ошибка: ошибка: невозможно записать имя файла sha1 .git / objects / b4 / e819f886bf31b67c42249a0eff8e8b16cf7622: разрешение отклонено . Когда я добавляю файл через сервер Ubuntu и фиксирую файл, он работает нормально. Я тоже работаю в банрах.

Я уже попробовал chmod 777 the whole .git folder.

Ответы [ 7 ]

5 голосов
/ 31 октября 2010

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

# 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 (последний выпуск), вы можете добавить файл, но при попытке зафиксировать вы получите ошибку.

4 голосов
/ 02 ноября 2010

Эта проблема была замечена ранее в той или иной форме для установок Git / Samba. Не уверен, что источник проблемы был еще указан:

http://code.google.com/p/msysgit/issues/detail?id=130#makechanges

Обновление:

похоже, что git v. 1.7.3.3 решил эту проблему.

3 голосов
/ 21 июля 2011

Хорошо, я нашел решение, которое сработало для меня.

Я использовал git over samba (samba-common-3.0.33-3.7.el5) целую вечность без проблем.

Я обновил git до Git-1.7.6-preview20110708 , и все пошло в гору!

Поскольку я такой методичный разработчик, я не записывал то, что обновил с!

Итак, я пошелпросмотрел список предыдущих выпусков и увидел звездочку рядом с Git-1.7.0.2-preview20100309 , так что немного староват, но наденьте это .... и грохните ... это работает!

1 голос
/ 28 июня 2012

мы начали использовать git сегодня.версия 1.7.10 была хороша для машин win7.На winXP у нас произошла данная ошибка.для этих машин мы понизились до 1.7.0.2, как сказал Ян в своем посте, и теперь это работает.

0 голосов
/ 14 декабря 2015

Я ответил на этот вопрос более чем здесь также

В моем случае, похоже, что 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

0 голосов
/ 25 сентября 2013

В моем случае это была антивирусная программа на Windows, блокирующая файл (ы). Временное отключение антивируса устранило проблему.

0 голосов
/ 30 сентября 2010

Возможно, самба блокирует дотфайлы?Почему бы не использовать ssh вместо samba для push?

...