Git over samba - 无法写入sha1文件名|没有权限

时间:2010-09-30 09:53:24

标签: git ubuntu samba permission-denied

当我在Windows上使用git而不是samba共享时,当我想通过git_extentions或tortoiseGIT提交文件时出现错误。 错误是: 错误:无法写入sha1文件名.git / objects / b4 / e819f886bf31b67c42249a0eff8e8b16cf7622:权限被拒绝。 当我通过ubuntu服务器添加文件并提交文件时,它工作正常。 我也在做一个banrch。

我已经尝试过chmod 777 the whole .git folder

7 个答案:

答案 0 :(得分:5)

我也见过这个。这是一个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(最新版本),则可以添加该文件,但在尝试提交时会出现错误。

答案 1 :(得分:4)

以前以Git / Samba安装的某种形式出现过这个问题。不确定问题的根源是否已被指向:

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

<强>更新

看起来像git v.7.7.3.3解决了这个问题。

答案 2 :(得分:3)

好的,我找到了一个适合我的解决方案。

我一直在使用git over samba (samba-common-3.0.33-3.7.el5)多年没有问题。

我将git升级到Git-1.7.6-preview20110708,这一切都进入了底池!

由于我是一个有条不紊的开发人员,我没有写下我升级的内容!

所以我浏览了之前版本的列表,在Git-1.7.0.2-preview20100309旁边看到了一个星星,所以有点老了,但是把它放在......然后爆炸......它有效!

答案 3 :(得分:1)

我们今天开始使用git。版本1.7.10适用于win7机器。在winXP上我们发生了给定的错误。对于那些我们降级到1.7.0.2的机器,正如伊恩在他的帖子中所述,它现在有效。

答案 4 :(得分:0)

可能samba阻止了dotfiles?为什么不使用ssh而不是samba来推送?

答案 5 :(得分:0)

就我而言,Windows上的防病毒软件会锁定文件。暂时禁用反病毒修复了问题。

答案 6 :(得分:0)

我也在here上回答了这个问题

就我而言,看起来Git(v 2.6.3)试图在Samba驱动器上创建自己的读/写权限。这样可以防止打包文件和/或对象(解包错误)

'ally 1 = false'

'ally 2 = .25'

'ally 3 = false'

'ally 4 = false' ?

我在试图修复时来回走动。最后,由于我控制了Samba机器,我在samba驱动器配置中添加了一行,其中显示“inherit permissions = yes”。我重新启动了Samba并尝试推送。它奏效了!

这对我有用,因为我是唯一一个使用Samba服务器的人。对于其他人,您可以使用“强制目录模式”或“强制创建模式”。您可以在这里找到那些人的手册页:

https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/AccessControls.html