我的配置文件 下载 http://www.caojunfei.com/file/svn-conf.rar
STEP 1:下载安装svn服务器
VisualSVN Server 可视化版本 http://www.visualsvn.com/server 可视化安装很容易
Win32Svn 命令行版本 http://sourceforge.net/projects/win32svn/
下面是命令行版本的配置及启动
STEP 2:创建储存库
安装完TortoiseSVN后提示要重启机器,其实启不启都可以正常使用了,首先创建SVN储存库(repository),可以选择命令行方式或者通过TortoiseSVN插件进行GUI操作,命令行运行如下:
svnadmin create E:svnrepository
e:svnrepository就是我指定的储存库目录,如果用GUI方式,可以在这个目录下点击右键选择[TotoiseSVN]->[Create Repository href…]进行创建,版本库模式指定为默认的即可。
repository 创建完毕后会在目录下生成若干个文件和文件夹,dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部 数据;db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;locks用来放置Subversion文件库锁定数据的目录, 用来追踪存取文件库的客户端;format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号;
STEP 3:配置
打开/conf/目录,打开svnserve.conf找到一下两句:
# [general]
# password-db = passwd
去之每行开头的#,其中第二行是指定身份验证的文件名,即passwd文件
同样打开passwd文件,将
# [users]
# harry = harryssecret
# sally = sallyssecret
这几行的开头#字符去掉,这是设置用户,一行一个,存储格式为“用户名 = 密码”,如可插入一行:admin = admin888,即为系统添加一个用户名为admin,密码为admin888的用户
STEP 4:运行SVN服务
在命令行执行
svnserve –daemon –root E:svnrepository
服务启动,–daemon可简写为-d,–root可简写为-r,可以建立一个批处理文件并放在windows启动组中便于开机就运行SVN服务,或者在这个地址http://clanlib.org/~mbn/svnservice/下载那个svnservice.exe文件,拷贝到E:svnbin目录下,再从命令行下执行:
svnservice -install –daemon –root “E:svnRepository”
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:windowsnotepad.exe” ,然后新开一个CMD窗口,执行
svn mkdir svn://localhost/myproject
随即关闭记事本打开的log文件窗口后按”c”键继续后生成项目 树。一般情况,我们在创建文件根路径后应该在创建三个目录:branches、tags、trunk,这三个目录是Subversion需要的三个目录。 对于check out、commit、update等操作可以通过svn命令行方式执行,也可以用TortoiseSVN的windows菜单完成,非常简单咯。
———————————————–
在这以上,基本按照它的说明,就能让svn正常运作.
自动更新的配置:
开发中经常要在更新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:WebsitesLatisse
svn update %WORKING_COPY% –username user –password pwd
此处的D:WebsitesLatisse即是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服务器目录并检出(这个目录就是测试员可以看的目录了,它会自动随着开发人员的更新而更新)
虽然钩子已经实现,但权限、用户组、目录结构架设等这方面仍然没有头绪。还好现在只是一个项目,留下官方说明文档,今后一步一步学习:
http://svndoc.iusesvn.com/svnbook/1.4/
附带一下linux下的勾子写法
原文 http://blog.csdn.net/lyjtynet/archive/2009/02/05/3864727.aspx
因为WEB程序环境和SVN在同一机器(Linux)上,开始一直使用 TortoiseSVN+FTP ,终于受不了烦琐的操作,实现了自动构建。
记录如下:
第一步:建立要构建的目录,也就是web程序目录 mkdir /home/testsvn
初始化 svn checkout testsvn /home/testsvn
第二步:在 repos/hooks/ 目录下新建 post-commit 文件
添加脚本内容如下
#!/bin/sh
SVN=/usr/bin/svn
TODIR=/home/testsvn #要更新的目录
$SVN update –username xxx –password xxx $TODIR
第二步也可以这样做:
拷贝版本库中hooks下的post-commit.tmpl为post-commit,并修改post-commit中的
代码:
REPOS="$1"
REV="$2"
commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
log-commit.py --repository "$REPOS" --revision "$REV"
为
代码:
SVN=/usr/local/subversion/bin/svn
WEB=/www/web
SVN update WEB
其中SVN=右边改成你实际的svn程序位置
WEB=右边改成你实际的web目录
第三步:让post-commit有执行的权限 chmod 777 post-commit
第四步:搞定,收工。