SVN: Subversion
SVN是用来取代CVS的版本控制工具
svn on Windows
Client
TortoiseSVN, 用法跟TortoiseCVS差不多,与Explorer集成,用起来很方便,这里就不多说了:)
Server
SVN的Server有Standalone和与Apache结合两种方式,由于后一种需要Apache2,所以我用的是Standalone方式。
- 首先,下载官方命令行工具并安装;
- 在本机上建立一个目录作为所有repo的根目录,我用的是D:\svnroot
- 在根目录上建立repo的子目录,比如D:\svnroot\project1
- 进入D:\svnroot\project1目录,使用TortoiseSVN的"Create Repository here..."功能,选择Berkeley DB,会在这里创建repo
- 进入创建好的conf目录(D:\svnroot\project1\conf),修改passwd和svnserve.conf文件,都是类似于ini的语法
- 都好了后就可以在命令行运行"svnserve -d -r D:/svnroot"来启动server了,其中-d表示daemon方式运行,-r表示以d:\svnroot作为根目录
- 如果想要作为系统服务,可以用第三方软件,我用的是FireDaemon Lite 1.6,现在官方已经不提供免费的Lite版本了,这里可以下载
这里需要注意的是:
- passwd里面是用明文存密码,而且貌似只有用apache才能存hash,这点有很多人骂,而且svn也不提供类似于CVS for NT提供的"cvs passwd"命令
SVN on console
- svn up -rVersion filename 可以回退到特定的版本,在此版本上继续编辑,ci以后版本号会从HEAD继续增加。
SVN repo的后台更改
SVN的repo的后台有两种格式:bdb(Berkeley DB)和fsfs(文件系统),而bdb又有很多版本,这些后台彼此都不兼容。
当要将已有的repo从一种后台转换成另一种后台(比如从bdb到fsfs,或者升级了本机bdb/svn的版本)的时候,可以使用下面的方法:
- 停止apache或者svnserve,防止数据写入
- 创建临时的新repo目录,使用新的后台
svnadmin create /path/to/new/repo --fs-type fsfs(or bdb)
- dump老repo并load到新的里面去,使用这个命令:
svnadmin dump /path/to/old/repo -q | svnadmin load /path/to/new/repo
- 如果是升级,上一步分成两步(先dump到文件,再从文件load)
- 检查一下老repo的hooks目录下有没有后来增加的文件(新repo里面没有的),若有则cp过去
- 用新repo替换掉老的,启动apache或者svnserve
- 如果确认无误,可以删除掉老的了