SVN post-commit趟过的坑
在最近项目中,需要提交到服务器,由于服务器是新的,里面并没有安装SVN之类的,而且项目是两个人开发的,所以我就现在本地开发,等待开发成熟了,是复制上去的,于是噩梦开始了,当我次次调整代码的时候需要及时看到效果,于是每次都需要复制到服务器上,然后刷新观看。。。次数多了,心累了,导致了本地跟服务器上有些文件可能没复制上去,本地调试一点问题没有,服务器总有问题,上去一看,wc,代码不一样啊。算是半路搭建SVN环境。
服务器是window的,用到的SVN有 VisualSVN Server 和 小乌龟 。以前都是在本地装个小乌龟就可以了,服务器端的都是他人搭建好的。
两个软件都是一路向北的安装,除非对服务器上的版本库有调整路径的话。在服务器上同样安装了小乌龟,便于拉下来代码。
于是我的问题就接二连三的出现了。
1,SVN检出时,请求地址有效,但找不到请求的类型。
当我两个软件安装好之后,准备欢天喜地的开始上传,先Check out一下,于是出错了,这个时候我用的是从服务器上版本库复制来的URL。
几种可能性导致出现本错误。当我把ip地址换上后突然可以了,注意:仍然用的https,我试过http,还是错误。
于是本问题解决了。
2,post-commit问题
我需要在本地提交到版本库,然后在服务器中指定的WEB地址中在拉下来代码,时间长了感到好麻烦啊,于是想到了用钩子,这样就可以同步了。
在项目的版本库中hooks中添加了post-commit.bat
内部代码是
@echo off
SET REPOS=%1
SET USER=%2
SET SVN="C:\Program Files\VisualSVN Server\bin\svn.exe"
SET DIR="D:\phpStudy\WWW"
(call %SVN% update %DIR% --username xxx --password xxx --non-interactive)
只需要把 SVN 和 DIR 替换成自己服务器上的 VisualSVN Server 中 svn.exe 路径和项目的路径,然后添加管理者的用户名和密码就可以了。
当有代码在本地commit的时候就会调用这个 bat 然后就会同步到指定的项目目录中。
思想很丰满,现实很骨感。
error当我添加上 bat 后只要commit 都会有这两个错误,当我删除 bat 后就会出现, 于是去百度,最接近的一个是这篇文章,查看任务管理器,找到了 VisualSVN Server 的用户组是 SYSTEM ,并不是Administrator ,果断改掉。