java向数据库添加错误,Git Push错误:没有足够的权限向存储库数据库添加对象

当我尝试推送到共享git远程时,出现以下错误: insufficient permission for adding an object to repository database

然后,我在此处了解到一个修复程序: 修复此操作适用于下一次推送,因为所有文件都属于正确的组,但是下次有人推送更改时,它将在具有默认组的对象文件夹中创建一个新项目作为组。 我唯一能想到的就是更改开发人员签入的所有项目的默认组,但这似乎是一种hack。 有任何想法吗? 谢谢。

#1楼

我遇到了同样的问题。 在这里阅读时,我意识到这是消息所指的文件权限。 对我来说,解决方法是:

/etc/inetd.d/git-gpv

它以用户“ nobody ”的身份启动git-daemon,因此缺少写许可权。

# Who When What

# GPV 20Nov13 Created this by hand while reading: http://linuxclues.blogspot.co.uk/2013/06>/git-daemon-ssh-create-repository-debian.html

# GPV 20Nov13 Changed owner (to user_git) otherise nobody lack permission to update the repository

#git stream tcp nowait nobody /usr/bin/git git daemon --inetd --verbose --enable=receive-pack --export-all /gitrepo

git stream tcp nowait user_git /usr/bin/git git daemon --inetd --verbose --enable=receive-pack --export-all /gitrepo

(我怀疑其他人是否将他们的inetd conf文件称为git-gpv。通常它直接位于/etc/inetd.conf中)

#2楼

添加一些东西后...提交它们,并完成所有推送! 砰!! 开始所有问题...您应该注意到,定义新项目和现有项目的方式有所不同。 如果其他人尝试添加/提交/推送相同的文件或内容(git将两个对象都保留为相同的对象),我们将面临以下错误:

$ git push

Counting objects: 31, done.

Delta compression using up to 2 threads.

Compressing objects: 100% (17/17), done.

Writing objects: 100% (21/21), 2.07 KiB | 0 bytes/s, done.

Total 21 (delta 12), reused 0 (delta 0)

remote: error: insufficient permission for adding an object to repository database ./objects remote: fatal: failed to write object

要解决此问题,您必须牢记操作系统的权限系统,因为在这种情况下会受到其限制。 Tu更好地了解了问题,请继续检查git对象的文件夹(.git / objects)。 您可能会看到类似的内容:

@ objects]$ ls -la

total 200

drwxr-xr-x 25 2048 Feb 10 09:28 .

drwxr-xr-x 3 1024 Feb 3 15:06 ..

drwxr-xr-x 2 1024 Jan 31 13:39 02

drwxr-xr-x 2 1024 Feb 3 13:24 08

*请注意,这些文件的权限仅授予您的用户,没有人永远无法更改它... *

Level u g o

Permission rwx r-x ---

Binary 111 101 000

Octal 7 5 0

解决问题

如果您具有超级用户权限,则可以使用第二步继续自己更改所有权限,在任何其他情况下,您都需要询问所有具有用其用户创建的对象的用户,请使用以下命令来知道他们是谁:

$ ls -la | awk '{print $3}' | sort -u

现在,您和所有文件的所有者用户都必须更改这些文件的权限,方法是:

$ chmod -R 774 .

之后,您将需要添加一个新属性,该属性与为新存储库完成的--shared = group等效,根据文档,这使存储库组可写,请执行以下操作:

$ git config core.sharedRepository group

#3楼

如果您与计划推送变更的用户以不同的用户身份运行git init ,则很容易发生这种情况。

如果您盲目地按照[1]上的说明进行操作,则可能是因为您可能以root用户身份创建了git-user,然后立即转到git init而不在其间更改用户。

#4楼

您需要对要推送到的目录有足够的写权限。

就我而言: Windows 2008服务器

右键单击git repo目录或父目录。

属性>共享选项卡>高级共享>权限>确保用户具有适当的访问权限。

#5楼

就我而言,这些建议都没有奏效。 我在Windows上,这对我有用:

将远程仓库复制到另一个文件夹

共享文件夹并给予适当的权限。

确保可以从本地计算机访问该文件夹。

将此仓库添加为本地仓库中的另一个远程仓库。 ( git remote add foo //SERVERNAME/path/to/copied/git )

推到foo。 git push foo master 。 奏效了吗? 大! 现在删除无法正常工作的存储库,并将其重命名为以前的版本。 确保权限和共享属性保持不变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值