中文站:
http://www.subversion.org.cnSVN安装(UNIX下):
1. 去官方网站下tag.gz文件,tag.gz里包含了svn(subversion的客户端),svnserve(subversion自己的小型server,用于独立于apache使用),svnadmin(repository的管理工具)等
2. svn网络工作模式有两种:apache+mod_dav_svn和svnserve。
3. 新建一个系统用户svn:svn(username : group)
4. ./configure
这里不用设置path,是希望在任何时候使用svn(或相关的svnserve等)时,可以直接用到,因为默认的安装,将可执行文件放在了/usr/local/bin这个默认的PATH里了
5. make
6. make install
至此安装完毕。SVN 管理:
这一部分主要是指管理repository,使用svnadmin等。
首先使用svn登录系统。下面的操作都在svn的主目录里进行。
1. 使用
$ svnadmin help
$ svnserve help
可以查看svnadmin和svnserve的帮助信息。
2. 创建repository
2.1 可以把所有的项目都放在一个repos里,
/path/to/repos/ProjectA,
/path/to/repos/ProjectB
然后每个项目下再建立各自的trunk,branch,tag。这样的好处是对于svn使用时帐号的管理及其他一些hooks等可以共享,管理起来只需一次,代价是灵活性可能不够或者达到某种灵活性需要复杂配置。
也可以每个项目建立独立的repos
/path/to/ProjectArepos
/path/to/ProjectBrepos
当然每个下面也建自己的trunk,branch,tag等。这种设置的好处显然就是有足够的灵活性,但是管理工作就多一些,特别是当有几个项目的设置相同时,修改了一个,就要修改其他的。
2.2 使用
$ svnadmin create /path/to/repos
默认创建的是FSFS型的repos,还有BerkerleyDB型的,使用--fs-type来指定类型。
$ svnadmin create --fs-type fsfs /path/to/repos
$ svnadmin create --fs-type bdb /path/to/repos
现在假设项目名称叫MIS,建立repos如下:
$ svnadmin create –fs-type fsfs /home/svn/mis
这样svnadmin就生成了mis目录,其下还有许多辅助目录。
其中/home/svn/mis/conf是这个repos的配置文件存放的地方,/home/svn/mis/hooks是hooks脚本的存放位置。
3. 启动svnserve。使用
$ svnserve -d -r /home/svn
来启动svnserve。其中-d参数是让svnserve以deamon模式运行在后台,-r参数使得客户端只能访问到后面指定的目录以下的内容(这里是/home/svn下的内容)。
4. 设置访问用户名和口令
/home/svn/mis/conf里是mis这个repos的配置文件,svnserve.conf是主配置文件,默认的里面有(记得打开[general]前的注释,并且让[general]位于行首)
[general]
anon-access = read
auth-access = write
password-db = passwd
等
这里将anon-access的访问权限从read改为none,然后就可以在passwd(password-db指定的,这里位置为/home/svn/mis/conf/passwd)里配置帐号和口令了。
在/home/svn/mis/conf/passwd里[user]下加入下面一行
deller = dellerpwd
这样就可以用deller:dellerpwd来访问了。
关于配置文件的更多信息,可以参考
$ man svnserve.conf,
5. 项目中repos布局
根据实践经验,一个项目的生存周期也不是单线的,常常有一些分支(分支剧情?)或者稳定版发布或者特定功能的实验性加入等事件,repos的布局需要进行一定设计来支持这些“事件”。常见的布局是这样的
Project/trunk
Project/branches
Project/tags
trunk是项目主体存放位置
branches是项目的各种分支的存放
tag往往用于公开发布的版本的存档,类似与milestone。
建立这样的布局的方法有许多,svn-book上说可以用svn mkdir等命令逐一建立,然后提交。还有一个比较便捷的方法如下(使用svn import):
$ mkdir tmpdir
$ cd tmpdir
$ mkdir trunk
$ mkdir branches
$ mkdir tags
…
$ svn import . file:///path/to/repos --message 'Initial repository layout'
说明:
a. 这里仍然是按照前面的一个项目一个repos来做的,如果是多个项目共用一个repos时,就要在tmpdir下先建立这些项目,再在其下建立各自的trunk等
b. 注意最后的svn import一句中的file://这是不可少的,因为这个操作是在repos的服务器端,这样做Initial repository import时,可能svnserve没有启动,但是由于svn支持本地直接访问,所以可以完成,而这时,就是通过“file://”来告诉svn目前是在操作本地repos的,比如linux下,/home/svn/mis为一个repos,那么应该写为“file:///home/svn/mis”
6. repos的删除,注意不是清空。可能有svnadmin的命令吧,但其实只要删掉repos的目录就完全删除了,比如
$ rm -rf /home/svn/mis
7. 更多的管理功能包括:repos的查看(svnlook),repos的清除、恢复、备份、迁移(svnadmin)等主题。