SVN for RedHat 安装手册
SVN部署手册以及安装包

SVN 安装说明(编辑者:cxh )1 安装前准备(软件下载)需准备两个软件如:SVN 和Apache ,安装包如下(百度云盘);链接: /s/1P3Bo 密码: ryce2 安装软件2.1 先安装APACHE 服务器安装成功后到安装目录下找到conf 目录下的httpd.config 文件,搜索listen ,并将Listen 后面IP 和端口、Listen 后面端口改成你所需要的,然后重启Apache 服务器。
这时可用http ://ip:端口(IP 为服务器IP ,端口建议设置8888) 来测试是否安装正确,如果提示“It Works ”表示安装正确。
2.2 再安装SVN 服务器安装提示安装即可。
3 集成Apache 和SVN1.首先将SVN 安装目录bin\下面的两个文件:mod_authz_svn.so 和mod_dav_svn.so 复制到Apache 安装目录下modules\目录下;再将SVN 安装目录bin\下面的所有.dll 文件复制到Apache 安装目录bin\目录下。
——如果libapr-1.dll 这个文件无法复制,就到任务管理器中结束hppt.exe 进程即可2.需要再修改httpd.conf,并做如下修改:找到Apache 安装目录下的conf 目录,用文本编辑器打开httpd.conf,找到以下两行,将前面注释符“#”去掉: #LoadModule dav_module modules/mod_dav.so#LoadModule dav_fs_module modules/mod_dav_fs.so 3.然后再在LoadModule 语句的最后面添加几行:#SVNLoadModule dav_svn_module modules/mod_dav_svn.soLoadModule authz_svn_module modules/mod_authz_svn.so4.重启Apache 服务器,提示如图所示(变绿):5.建立一个SVN 存放文件的目录,如在C :/svn6.在httpd.conf 文件最后添加如下配置:#SVN<Location /svn>DAV svnSVNListParentPath onSVNParentPath "C:/svn"#SVNPath "C:/svn/logistics"####################认证的类型AuthType Basic####################认证的名称,显示于登录提示框AuthName "Subversion 资源库,请登录!"####################Which password file to use for authentication 存储用户登录信息的文件AuthUserFile C:\svn\passwd####################限定各个用户或组在版本库中目录的访问权限AuthzSVNAccessFile C:\svn\svnaccessfile####################让所有用户对版本库都有读的权限而只有特定的用户才有写的权限Require valid-user</Location>4建立用户与库4.1建立用户运行——cmd——cd+空格+Apache目录下bin的路径再回车就从命令行窗口中转到Apache所在bin目录下面:输入以下几行即可:htpasswd –m(c) c:\svn\passwd 用户名htpasswd -m(c) c:\svn\passwd cxh5#如果提示htpasswd不是内部命令……请查看防火墙是否关闭#htpasswd -m/C (c——第一次建用户时用C,后面建用户就用M) C:\svn\passwd 用户名4.2建立库运行——cmd——cd+空格+svn目录下bin的路径再回车就从命令行窗口中转到svn所在bin目录下面:输入以下几行即可:svnadmin create c:\svn\库名5授权在s v n中建立“s v n a c c e s s f i l e”文件;授权方式见文档。
SVN安装操作手册

SVN 操作手册安装SVN安装前的准备服务端VisualSVN-Server-1.0.3.msi客户端TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi 安装服务端安装1双击打开VisualSVN-Server-1.0.3.msi点击Next 进入下图选中I accept the terms in the license Agreement 点击Next 进入下图2选择安装路径选择Next 进入下图选择Install 进入下图上图表示正在安装,安装过后进入下图选择Finish 安装安成上图显示的就是安装完以后的SVN服务端安装客户端安装1 双击打开TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi 2点击Next进入下图3选中I accept the terms in the license Agreement 点击Next 进入下图4 点击Next 进入下图5 点击Install 进入下图6. 安装完成。
重新启动电脑7,安装完成如下图配制SVN 服务端操作1.打开服务端开始→程序→如下图点进击后进入下图2创建工程输入名称然后确定3创建用户进入下图选项进入后如下图单击add 进入下图点击Create user …进入下图输入用户名密码及确认密码,点击Create 用户建立完成. 进入下图点击ok 进入下图点击ok 创建用户,所有操作完成.客户端操作1初始化版本库进入下图选择类型点击ok 进入下图. 上图表示导入完成2导入项目2. 1项目右击2.2 点击Import 进入下图2.3输入用户名及密码2.4 点击ok后,会显示下图,表示正在导入中。
2.5 下图表示安装完成2.6点击ok 此时导入结束.3导出项目3.1在存放导出的文件夹上,右键单击3.2 点击进入下图3.3 点击ok 进入下图3.4 导出完成后。
进入下图表示:客户端版受本控制的文件及目录与svn服务端版本一至。
SVN安装配置教程

SVN安装配置教程SVN(Subversion)是一种版本控制系统,它能够管理并跟踪文件和目录的变更。
本文将介绍如何安装和配置SVN。
2.安装SVN3.创建SVN仓库SVN使用仓库(repository)来存储文件和目录的版本信息。
在安装完SVN后,你需要创建一个SVN仓库。
打开命令行终端,执行以下命令来创建一个空的SVN仓库:```svnadmin create /path/to/repository```注意,`/path/to/repository`是你想要创建的仓库的路径。
4.配置SVN仓库权限```# anon-access = none# auth-access = write```将`anon-access`的值改为`none`,将`auth-access`的值改为`write`。
这样只有认证用户才能访问仓库,并且具备写权限。
5.配置SVN用户认证```# password-db = passwd```然后创建一个名为`passwd`的文件,用于存储用户认证信息。
在`passwd`文件中添加用户名和密码,每行一个用户,格式为`username = password`。
6.启动SVN服务执行以下命令来启动SVN服务:```svnserve -d -r /path/to/repository```注意,`/path/to/repository`是你创建的SVN仓库的路径。
7.测试SVN连接在另一台机器上,使用SVN客户端工具连接到SVN服务器并检查是否能够正常访问仓库。
```svn co svn://hostname/path/to/repository```其中,`hostname`是SVN服务器的主机名,`/path/to/repository`是仓库的路径。
8.配置SVN客户端在SVN客户端上,你需要配置SVN用户认证信息,以便能够访问SVN 服务器。
在命令行终端中执行以下命令:```svn co svn://hostname/path/to/repository```该命令将提示你输入用户名和密码,以供认证使用。
SVN服务器安装手册

SVN服务器安装一、环境准备1、代理服务器由于Liunx服务器无法连接外网,因此需要进行连接代理服务器进行上网a)服务器ping本机(个人电脑)ok,使用本机(个人电脑)作为代理服务器,让linux联网b)下载CCProxy,个人电脑安装代理服务器并启动【如下图】2、yum源切换由于本机的yum源(rhel-source.repo)不好用,百度后需要切换新yum源(CentOS-Base.repo)切换路径:cd /etc/yum.repos.d/切换执行:mv rhel-source.repo /home/mv /home/ CentOS-Base.repo ./3、yum源配置代理配置yum代理:vim /etc/yum.conf#添加一下代理配置,如下图【ip+port】proxy=http://10.7.40.102:808proxy_username=DELLproxy_password=qiupeng配置网络代理: vim /root/.bashrcexport http_proxy="http://DELL:qiupeng@10.7.40.102:808"二、开始安装1.安装依赖yum -y install openssl-devel pcre-devel gcc gcc-c++ pcre-devel2.安装svn,安装成功如下图yum install subversion3.新建版本库cd /homemkdir svnsvnadmin create /home/svn/lakala4.启动SVN服务器svnserve -d -r /home/svn/lakala/5.查看SVN服务器lsof -i:36906.停止SVN服务器:killall svnserve7.SVN服务器配置SVN核心配置文件:/home/svn/lakala/conf /svnserve.confSVN权限控制:/home/svn/lakala/conf /authzSVN密码控制:/home/svn/lakala/conf /passwd⏹修改文件【vim /home/svn/lakala/conf /svnserve.conf】,将注释符【#】删除--无权限的人可读anon-access = read--有权限的人可写auth-access = write--密码文件password-db = passwd--授权文件authz-db = authz⏹修改文件【vim /home/svn/lakala/conf / authz】,新增admin组,修改admin组权限[groups]admin = qiupeng,testuser[/]@admin = rw* = r⏹修改文件【vim /home/svn/lakala/conf / passwd】,新增用户qiupeng、testuser,及密码[users]testuser = 123456qiupeng = 1234568.客户端连接SVN客户端输入【svn://10.7.111.11/lakala】,即可连接至SVN服务器三、错误解决1.报错提示”空间不足”错误提示”Insufficient space in download directory /var/cache/yum/x86_64/6Server/updates/packages“解决方法:执行命令【df -h】查看下磁盘使用情况,然后删除一些占空间的log和备份文件后重试2.报错提示”无法解析地址“错误提示:Couldn'n resolve host ''解决分析:本地ping一下'',取得对应的IP地址,在服务器中修改DNS和Hosts进行调试解决方法1:修改DNS,【vim /etc/resolv.conf】添加【nameserver 8.8.8.8】解决方法2:修改hosts,【vim /etc/hosts】添加【123.58.173.186 】【213.8.26.243 】3.报错提示”目标计算机拒绝,无法连接”解决分析:此问题肯定是SVN配置文件引起,请仔细查阅【二.开始安装—7.SVN服务器配置】,进行解决。
RedHat Linux下搭建SVN服务器完全手册

系统环境RHEL5.4最小化安装(关iptables,关selinux) + ssh + yum一,安装必须的软件包.yum install subversion (SVN服务器)mysql-server (用于codestriker)httpd mod_dav_svn mod_perl (用于支持WEB方式管理SVN服务器)sendmail (用于配置用户提交代码后发邮件提醒)wget gcc-c++ make unzip perl* (必备软件包)ntsysv vim-enhanced (可选)二,基本的SVN服务器配置1,新建一个目录用于存储SVN所有文件# mkdir /home/svn2,新建一个版本仓库# svnadmin create /home/svn/project3,初始化版本仓库中的目录# mkdir project project/server project/client project/test (建立临时目录)# svn import project/ file:///home/svn/project -m "初始化SVN目录"# rm -rf project (删除临时建立的目录)4,添加用户要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd文件添加一个形如“username=password"的条目就可以了.为了测试,我添加了如下内容:[users]# harry = harryssecret# sally = sallyssecretpm = pm_pwserver_group = server_pwclient_group = client_pwtest_group = test_pw5,修改用户访问策略/home/svn/project/conf/authz记录用户的访问策略,以下是参考:[groups]project_p = pmproject_s = server_groupproject_c = client_groupproject_t = test_group[project:/]@project_p = rw* =[project:/server]@project_p = rw@project_s = rw* =[project:/client]@project_p = rw@project_c = rw* =[project:/doc]@project_p = rw@project_s = rw@project_c = rw@project_t = rw* =以上信息表示,只有pm有根目录的读写权,server_group能访问server 目录,client_group能访问client目录,所有人都可以访问doc目录.6,修改svnserve.conf文件,让用户和策略配置升效.svnserve.conf内容如下:[general]anon-access = noneauth-access = writepassword-db = /home/svn/project/conf/passwdauthz-db = /home/svn/project/conf/authz7,启动服务器# svnserve -d -r /home/svn8,测试服务器# svn co svn://192.168.60.10/projectAuthentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18dPassword for 'root':Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18dUsername: server_groupPassword for 'server_group':svn: Authorization failed ( server_group没用根目录的访问权)# svn co svn://192.168.60.10/projectAuthentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18dPassword for 'root':Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18dUsername: pmPassword for 'pm':A project/testA project/serverA project/clientChecked out revision 1. ( 测试提取成功)# cd project/server# vim main.c# svn add main.c# svn commit main.c -m "测试一下我的C程序,看什么看,不行啊??"Adding main.cTransmitting file data .Committed revision 2. ( 测试提交成功)三,配置SVN服务器的HTTP支持1,转换SVN服务器的密码由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。
SVNforRedHat安装手册

SVNFORRedH安装与配置目录安装前准备1.1 系统检查与确认2.1.1. 系统启动方式文件尼tc/i ni ttabid:3:initdefault:其中3是指启动方式,安装后默认是5,但实际需要的是3.2.1.2. 确认内核版本#uname- a本机内是:Lin uxsv n#1SMPTueAug1815:51:48EDT2009x86_64x86_64x86_64GNU/Li nux2.1.3. 发行版本lsb_release - a目前本机安装版本是:(Tikanga)2.1.4. 确定主机名#host name本主机名目前是:svn2.1.5. 字符集将”尼tc/sysconfig/i18n ”内容改为1.2 Apacha检查与确认1.2.1. 检查apache是否安装#rpm-qhttpd1.2.2. 查看httpd是否启动#servicehttpdstatus重启httpd,查看启动是否正常#servicehttpdrestart刚安装的apache 一般都会报下列信息:说明:没有在文件中配置ServerName项#vi/etc/httpd/co nf/添加ServerName主机名(地址):端口/*端口缺省是80*/1.2.3. 查看apache所占的端口#n etstat —In p|grephttpdSVN服务器的安装2.1 安装2.1.1. 安装包清单postgresql-libs-2.1.2. 查询和安装安装这些包之前,检查一下这些安装包是否已经存在和它的版本例:#rpm - qapr没安装的, 用rpm 命令安装, 如#rpm - ivh/mnt/CentOS/ 注意:sqlite 安装#rpm-Uvh2.2 检查2.2.1. 安装版本#svnserve--version或#svn--version2.2.2. mod_dav_svn是SVN 与HTTP 通信的插件, 它需的配合。
SVN安装和使用说明

一、软件下载并安装1、服务器1 )下载Subversion 服务器端软件,网址:/。
在下载页面找到视窗系统NT, 2000, XP and 2003 ,然后点击相关连接进入即可下载,目前最新版本是svn-1.3.2-setup.exe 。
2 )下载后,运行svn-1.3.2-setup.exe 直到安装成功。
2、客户端1 )下载Subversion 的windows客户端程式TortoiseSVN 和中文语言包,网址:/。
目前最新版本是TortoiseSVN-1.3.5.6804-svn-1.3.2.msi 和LanguagePack-1.3.5.6804-win32-zh_CN.exe 。
2 )下载后,先运行TortoiseSVN-1.3.5.6804-svn-1.3.2.msi 安装程式,完成后,提示要重启计算机,选择“否”,运行中文语言包程式完成后再重启计算机。
安装完成后,会在右键菜单中增加相应的操作,如下图:二、建立版本库<>google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);运行Subversion 服务器需要首先要建立一个版本库(Repository ),能看作服务器上存放数据的数据库,有两种方法能建立版本库:1、命令行方法:在命令行模式下,运行svnadmin create f:\repository ,即可在F 盘下创建一个版本库repository 。
2、界面操作方法:在F:\repository 目录下,右键,选择TortoiseSVN 下的“在此创建文件库”,文件库类型选择默认的“本地文件系统(FSFS) ”,这样就会在该目录下创建一个版本库。
三、设置用户和权限1、在F:\repository\conf\svnserve.conf 文件中去掉# password-db = passwd 项前面的# 号和空格(空格一定要去掉,否则会报错)。
SVN安装配置手册简介

SVN安装配置手册1.路径说明1、svn地址是:218.57.***.**。
使用的是linux系统。
2.svn的安装在安装好linux系统的机器上安装SVN。
软件下载地址:http://the.earth.li/pub/subversion//pub/subversion/latest/redhat-9. 0/bin/下载Linux下的rpm格式安装文件。
下载如下内容:可以通过ssh将这些文件上传到Linux上。
subversion-server-1.3.2-1.rh90.i386.rpm是服务器程序,安装它,需要先安装以下包:apr-0.9.5-0.2.i386.rpmapr-util-0.9.5-0.1.i386.rpmhttpd-2.0.48-3.i386.rpmsubversion-1.3.2-1.rh90.i386.rpm而安装subversion-1.3.2-1.rh90.i386.rpm,需要先安装neon-0.24.7-1.i386.rpm。
所以,安装顺序如下:apr-0.9.5-0.2.i386.rpmapr-util-0.9.5-0.1.i386.rpmhttpd-2.0.48-3.i386.rpmneon-0.24.7-1.i386.rpmsubversion-1.3.2-1.rh90.i386.rpmsubversion-server-1.3.2-1.rh90.i386.rpm可以使用命令rpm –Uvh apr-0.9.5-0.2.i386.rpm进行安装,其它包类似。
rpm –Uvh是更新安装命令,即删除老版本并重新安装。
注:)rpm –qa|grep httpd(查看)也可以使用命令rpm –ivh httpd-2.0.48-3.i386.rpm进行安装。
rpm –ivh是安装命令,若有老版本存在会提示冲突,需要执行下面的-e命令一一删除老版本。
rpm –e httpd-2.0.40-21 --nodeps(这个命令是在删除rpm包时忽略依赖性的)安装完后,创建svn用户,启动svn服务使用这一用户,为了提高安全性没有使用root用户。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SVNFORRedHat安装与配置目录一、安装前准备1.1系统检查与确认2.1.1.系统启动方式文件/etc/inittab其中3是指启动方式,安装后默认是5,但实际需要的是3.2.1.2.确认内核版本#uname–a本机内核是:Linuxsvn#1SMPTueAug1815:51:48EDT2009x86_64x86_64x86_64GNU/Linux 2.1.3.发行版本lsb_release–a目前本机安装版本是:(Tikanga)2.1.4.确定主机名#hostname本主机名目前是:svn2.1.5.字符集将”/etc/sysconfig/i18n”内容改为1.2Apacha检查与确认1.2.1.检查apache是否安装#rpm-qhttpd1.2.2.查看httpd是否启动#servicehttpdstatus重启httpd,查看启动是否正常#servicehttpdrestart刚安装的apache一般都会报下列信息:说明:没有在文件中配置ServerName项#vi/etc/httpd/conf/添加1.2.3.查看apache所占的端口#netstat–lnp|grephttpd二、SVN服务器的安装2.1安装2.1.1.安装包清单postgresql-libs-2.1.2.查询和安装安装这些包之前,检查一下这些安装包是否已经存在和它的版本。
例:#rpm–qapr没安装的,用rpm命令安装,如#rpm–ivh/mnt/CentOS/注意:sqlite安装#rpm-Uvh2.2检查2.2.1.安装版本#svnserve--version或#svn--version2.2.2.mod_dav_svn是SVN与HTTP通信的插件,它需的配合。
要安装成功后,存放在/etc/httpd/modules目录下.#ls/etc/httpd/modules/#ls/etc/httpd/modules/2.3.配置2.3.1.SVN配置1.将仓库目录所有权赋于svn组和用户#chown–Rapache:apache/svn2.启动SVN服务su-apache-c"svnserve-d-r/repository"其中:su–svn表示以用户svn的身份启动svn-d表示以daemon方式(后台运行)运行-r/opt/svndata指定根目录是/opt/svndata检查:ps–ef|grepsvnserve如果显示如下,即为启动成功:svn 6941 1 015:07 00:00:00svnserve-d-r/repository 3.开机时自动启动在/etc/新建一文件,如svn_sany,文件内容如下4.将该文件的属性改为可执行#chmod755/etc/svn_sany5.增加svn服务chkconfig--addsvn_sany6.建测试库:test,test1#su–lapache$svnadmincreate/svn/test7.配置用户权限来到/svn/库名/conf目录,修改,修改结果如下修改passwd,修改结果如下修改authz,修改结果如下注:SVN权限能继承,但是通过权限重新定义来取消继承,通过上面实例可以看出。
2.3.2.Apache配置1.检测模块加载让Apache在启动的时候加载上述""和""模块。
#vi/etc/httpd/conf/#vi/etc/httpd/重启Httpd服务#servicehttpdrestart打开浏览器,输入/svn将会看到如下画面:这表示Apache的dav_svn模块已经可以正常工作了。
用户可以使用任何一种Subversion的客户端通过Http协议访问你的版本库。
2.多个版本库如果想要指定多个版本库,可以用多个Location标签,也可以使用SVNParentPath代替SVNPath,例如在/svn下有多个版本库repos1,repos2等等,用如下方式指定:#vi/etc/httpd/重启apache,打开浏览器,输入/svn将会看到如下画面:表示配置成功.现在你的版本库任何人都可以访问,并且有完全的写操作权限。
也就是说任何人都可以匿名读取,修改,提交,以及删除版本库中的内容。
3.用户访问限制首先需要创建一个用户文件。
Apache提供了一个工具htpasswd,用于生成用户文件,可以在Apache的安装目录下找到。
具体使用方法如下:htpasswd新建一个用户文件。
创建好的文件内容是用户名加上密码的MD5密文。
接下来修改,在Location标签中加入如下内容:重新启动Apache,打开浏览器访问版本库。
Apache会提示你输入用户名和密码来认证登陆了,现在只有文件中设定的用户才可以访问版本库。
也可以配置只有特定用户可以访问,替换上述"Requirevalid-user"为"Requireusertonyrobert"将只有tony和robert可以访问该版本库。
有的时候也许不需要这样严格的访问控制,例如大多数开源项目允许匿名的读取操作,而只有认证用户才允许写操作。
为了实现更为细致的权限认证,可以使用Limit和LimitExcept标签。
例如:如上配置将使匿名用户有读取权限,而限制只有passwordfile中配置的用户可以使用写操作。
如果这还不能满足你的要求,可以使用Apache的mod_authz_svn模块对每个目录进行认证操作。
4.用mod_authz_svn进行目录访问控制首先需要让Apache将mod_authz_svn模块加载进来。
修改如下:由于公司按DSS(决策支持系统板块)、ERP(ERP运营管理板块)、PLM(研发管理板块)、SCM(供应链管理板块)、ISMIS(信息安全管理体系)、ITSP(IT支撑平台),即四个板块一个体系和一个平台来分类存放,外加一个exercise(学习),因此最后的配置内容如下:三、设计远程修改密码程序3.1.代码开发1.在/var/www/cgi-bin目录下新增和两文件。
#touch/var/www/cgi-bin/#touch/var/www/cgi-bin/2.赋权#chmod755#touch/var/www/cgi-bin/ChangePasswd.* 3.编程4.修改;避免页面出现乱码AddDefaultCharsetUTF-8改为AddDefaultCharsetoff ;ServerAdmin对应文件中ServerAdminroot@localhost;添加别名,使访问简化(如变为)3.2.代码编写关键点1、将文件和放到apche安装目录下的cgi-bin下2、确认程序第1行,prel工具的位置(这里:#!/usr/bin/perl-w)/usr/bin/perl3、修改第84行改成htpasswd所在的路径(我的:/project/apache/bin/htpasswd)4、修改行ini文件改成完整路径(我的:/project/apache/cgi-bin/)5、配置文件第2行authuserfile=密码存放路径(我的:/svndata/svn-auth-file/passwd)6、配置文件第3行logfile=操作日志存放路径(这里:/svn/)3.3.注意细节1、用htpasswd时切勿用-m参数如果以前用的话,可重新输入一次进行更新2、必须有“w”写入权限3、如果要远程修改密码,由于原win的http与现linux上的http的密码生成有所不同,因此需要先删除该用户(htpasswd–D),然后再添加该用户和初始密码(htpasswd–D).四、数据移植(Win→Linux)数据导出:svnadmindump项目名>dumpfileeg:$svnadmindumpmyrepos>myrepos数据导入:svnadminload项目名<dumpfileeg:$svnadminloadnewrepos<myrepos五、附录5.1Subversion中BDB和FSFS两种格式的比较BerkeleyDB在Subversion的初始设计阶段,开发者因为多种原因而决定采用BerkeleyDB,比如它的开源协议、事务支持、可靠性、性能、简单的API、线程安全、支持游标等。
BerkeleyDB提供了真正的事务支持-这或许是它最强大的特性,访问你的Subversion版本库的多个进程不必担心偶尔会破坏其他进程的数据。
事务系统提供的隔离对于任何给定的操作,Subversion版本库代码看到的只是数据库的静态视图-而不是一个在其他进程影响不断变化的数据库-并能够根据该视图作出决定。
如果该决定正好同其他进程所做操作冲突,整个操作会回滚,就像什么都没有发生一样,并且Subversion会优雅的再次对更新的静态视图进行操作。
BerkeleyDB另一个强大的特性是热备份-不必“脱机”就可以备份数据库环境的能力。
(备份问题在本文暂不讨论)BerkeleyDB同时是一个可信赖的数据库系统。
Subversion利用了BerkeleyDB可以记日志的便利,这意味着数据库先在磁盘上写一个日志文件,描述它将要做的修改,然后再做这些修改。
这是为了确保如果任何地方出了差错,数据库系统能恢复到先前的检查点—一个日志文件认为没有错误的位置,重新开始事务直到数据恢复为一个可用的状态。
关于BerkeleyDB日志文件的更多信息可以参考svn中文使用说明中的“管理磁盘空间”一节。
但是每朵玫瑰都有刺,我们也必须记录一些BerkeleyDB已知的缺陷。
首先,BerkeleyDB环境不是跨平台的。
你不能简单的拷贝一个在Unix上创建的Subversion版本库到一个Windows系统并期望它能够正常工作。
尽管BerkeleyDB数据库的大部分格式是不受架构约束的,但环境还是有一些方面没有独立出来。
其次,使用BerkeleyDB的Subversion不能在95/98系统上运行—如果你需要将版本库建在一个Windows机器上,请装到Windows2000或WindowsXP上。
另外,BerkeleyDB版本库不能放在网络共享文件夹中,尽管BerkeleyDB承诺如果按照一套特定规范的话,可以在网络共享上正常运行,但实际上已知的共享类型几乎都不满足这套规范。
最后,因为BerkeleyDB的库直接链接到了Subversion中,它对于中断比典型的关系型数据库系统更为敏感。
大多数SQL系统,举例来说,有一个主服务进程来协调对数据库表的访问。
如果一个访问数据库的程序因为某种原因出现问题,数据库守护进程察觉到连接中断会做一些清理。