实现svn副本同步的两种方法

由于项目需要将每个员工开发的程序实时更新到web站点目录,实现svn副本同步,有幸管理了一下svn。。^_^

查找了一些资料,普遍存在的一种方法是使用钩子原理。

至于该方法的原理,咱就不深究了。大致做法如下:

建立版本库,并在子目录hooks下新建批处理文件post-commit.bat,

文件内容为:

@echo off
SET REPOS=%1
SET REV=%2
SET DIR=%REPOS%/hooks
SET PATH=%PATH%;
SET WORKING_COPY=D:/workspace/vcmoa
svn update %WORKING_COPY% --username #### --password ####

(密码和帐户别照搬啊,写你自己的。)

 

至此,所有更新到达版本库后,都将自动被更新到web站点目录。

唯一的遗憾是,客户端上传的速度大大减小,对于几百M甚至几G的程序源码版本库,上传等待简直是一个折磨。

 

经过一番考虑,本人终于想出来一个笨方法,既可以将版本库更新到站点目录,又不影响每个人的上传速度。

处理如下:

建立批处理文件update.bat,内容为:

@echo off
echo 正在更新文件,请稍等......

svn update "D:/workspace/vcmoa" --username #### --password ###

echo 更新文件文件完成!

 

发现没有,就是直接使用update命令而已,不再关联什么钩子了。

当然,建立了bat文件后,还要结合windows系统的任务计划功能,把这个bat创建为一个计划,时隔5-10分钟(主要看项目大小、上传频率)。

至此,比较完美的一个同步方法算是成功设计好了。。

 

为什么只是比较完美呢?

如果项目有些特别的话,比如站点下某些文件会自动被站点容器修改的话,那么自动更新会失败!!

所以,还需要在更新之前先对站点目录进行清理(当然是clean up命令了)。修改bat文件如下:

@echo off
echo 正在解除锁定,请稍等......

svn cleanup "D:/workspace/vcmoa"

echo 正在更新文件,请稍等......

svn update "D:/workspace/vcmoa" --username #### --password ###

echo 更新文件文件完成!

 

这个是我个人实践出来的方法,很笨,但是很好用。。

以上"D:/workspace/vcmoa"是站点目录,根据实际修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值