Git over samba - 无法写入 sha1 文件名 |没有权限
Posted
技术标签:
【中文标题】Git over samba - 无法写入 sha1 文件名 |没有权限【英文标题】:Git over samba - unable to write sha1 filename | Permission denied 【发布时间】:2011-04-19 06:34:08 【问题描述】:当我在 Windows 上使用 git over samba 共享时,当我想通过 git_extentions 或 tortoiseGIT 提交文件时出现错误。 错误是: 错误:无法写入 sha1 文件名 .git/objects/b4/e819f886bf31b67c42249a0eff8e8b16cf7622:权限被拒绝。 当我通过 ubuntu 服务器添加文件并提交文件时,它工作正常。 我也在一家银行工作。
我已经尝试过chmod 777 the whole .git folder
。
【问题讨论】:
samba 配置文件是什么样子的,用户和 git 期望的一样吗? 这个问题刚刚开始发生在我身上!我将 msysGit 更新为 v1.7.6.msysgit.0,但我通过 samba 共享连接到的服务器已打开 v1.7.2.1。 1. 我不知道我之前有哪个 msysGit 可以恢复测试。 2.所以将升级服务器版本,看看是否有帮助。 好的,这没有帮助。 v1.7.2.1 在我的服务器上运行。当我开始使用 PortableGit 做其他事情时,这一切都开始发生了,它也发生了! 【参考方案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(最新版本),你可以添加文件,但是你尝试提交时会报错。
【讨论】:
啊,这真是烦死我了!我只是在使用 PortableGit 和/或升级 mSysgit 后才开始遇到这个问题!【参考方案2】:以前在 Git/Samba 安装中以某种形式出现过此问题。不确定问题的根源是否已经确定:
http://code.google.com/p/msysgit/issues/detail?id=130#makechanges
更新:
看起来 git v. 1.7.3.3 已经解决了这个问题。
【讨论】:
我实际上更新了链接页面中提到的 samba,它对我有用。 code.google.com/p/msysgit/issues/detail?id=130#c21 我在我的服务器上使用 v1.7.6.msysgit.0 和 v1.7.2.1,但仍然看到这个!? 仍然在 Git-1.9.5-preview20141217 上遇到问题 我在 TortoiseGit 1.8 上遇到问题,它使用 Git 2.7。【参考方案3】:好的,我找到了适合我的解决方案。
我在 samba 上使用 git (samba-common-3.0.33-3.7.el5) 已经很久没有问题了。
我把 git 升级到了Git-1.7.6-preview20110708,然后就完蛋了!
作为一个有条不紊的开发者,我没有写下我是从什么升级而来的!
所以我浏览了以前版本的列表,在Git-1.7.0.2-preview20100309 旁边看到了一个星号,有点老了,但是把它放上去......然后砰......它起作用了!
【讨论】:
两个链接现在都断开了。而apt-get install git=1.7.0.2
产生Version '1.7.0.2' for 'git' was not found
。现在呢?【参考方案4】:
我们今天开始使用 git。 1.7.10 版适用于 win7 机器。在 winXP 上,我们发生了给定的错误。对于那些我们降级到 1.7.0.2 的机器,正如 Ian 在他的帖子中所说,它现在可以工作了。
【讨论】:
【参考方案5】:可能 samba 会阻止点文件?为什么不使用 ssh 而不是 samba 来推送?
【讨论】:
点文件不会被阻止,在windows中被视为隐藏文件。你如何通过 ssh 推送?通过命令行提交文件工作正常。 我在 samba 上使用 git 因为我在 windows 上开发,但我的测试服务器是 ubuntu。这意味着我不必每次想要测试更改时都进行部署。【参考方案6】:就我而言,是 Windows 上的防病毒软件锁定了文件。暂时禁用杀毒软件解决了这个问题。
【讨论】:
【参考方案7】:我也通过here 回答了这个问题
在我的例子中,看起来 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
【讨论】:
以上是关于Git over samba - 无法写入 sha1 文件名 |没有权限的主要内容,如果未能解决你的问题,请参考以下文章
gpg无法签署致命的数据:无法写入提交对象[Git 2.10.0]
编译samba遇到need autoconf 2.53 or later to build samba from GIT
如图Samba Linux openwrt 没有写入权限 要怎么设置
WSL+samba+git:“错误:将对象添加到存储库数据库.git/objects的权限不足” / git-clone / git-add 权限错误