SVN 配置自动更新WEB服务器

SVN 配置自动更新WEB服务器

最近有个小项目,须要用SVN来进行版本控制。 web

项目组的同僚有8我的,你们都在本地开发,而后提交到服务器——服务器就是其中一台机器。专门安排一个测试员来进行项目测试,但测试人员每次测试以前都须要去更新SVN,再拷贝到web服务器上,而后才能测试,这样很不方便。因此但愿当开发人员有更新时,代码若是能自动更新到web服务器上——这样不就省事了。 shell

我以往都是提交者,但此次轮到我来设置了,这里搜索到了一个教程,让个人安装配置过程很是顺利: windows

STEP 1:下载和安装

首先在Subversion的官方网站去下载windows安装包,最新版是1.3.1,惋惜在项目树上只更新到了1.3.0的二进制包
下载后安装在本地机器上,这里注意的是最好将安装目录指定为纯英文名目录,安装在中文目录下天知道哪天会冒出一个让你想破头也想不出的错误来。
下载TortoiseSVN进行本地安装,我安装的是最新的1.3.2 for svn 1.3.0,这是一个将SVN集成到windows shell中的GUI管理工具,推荐使用。 服务器

STEP 2:建立储存库

安装完TortoiseSVN后提示要重启机器,其实启不启均可以正常使用了,首先建立SVN储存库(repository),能够选择命令行方式或者经过TortoiseSVN插件进行GUI操做,命令行运行以下: 编辑器

svnadmin create E:\svn\repository

e:\svn\repository就是我指定的储存库目录,若是用GUI方式,能够在这个目录下点击右键选择[TotoiseSVN]->[Create Repository href...]进行建立,版本库模式指定为默认的便可。 svn

repository 建立完毕后会在目录下生成若干个文件和文件夹,dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;db目录就是全部版本控制的数据文件;hooks目录放置hook脚本文件的目录;locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号; 工具

STEP 3:配置

打开/conf/目录,打开svnserve.conf找到一下两句: post

# [general]
# password-db = passwd

去之每行开头的#,其中第二行是指定身份验证的文件名,即passwd文件
一样打开passwd文件,将 学习

# [users]
# harry = harryssecret
# sally = sallyssecret

这几行的开头#字符去掉,这是设置用户,一行一个,存储格式为“用户名 = 密码”,如可插入一行:admin = admin888,即为系统添加一个用户名为admin,密码为admin888的用户 测试

STEP 4:运行SVN服务

在命令行执行

svnserve --daemon --root E:\svn\repository

服务启动,--daemon可简写为-d,--root可简写为-r,能够创建一个批处理文件并放在windows启动组中便于开机就运行SVN服务,或者在这个地址http://clanlib.org/~mbn/svnservice/下载那个svnservice.exe文件,拷贝到E:\svn\bin目录下,再从命令行下执行:

svnservice -install --daemon --root "E:\svn\Repository"
sc config svnservice start= auto
net start svnservice

此文件会将SVN变成windows系统的一个服务,并默认为自启动,注意:执行第三句时确保前面以命令行方式运行的SVN服务已经中止,若是没中止可在其窗口中按Ctrl+C停止运行。

STEP 5:建立项目版本树

肯定SVN服务(命令行或windows服务)运行后,在你须要导入储存库的目录下单击右键选择[TortoiseSVN]-> [Import...],在弹开的窗口的URL框中输入 "svn://localhost/myproject" 点击 "OK" 执行导入,若是没有报错,数据就所有加入SVN储存库目录树上了。用命令行也能够完成这些操做,这须要你在系统变量中新建一个“SVN_EDITOR”的系统变量,变量值为本地的一个文本编辑器执行文件路径,通常指到windows的记事本上就好了 "c:\windows\notepad.exe" ,而后新开一个CMD窗口,执行

svn mkdir svn://localhost/myproject

随即关闭记事本打开的log文件窗口后按"c"键继续后生成项目树。通常状况,咱们在建立文件根路径后应该在建立三个目录:branches、 tags、trunk,这三个目录是Subversion须要的三个目录。对于check out、commit、update等操做能够经过svn命令行方式执行,也能够用TortoiseSVN的windows菜单完成,很是简单咯。

-----------------------------------------------

 在这以上,基本按照它的说明,就能让svn正常运做,但branches、tags、trunk三个目录的使用我尚未学习。

自动更新的配置:

开发中常常要在更新SVN的同时要更新WEB服务器。能够用过Subversion的钩子(Hook)来实现。

如下是Windows操做系统下的配置:

在SVN库的hooks目录下面新建post-commit.bat文件,用记事本打开,而后写入以下的代码:

@echo off

SET REPOS=%1
SET REV=%2

SET DIR=%REPOS%/hooks
SET PATH=%PATH%;

SET WORKING_COPY=D:\Websites\Latisse
svn update %WORKING_COPY% –username user –password pwd

此处的D:\Websites\Latisse便是WEB网站的目录(固然得先建好这个目录,而且从svn服务器上签出相应的项目)。

这样在用户提交完后,便会自动更新到WEB服务器上。

须要注意到问题是:

1.不要在WEB网站文件夹下做修改或其它操做,防止出现文件夹被锁。没法更新。

2.在这里我明确写明了用户名(user),密码(pwd)。在我设置时发现,若是没有设置的话会出现错误,在直接运行这个bat文件时是能正常执行的,可是,在Subversion提交后却不能正常运行。而且能够看到服务器进程中会出现cmd,svn两个进程,而且不会本身结束,而用户在提交内容到服务器后,会出现客户端没法正常返回的问题。

3.若是运行不能正常,能够经过下面的方法看到出错信息:

将刚才的post-commit.bat更名为post-commit-run.bat,而后再建一个post-commit.bat的文件,里面写入以下的代码:

call %~dp0post-commit-run.bat %* > %1/hooks/post-commit.log 2>&1

这样运行结果就会被写入到post-commit.log文件中,若是出错,也能够找到出错的缘由。

-------------------------------------------------------------------

总结一下:

svn的使用要点:

安装subversion

安装tortoiseSVN

建立储存库

导入(将须要版本控制的代码导入到储存库中)

检出(使用者将已经svn的代码检出到本身的地盘)

hooks钩子设置(将自动更新配置好)

建立web服务器目录并检出(这个目录就是测试员能够看的目录了,它会自动随着开发人员的更新而更新)

相关文章
相关标签/搜索