SVNSubversion详解.docx
《SVNSubversion详解.docx》由会员分享,可在线阅读,更多相关《SVNSubversion详解.docx(19页珍藏版)》请在冰豆网上搜索。
SVNSubversion详解
1SVN服务器配置
下载SubVersion,有安装版和解压缩版
设置svn_home\bin为path
创建资源库,假设资源库为F:
\SVNRepositoryRoot\repository,,则要分两步创建,
先mkdird:
\svnroot\,这个可以使用操作系统命令创建
然后用svn命令,svnadmincreateF:
\SVNRepositoryRoot\repository
配置svn_home\conf\svnserve.conf,
启用anon-access=read,
并添加anon-access=write,
修改配置文件特别要注意:
默认没有anon-access=write,默认时anon-access=read下面是#auth-access=write
去掉注释符#后,要使得anon-access顶格,即要去掉前面的空格,否则可能报需要option的错误。
当出现'目标机器积极拒绝,无法连接'或svn:
Can'tconnecttohost...时,请依次检查下面各项
1,服务器有没有运行,有没有打开相应端口
如果服务器是svnserve,检查有没有运行svnserve,有没有打开3690端口
如果服务器是apache,检查apahce是否运行,是否打开80端口
检查时可以在服务器运行netstat-na看看相应端口是否在LISTEN
2,防火墙有没有开放相应端口
3,客户端是否可以连接服务器的相应端口
使用命令telnet服务器IP相应端口
如:
telnet192.168.0.13690有效,可测试端口是否打开
启动服务,导入导出都是在服务启动后才能使用的。
启动服务两种方式:
命令窗口,启动后则不能关闭该命令窗口,与Tomcat一样
svnserve-d-rF:
\SVNRepositoryRoot\repository
设置成Windows服务形式,这中非常好,可以设置随操作系统启动
sccreatesvnservebinPath="E:
\ProgramFiles\svn\bin\svnserve.exe--service--root
F:
\SVNRepositoryRoot\repository"displayname="Subversion"depend=tcpipstart=auto
导入项目,先在svn资源库中创建对应得虚拟目录,然后导入
F:
\test>svnmkdir-FF:
\SVNRepositoryRoot\log.txtsvn:
//localhost/test
F:
\test>svnimport-fF:
\SVNRepositoryRoot\log.txtsvn:
//localhost/test
导入时需给出一个记录日志的文件,如上即可,否则正确不能执行该命令。
接下来的操作可以用Tortoise或Eclipse插件轻松实现
2权限管理
2.1概念解释
比如有两个仓库aa和bb,管理员有两个admin和administrator
用户访问控制文件容如下:
[groups]
admin=admin,administrator//组admin有两个成员admin和administrator
[/]
*=r//每个用户都有读权限
[aa:
/]//在仓库aa根目录下
admin=r//管理员admin有读权限
administrator=rw//管理员administrator有读写权限
[bb:
/]//在仓库bb根目录下
admin=r//管理员admin有读权限
administrator=rw//管理员administrator有读写权限
[bb:
/db]//在仓库bb的db文件目录下
admin=rw//管理员组admin有读写权限
2.2详细步骤
用SVN(Subversion)取代CVS的呼声越来越高。
SVN也确实比CVS优胜很多,没有辜负众望。
在日常工作中,如何配置好和利用好SVN,是很值得花些时间去研究研究的。
在我应用SVN的这段时间里,更喜欢的是用svnserve加客户端来搭配使用。
也就是将svnserve配置成为一个服务端,然后在Windows下安装个TortoiseSVN。
这是一个不错的搭配选择。
1SVN安装
1.1FreeBSD下安装SVN
1.1.1安装SVN
#cd/usr/ports/devel/subversion
#makeNOPORTDOCS=YES-DWITH_SVNSERVE_WRAPPERinstallclean
1.1.2创建用户
#pwuseradd-s/bin/sh-d/var/empty-nsvn
1.2Linux下安装SVN
1.2.1下载及编译安装SVN
#wgetsubversion.tigris.org/downloads/subversion-1.3.2.tar.bz2
#tar-jxvfsubversion-1.3.2.tar.bz2
#cdsubversion-1.3.2
#./configure--with-zlib--enable-all-static
1.2.2创建用户
#useradd-d/var/emptysvn
2svnserve配置
2.1创建仓库
2.1.1创建仓库存放目录
#mkdir-p/opt/svn/{repos,etc}
2.1.2创建SVN仓库
#svnadmincreate/opt/svn/repos/source1
#svnadmincreate/opt/svn/repos/source2
#chown-Rsvn:
svn/opt/svn/
仓库名称可以根据自己的规划或喜好设定。
2.2配置仓库
SVN的svnserve对于每个仓库,有一个独立的配置文件和独立的用户、权限管理。
在这里仍然要保持配置文件svnserve.conf的独立,但是用户、权限管理是用统一的一个文件来存储。
这样方便以后的管理和维护。
另外要注意,即使svnserve服务已经运行,修改配置文件或者用户、权限管理文件,保存后马上生效,不需要重启服务。
2.2.1配置source1仓库
进入仓库目录
#cd/opt/svn/repos/source1
2.2.2修改配置
你可以直接删除默认的svnserve.conf文件,然后使用下面的配置:
#visvnserve.conf
[general]
anon-access=none
auth-access=write
password-db=/opt/svn/etc/svn-user.conf
authz-db=/opt/svn/etc/svn-authz.conf
realm=MyFirstRepository
说明:
anon-access=none#不允许匿名用户访问
auth-access=write#通过验证的用户可以读和写
password-db=/opt/svn/etc/svn-user.conf#用户保存文件
authz-db=/opt/svn/etc/svn-authz.conf#权限管理文件
realm=MyFirstRepository#仓库名称
2.2.3配置source2仓库
#cd/opt/svn/repos/source2
2.2.4修改配置
你可以直接删除默认的svnserve.conf文件,然后使用下面的配置:
#visvnserve.conf
[general]
anon-access=none
auth-access=write
password-db=/opt/svn/etc/svn-user.conf
authz-db=/opt/svn/etc/svn-authz.conf
realm=MySecondRepository
如果有更多的仓库,可以类推配置。
----------------------------------------------------------------------
svnserve.conf的原始容:
###Thisfilecontrolstheconfigurationofthesvnservedaemon,ifyou
###useittoallowaccesstothisrepository.(Ifyouonlyallow
###accessthroughhttp:
and/orfile:
URLs,thenthisfileis
###irrelevant.)
###Visitsubversion.tigris.org/formoreinformation.
[general]
###Theseoptionscontrolaccesstotherepositoryforunauthenticated
###andauthenticatedusers.Validvaluesare"write","read",
###and"none".Thesamplesettingsbelowarethedefaults.
#anon-access=read
#auth-access=write
###Thepassword-dboptioncontrolsthelocationofthepassword
###databasefile.Unlessyouspecifyapathstartingwitha/,
###thefile'slocationisrelativetotheconfdirectory.
###Uncommentthelinebelowtousethedefaultpasswordfile.
#password-db=passwd
###Theauthz-dboptioncontrolsthelocationoftheauthorization
###rulesforpath-basedaccesscontrol.Unlessyouspecifyapath
###startingwitha/,thefile'slocationisrelativetotheconf
###directory.Ifyoudon'tspecifyanauthz-db,nopath-basedaccess
###controlisdone.
###Uncommentthelinebelowtousethedefaultauthorizationfile.
#authz-db=authz
###Thisoptionspecifiestheauthenticationrealmoftherepository.
###Iftworepositorieshavethesameauthenticationrealm,theyshould
###havethesamepasswor