【环境】
OS: CentOS 6.5
Git: 1.7.1
【症状描述】
Git 中心仓库路径 ~/project.git,克隆库路径 ~/project.clone,克隆库中包含一个文件 ~/project.clone/sample.js 。
以 guest 账号登录服务器,在某个路径下执行 grunt,在克隆库目录下得到一个新的文件 ~/project.clone/sample.js。进入克隆库目录,执行 git commit ,提交成功,推送至中心库,返回错误提示 insufficient permission for adding an object to repository database 。
另外克隆一个库为 ~/project2.clone ,手动修改其中的 ~/project.clone/sample.js ,提交成功,推送成功。
由此可知,问题出在由 grunt 生成的 sample.js 文件。但 grunt 也是使用 guest 账号执行,双方权限一致,为什么会出现权限不足的情况,具体原因不详,只知道可能是用户组权限出了问题。
【解决方法】
进入中心仓库:cd ~/project.git
使用 sudo 更改目录权限:
$ sudo chmod -R g+ws * $ sudo chgrp -R <groupname> * $ git repo-config core.sharedRepository true
以上需要 sudo 权限,<groupname> 是指当前用户所处的用户组,可以使用 $ groups <username> 命令来查看。
再次执行 grunt ,提交成功,推送成功。