做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
输入密码即可