您的位置:首页 > 其它

git remote warning unable to unlink [FILENAME] Permission denied

2017-12-29 19:19 591 查看
前言

有同事反馈创建分支时出现了错误,查看walle日志发现报错如下

[www@springboard MainWeb]$ git push origin  newer
Total 0 (delta 0), reused 0 (delta 0)
remote: warning: unable to unlink application/folder/index.html: Permission denied
remote: warning: unable to unlink application/service/AppExternalservice.php: Permission denied
remote: warning: unable to unlink application/service/UserNotifyService.php: Permission denied
remote: warning: unable to unlink application/views/company/qad/adminShow.php: Permission denied
remote: warning: unable to unlink source/js/360ctf/ictf-competition.js: Permission denied
remote: fatal: cannot create directory at 'application/controllers/commands/shell/ai': Permission denied
To git@192.168.10.201:/home/git/workshop/MainWeb.git
* [new branch]      newer -> newer


这里有几点需要注意下

1、用户为www,不是root

2、涉及到push时才会有此报错

分析

一开始以为是php执行命令时权限有问题,因为执行php命令的用户是www,所以可以直接在www用户下执行相关命令,执行相关命令后和日志中打印的情况一样,

1、到这里就查google了,查了半天也没有结果,大多数都是权限的问题,但是在这里修改权限后并没有解决问题,

2、用其它的仓库做测试,没有发现此类问题,这里就挑选了一个权限控制比较严格的仓库,然后在远程克隆后,做提交测试没有发现异常

3、在网上继续查阅的时候,发现有网友有遇到类似的问题的时候和服务器端的hook有关,然后就做了以下测试

a、对比发现,两个仓库确实一个有hook文件,post-receive,这就是一个shell脚本,和客户端推送有送的,即远程客户端有推送操作,就会自动执行此脚本,而另外一个idme钩子脚本

b、将钩子文件暂时挪走后,再测试,一切正常

4、到这里问题就比较明朗了,和钩子有关

5、从报错信息来看,只能和权限相关,再联想到钩子文件,惟一可能有关联的就是钩子文件里面涉及到的路径(因为一般情况就是,有合并master操作,然后把master分支代码拉到指定的位置)

6、测试后发现问题奇迹般的解决了

到这里,其实也不怨git,因为他只知道报错了,但是不记录执行那个步骤时出错了,因为执行相关的操作没有问题,但是就是有报错信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐