之前我们写过怎么在宝塔linux面板搭建SVN控制系统的图文教程,我感觉在linux安装会很复杂,结果按照教程操作并不是很复杂,上周我们的项目需要重新搭建一个svn,这次是在windows下安装,第一个印象就是很简单啊,毕竟都是窗口界面,而且不需要敲代码就行了,结果被显示狠狠的打脸,,,安装的确简单,但是安装完成之后无法同步的web站点的目录,草率了,总结下过程把问题罗列出来,免得以后又双叒叕忘记了,不废话教程开始(教程有点长,已经安装完成的,可以忽略前部分)。
SVN服务端和客户端的安装
打开VisualSVN Server软件,点击下一步:
选择同意:
默认即可如图:
设置访问端口,是否启用https所以,如果需要就勾选https,本站测试未勾选:
还是下一步,感兴趣的可以使用翻译软件看看译文:
安装完成,如图:
安装完成之后新建项目,如图选择第一个即可:
安装选择第一个如图:
设置新建项目的名称:
选择第一个空白项目:
这个是权限,设置每个人都有写入和读取权限,默认就行,后期可修改。
如图,新建完成后会给出链接地址和项目基本信息:
项目新建完成,会给出项目IP地址和自拟的端口号,接下来我们需要新建用户,设置用户名称和密码:
设置完成后选择“Copy URL to Clipboard”第一个选选项,复制链接地址:
项目和用户都设置完成后,项目右键选择“Copy URL to Clipboard”,翻译中文就是“将URL复制到剪贴板”,一会能用到,最后安装“TortoiseSVN”客户端,这个安装不介绍了,一直下一步就行,然后不习惯英文的可以自行安装一个语言包,文件里面有,语言包安装也是下一步就行,没什么能介绍得啦,至此服务器端的安装和部署已经完成,这个还算是简单,并不是很复杂,如果你以为教程到此结束那就大错特错了,这些教程网上都有,也不至于我费劲长篇大论了,接下来才是重点,毕竟新建完成的SVN需要跟网站站点的目录关键才行。
SVN服务器与web站点的同步
我们在服务器端,网站目录下新建一个站点,如果是宝塔新建会自动生成目录,我们在根目录下继续选择“检出(Checkout)”,检出至目录,选择右侧“...”找到站点目录,如图
完成之后系统会提示目标文件夹非空,我们选择检出即可,会自动同步已有文件,提示检出完成。
然后刷新文件目录就是显示一个绿色对号图标,接下来打开SVN服务端,项目右键选择“Properties”
在弹出的新窗口点击“Hooks”然后双击“Post-commit hook”如图:
代码如下:
代码语言:javascript复制@echo off
SET REPOS=%1
SET REV=%2
SET DIR=%REPOS%/hooks
SET PATH=%PATH%;
SET WORKING_COPY=C:wwwrootceshisvn.cn
svn update %WORKING_COPY% --username ly --password 123456
目录“C:wwwrootceshisvn.cn”就是需要同步的站点目录,根据实际需求修改,最后的“ly”和“123456”是用户名和密码,设置完成之后,点击OK,重启SVN服务,点击svn server右键,选择“Restart”完成重启。如图:
打开网站根目录,右键选择更新,因为我们默认的站点有文件,需要提交更新,选择需要同步文件,我这里就一个文件,点击确定,如图:
会提示我们“svn: E155004: Run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)”错误,如图:
这时我们在空白处右键选择“Tortoise SVN”找到“清理”选项,点击,如图:
如图,我们勾选清理副本状态、破除写锁,点击确定:
系统提示“清理目录成功”。刷新文件都变成了绿色对号啦,但是在更新上传的时候还是会提示这个,但是不重要,毕竟我们不在服务器端操作,设置完成我们回到本机客户端,看好了是客户端,不是服务器端了。复制svn地址,然后检出目录自行设置,如图:
确定之后就会自动同步网站的内容(宝塔新建的站点默认的文件),点击OK,如图:
至此教程已完成,设置完成后目录已经可以同步到网站目录了,我们可以随意测试个文件,右键更新,提交即可,打开网站查看文件是否更新。至于服务器端的svn为什么还是显示锁定我也不太清楚,有知道的可以指导下,题外话,按照网上的直接“复制 hooks下的 post-commit.tmpl 模板,并修改后缀名为 .bat”然后添加同步的代码,我操作一直都提示“svn: E155007: None of the targets are working copies”失败,不晓得为什么,可能是我的姿势不对?好吧,不管他了,按照我的教程操作至少可以实现同步网站目录的,如有其他疑问留言反馈吧,谢谢!