2008-03-18

使用Subversion作为版本控制工具

1、架设服务器
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 下载最新的subverion 安装程序,最新版本为1.4.6
http://tortoisesvn.net/downloads 下载最新的TortoiseSVN,最新版本为1.4.8
安装svn,tsvn
创建版本库(如果单纯用作服务器的话,tsvn不是必须的,可以通过svnadmin create myreop 命令来创建版本库,详见svnbook)
设置访问权限
打开myrepo\conf\svnserve.conf,作相应的修改
[general]
anon-access = read
password-db = passwd

添加用户
打开myrepo\conf\password,添加用户,设置密码
[users]
zhangsan= 123
lisa= 12345

【update 20091224】一般可按照如下配置
svnserve.conf:
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz

passwd:
[users]
harry = harryssecret

authz:
[groups]
#根目录下的所有资源
[/]
harry = rw

启动服务器
在命令行下输入
svnserve -d -r c:\myrepo
-d 后台模式
-r 服务器的根目录
方便起见,可保存为一个批处理文件

初始化版本库,两种方式
1导入方式
2签出空版本库,添加文件,签入
==================================
2、客户端
安装tsvn,重启(如果不需要命令行操作,不需要再另行安装svn)
在合适的(空)目录下右击,选择“svn checkout”
在“Url of repository” 中填写“svn://SeverName”,点击确定,即可得到一份拷贝

技巧、工具(不断添加):
优化TSVNCache.exe进程的I/O性能
tsvn的一个方便之处就是图标覆盖,可以随时在资源管理器里建设那些文件被修改了。但默认情况写TSVNCache进程会扫描整个硬盘,对于性能一般的电脑,这是很大的开销,一个办法是完全关闭tsvn的图标覆盖。另一个办法是只让tsvncache进程扫描WC 文件夹:
setting => Look and Feel => Icon Overlay
在Exclude Paths 里填入所有盘符,每行一个,例如
c:\*
d:\*
e:\*
f:\*
g:\*

在Include Path 里面填入 Working Copy 文件夹,例如
d:\myCopy\*
确定之后在任务管理器中杀死TSVNCache.exe进程,它会在需要的时候重新启动,之后电脑的性能就会有所提升了。
参见
Optimize Tortoise SVN Cache (TSVNCache.exe) Disk I/O

一个服务器,多个版本库
其实很简单,就是建立一个版本库文件夹,并把它作为服务器的根目录,所有的版本库建在此文件夹之下,例如,我们要在名为HAL9000的服务器上建立三个版本库:GreatDog, SmallCat, BraveGoat,,目录结构可以是这样:
D:\AllRepos\GreatDog
D:\AllRepos\SmallCat
D:\AllRepos\BraveGoat
启动服务器:
svnserve -d -r D:\AllRepos
GreatDog的地址:
svn://HAL9000/GreatDog
参见
One svnserve, multiple repositories

监视版本库的更新
如果是比较大的项目,可以修改hooks目录下的post-commit.tmpl,提交后发送邮件,具体参考这里,我还没有进行过此类设置,在此暂不详述
如果是比较小的项目,可以使用
SVN Notifier(项目主页)。这是个可以常驻通知区的简单但是很实用的小程序,可以监视版本库的变动也可以作为工作目录的快速入口,进行更新,提交等操作。如果有多个工作目录,可以把它们都添加进去,方便管理。需要安装svn,tsvn, .net framework 1.1

Update:
Coding Horror 上有一篇详尽的文章
Setting up Subversion on Windows
http://www.codinghorror.com/blog

Update 2008.4.22
Subversion visually explained in 30 sec
http://coding-time.blogspot.com/2008/04/subversion-visually-explained-in-30sec.html

No comments: