14

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

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

4

7 回答 7

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(最新版本),你可以添加文件,但是当你尝试提交时会报错。

于 2010-10-30T22:25:21.440 回答
4

对于 Git/Samba 安装,以前曾以某种形式看到过此问题。不确定问题的根源是否已经确定:

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

更新:

看起来 git v. 1.7.3.3 已经解决了这个问题。

于 2010-11-01T23:35:44.860 回答
3

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

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

我将 git 升级到Git-1.7.6-preview20110708,一切都失败了!

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

所以我浏览了以前的版本列表,在Git-1.7.0.2-preview20100309旁边看到了一个星号,有点旧,但是把它放上去......然后砰......它起作用了!

于 2011-07-21T14:03:59.533 回答
1

我们今天开始使用 git。1.7.10 版适用于 win7 机器。在 winXP 上,我们发生了给定的错误。对于那些我们降级到 1.7.0.2 的机器,正如 Ian 在他的帖子中所说,它现在可以工作了。

于 2012-06-28T15:51:16.230 回答
0

可能 samba 会阻止点文件?为什么不使用 ssh 而不是 samba 进行推送?

于 2010-09-30T10:06:15.407 回答
0

就我而言,是 Windows 上的防病毒软件锁定了文件。暂时禁用防病毒软件解决了这个问题。

于 2013-09-25T14:28:37.137 回答
0

我也在这里回答了这个问题

就我而言,看起来 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

于 2015-12-14T05:38:51.670 回答