搭建 SVN 服务器
安装、启动 SVN 服务器
在 Windows 下,可以使用以下命令将 SVN 服务注册到 windows 服务中去:
sc create svnserver binPath= "driver:\path\to\svnserve.exe --service -r x:/svnroot" DisplayName= "Svn Service" start= auto
也可以通过以下命令直接运行 svn 服务:
svnserve -d -r x:/svnroot
以上命令中,x:/svnroot 是仓库的根目录位置。
创建、配置 SVN 仓库
知道 SVN 仓库的启动之后,可以在 SVN 仓库的根目录下创建各个项目的仓库。命令如下:
cd x:\svnroota svnadmin create firstrep
这样就完成 firstrep 项目的仓库创建。接下来需要配置仓库的权限:
cd firstrep\conf notepad svnserve.conf
将其中的以下内容去掉注释:
# anon-access = read auth-access = write password-db = passwd # authz-db = authz # realm = My First Repository
如果需要详细配置用户的目录访问权限,需要将 authz-db 去掉注释。
以上配置中,各配置项的作用是:
- anon-access 设置匿名用户是否可以访问 SVN 仓库,访问权限是什么
- auth-access 设置认证用户是否可以访问 SVN 仓库,访问权限是什么
- password-db 设置认证用户的用户名及密码
- authz-db 设置认证用户对各个目录的访问权限
- realm 设置仓库所在的域
接下来在 password-db 中加入用户,可以参考配置该文件已有的格式:
[users] # harry = harryssecret # sally = sallyssecret username = password zhangsan = 123456
这样,就完成了一个项目的 SVN 仓库搭建,如果要搭建另外一个项目,同样在 x:/svnroot 目录下再次运行 svnadmin create 即可。当前所创建的 svn 仓库,其地址为:
svn://local.ip.com/firstrep
SVN 常用客户端命令
客户端配置
使用客户端,一般要在客户端进行编辑器的配置,以便于提交时使用适当的编辑器进行日志编辑。该类配置一般在以下目录中:
c:\Documents and Settings\Administrator\Application Data\Subversion C:\Users\Administrator\AppData\Roaming\Subversion ~/.subversion etc/subversion
目录中包含以下文件
README.txt auth* config servers
可以在 config 中配置如 editor, diff 等外部命令。比如,写提交日志的时候,就要用到指定的 editor,比较文件的时候,就要用到 diff
另外一点重要的是,如果要设置部分文件为非二进制的文件,需要在 auto-props 中指定。如,muse 文件可能会被 svn 认定为二进制文件,所以需要指定如下:
[miscellany] ...... enable-auto-props = yes ...... [auto-props] ...... *.muse = svn:eol-style=native;svn:mime-type=text/plain ......
初始化项目
初始化项目,实际上就是将一个没有进行版本管理的项目导入到 SVN 中进行版本管理。其命令举例如下:
svn import project_dir svn://ip.to.svn.com/firstrep/trunk
或者直接
svn import project_dir svn://ip.to.svn.com/firstrep
前后两者的区别是,前者将一个项目按习惯分为三个目录:
firstrep 项目目录 +- trunk 项目主干,项目的主要功能都放在这里 +- tags 项目标签,项目完成的里程碑版本复制到这里 \- branch 项目分支,项目发布之后,需要继续维护,放在这里
后者就直接将整个项目放在根目录下了。前者分为三个目录只是习惯或者最佳实践,其实自己可以根据需要决定怎么将文件放存放在各个目录中去。
开发项目
项目初始化完成之后,可以从仓库中取出项目进行开发,如,要将 trunk 中的代码取出放到 myproject 目录中去,可以执行以下命令:
svn co svn://ip.to.svn.com/firstrep/trunk myproject
在开发项目的过程中,最常用的有以下的命令:
# 从仓库中取出最新的版本 svn up # 提交当前修改到仓库中去 svn ci # 查看当前本地的状态,有哪些文件有变动 svn st # 查看本地的文件和仓库中的文件有什么区别 svn diff xyz.java # 查看本地文件与仓库中之前的一个版本有什么区别 svn diff -rPREV xyz.java # 用仓库中的文件覆盖本地的文件 svn revert xyz.java # 查看最近10次提交了哪些文件 svn log -l 10 -v # 查看从 2012-5-3 之后的提交日志 svn log -r{2012-5-3}:HEAD # 查看这个文件的各行是由谁编辑的 svn ann xyz.java # 设置当前文件夹中 lib 目录不进行版本管理 svn ps svn:ignore lib . # 查看当前文件夹中有哪些文件没有进行版本管理(忽略) svn pg svn:ignore . # 将本地文件更新到之前的第 23 个版本 svn up -r23 # 将文件合并到前一个版本 svn merge -rHEAD:PREV xyz.java svn diff -rPREV xyz.java