注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

早衰男的巢

大音希声 道隐无名

 
 
 

日志

 
 

VisualSVN+批处理:windows下实现svn提交自动更新php脚本  

2013-08-06 12:53:19|  分类: others note. |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

厌倦了每次修改PHP脚本后上传更新还要备份,于是研究了下用SVN做版本管理和发布。

原本“server”上有装TortoiseSVN(*后来发现非必须),找了下svn中文站,选了个简单易用的 VisualSVN做win服务器端。

image?

*安装配置过程略,版本库建好一个。

可以在笔记本上svn checkout 把源码都丢上去。

?

下一步来实现终端commit的时候服务器上webroot下的脚本也会同步更新一下。

用svn的hook机制用 post-commit来实现联动,visualsvn也提供了这个方法。

管理界面的版本库上右键菜单-属性-hooks 选中Post-commit hook,点[edit]按钮。

一开始不确定这里填写的内容用什么语法,所以还是简单点外部引用一个批处理好了(后来试验得知这里直接写DOS的批处理,不过调用也好简洁易理解)

image

下面来看批处理的内容

  1: @ECHO OFF
  2: "D:\Program Files\VisualSVN Server\bin\svn.exe" update "D:\svncodes\" --quiet --username USERNAME --password "PASSWORD"
  3: xcopy D:\svncodes E:\webroot /S /Y

第2行 D:\Program Files\VisualSVN Server\bin\svn.exe 是 visualsvn自带的一个命令行版本的svn,所以说不必安装其他客户端。这里运行的是update,我从其他地方提交了变更后,服务器上的这个目录也把变更了的文件更新一下的意思,自己替换 USERNAME 和 PASSWORD 为svn仓库的账号密码。
d:\svncodes是服务器上用来同步更新php脚本的一个存档路径,用命令行进行首次checkout的命令是

"D:\Program Files\VisualSVN Server\bin\svn.exe" co "http://127.0.0.1:8808/svn/pod" "D:\svncodes" -q --username USERNAME --password "PASSWORD"

端口号、路径、用户名、密码之类的自行替换。

第2行 把更新后的代码用xcopy复制到web目录。 参数 /S 是包含子目录 /Y 是无询问覆写已存在文件。

*为什么不直接把webroot用来做svn更新而要分两步更新后复制,这样就不会包括 .svn 的版本文件,安全些。

保存之后我们就可以测试一下,每次commit,web目录也被更新了。好耶。


**插曲**

一开始用TortoiseSVN来checkout了一个库,在运行批处理的时候报错..提示svn版本太低. 汗。

**后续** 更正两个问题

1. post-commit的时候会遇到权限不足的错误提示

svn: E155004: Working copy 'd:\svncodes' locked

svn: E200031: sqlite: attempt to write a readonly database

svn: E200031: sqlite: attempt to write a readonly database

svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)

向着unlock和cleanup的方向研究了很久..冤枉路。是因为visualsvn的服务以networkservice账号身份没有权限操作本地目录。参考 ( http://blog.sina.com.cn/s/blog_69265fe101017y0v.html )的办法解决。

2.向nas目录xcopy的时候提示“无效驱动器”或“访问遭到拒绝”

nas上运行的是linux samba 一开始是把文件共享目录映射为网络驱动器分配了一个逻辑盘符W:。用盘符作为目的路径..提示驱动器无效。后来目的路径改为 \\nas_IP\share_path 的真实路径后..还是提示访问遭到拒绝,不过奇怪的是虽然报错但文件还是复制成功的。虽然有点碍眼,也只能当做未解的谜暂时摆一边了,希望有高手帮忙提点一下可能是什么问题。

CDNR)R[R7QH7E5I)4GKGQ%M

参考文章:

XCOPY 详解 http://www.jb51.net/article/29055.htm

  评论这张
 
阅读(4388)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018