做linux自动化运维SVN自动更新的时候,发现无法同步,只能登陆服务器运行svn co http://192.168.1.10/svn/debao才能更新,开发组那边windows机器执行post-commit的时候虽然提交到SVN服务器,但是无法自动在web服务器显示
1.第一次在web服务器checkout的时候,其中debao为SVN仓称,我用的是root超级用户,因为是服务器管理员。
2.我同事svn up的时候会报下面的错误,提示没有权限打开该文件.svn/lock
[root@lamp hooks]# ssh -p 60022 www@192.168.1.170 /usr/local/bin/svn update /home/wwwroot/debao www@192.168.1.170's password: svn: Can't open file '/home/wwwroot/debao/data/filecache/.svn/lock': Permission denied
3.用ll查看当前文件夹下的.svn文件时发现其所属组所有者为root
[root@as4-dev wwwroot]# ll debao/.svn total 28 -r--r--r-- 1 root root 143 Oct 28 12:27 all-wcprops -r--r--r-- 1 root root 313 Oct 28 12:27 entries -r--r--r-- 1 root root 2 Oct 28 12:25 format drwxr-xr-x 2 root root 4096 Oct 28 12:25 prop-base drwxr-xr-x 2 root root 4096 Oct 28 12:25 props drwxr-xr-x 2 root root 4096 Oct 28 12:27 text-base drwxr-xr-x 5 root root 4096 Oct 28 12:27 tmp
知道了问题的真正原因,就可以通过下面的方法解决Can't open file '.svn/lock': Permission denied的问题。
方法一:给目录加权限,www权限,这边www是组
chmod o+w .svn -R su - www svn up
方法二:是把.svn的属主属组修改给用户,svn up就可以了。
总结:SVN 出现“Can't open file '.svn/lock': Permission denied”问题原因是因为第一次checkout的时候是用root,使得其他用户没有权限,通过以上方法可以解决。
另外我是通过linux下SVN里面的post-commit来实现自动化SVN更新的
[root@lamp hooks]# cat /ec-channels/debao/hooks/post-commit | grep -v "#" /usr/local/sbin/debao.sh
[root@lamp hooks]# vim /usr/local/sbin/debao.sh ssh -p 60022 www@192.168.1.170 /usr/local/bin/svn update /home/wwwroot/debao
只需要修改debao.sh里面的www@192.168.1.170 修改成root@192.168.1.170 因为我刚开始的时候是用超级用户来checkout的。
另外复习了username使用SVN,指定SVNcheckout时的账号
svn co http://192.168.1.10/svn/debao --username=www
输入密码即可
还没有评论,快来抢沙发!