构建SVN(Subversion)版本控制系统
2011.05.18 TsengYia#126.com http://tsengyia.blog.chinaunix.net/
#################################################################
系统环境:
服务器 —— RHEL 5.5 [2.6.18-194.el5]
客户机 —— Microsoft Windows 7
软件环境:
服务器端(项目仓库),可从下载
(1) SVN服务器组件、依赖包
subversion-1.6.16-1.i386.rpm subversion-perl-1.6.16-1.i386.rpm
subversion-debuginfo-1.6.16-1.i386.rpm subversion-python-1.6.36-1.i386.rpm
ssubversion-devel-1.6.36-1.i386.rpm subversion-tools-1.6.16-1.i386.rpm
neon-0.28.4-1.i386.rpm sqlite-3.5.9-2.i386.rpm
neon-devel-0.28.4-1.i386.rpm sqlite-devel-3.5.9-2.i386.rpm
—— 若要使用HTTP方式访问SVN服务,还需下载安装mod_dav_svn-1.6.16-1.i386.rpm,并配置httpd服务器。
(2) 基本依赖包(来自RHEL 5.5系统安装盘)
cyrus-sasl-2.1.22-5.el5_4.3.i386.rpm python-2.4.3-27.el5.i386.rpm
db4-4.3.9-10.el5.i386.rpm xinetd-2.3.14-10.el5.i386.rpm
openssl-0.9.8e-12.el5_4.6.i386.rpm zlib-1.2.3-3.i386.rpm
perl-5.8.8-27.el5.i386.rpm
客户机端(开发用机),可从下载
TortoiseSVN-1.6.15.21042-win32-svn-1.6.16.msi
LanguagePack_1.6.15.21042-win32-zh_CN.msi
#################################################################
一、服务器安装与配置
1. 软件包安装
依次安装各种依赖包、SVN服务器组件(具体过程略)。
—— 注意1:对于已装有低版本软件包的情况,如sqlite、sqlite-devel,可以采取升级安装的方式。
—— 注意2:其中subversion-tools软件包依赖于perl的File::Path模块,实际上已包括在perl-5.8.8软件包内,若安装时出现“error: Failed dependencies: perl(File::Path)……”的依赖提示,则添加“--nodeps”选项忽略即可。、
2. 创建运行用户、SVN根目录
[root@localhost ~]# useradd -m -d /var/svnroot svnuser
[root@localhost ~]# chmod 755 /var/svnroot/
[root@localhost ~]# ls -ld /var/svnroot/
drwxr-xr-x 3 svnuser svnuser 4096 05-18 13:41 /var/svnroot/
3. 创建项目仓库
[root@localhost ~]# svnadmin create /var/svnroot/pbdevj #//项目1的仓库文件夹
[root@localhost ~]# svnadmin create /var/svnroot/pbtest #//项目2的仓库文件夹
[root@localhost ~]# chown -R svnuser.svnuser /var/svnroot/pb*
[root@localhost ~]# ls -lh /var/svnroot/pb*
总计 8.0K
drwxr-xr-x 6 svnuser svnuser 4.0K 05-18 13:48 pbdevj
drwxr-xr-x 6 svnuser svnuser 4.0K 05-18 13:48 pbtest
[root@localhost ~]# ls /var/svnroot/pbdevj/ #//默认建立的子目录和文件
conf db format hooks locks README.txt
4. 配置目录访问权限
创建好项目仓库以后,每个项目的配置文件默认位于子目录conf/下。其中passwd存放用户帐号、密码,authz存放用户分组、访问权限等,svnserve.conf设置全局参数(如指定帐号文件、访问控制文件的位置等)。
[root@localhost ~]# ls /var/svnroot/*/conf/
/var/svnroot/pbdevj/conf/:
authz passwd svnserve.conf
/var/svnroot/pbtest/conf/:
authz passwd svnserve.conf
(1) 创建共用的账号文件、访问控制文件、主配置文件
若用户数量少、项目数量多,也可以共用账号盒访问控制文件,例如保存在/etc/subversion/目录下。
pbdevj项目:允许用户xyzeng、abchen写入,tsengyia用户只读,禁止匿名访问;
pbtest项目:允许tsengyia用户写入,允许匿名读取(仅作测试,不推荐采用)。
[root@localhost ~]# mkdir /etc/subversion/
[root@localhost ~]# cp /var/svnroot/pbdevj/conf/* /etc/subversion/
[root@localhost ~]# vi /etc/subversion/passwd #//共用的帐号文件
[users]
xyzeng = 123456
abchen = 654321
tsengyia = pwd123
[root@localhost ~]# vi /etc/subversion/authz #//共用的访问控制文件
[groups]
javateam = xyzeng,abchen
[pbdevj:/] #//若为单库,则采用[/]格式即可
@javateam = rw
tsengyia = r
* =
[pbtest:/]
tsengyia = rw
* = r
[root@localhost ~]# vi /etc/subversion/svnserve.conf #//共用的SVN主配置文件
[general]
anon-access = read #//匿名访问建议设为none
auth-access = write
password-db = /etc/subversion/passwd
authz-db = /etc/subversion/authz
realm = Community #//若多个库共用帐号,此名称应相同
[root@localhost ~]# chmod 600 /etc/subversion/* #//降低文件权限
[root@localhost ~]# setfacl -m user:svnuser:r-- /etc/subversion/*
[root@localhost ~]# ls -l /etc/subversion/*
-rw-r-----+ 1 root root 1189 05-18 14:14 /etc/subversion/authz
-rw-r-----+ 1 root root 359 05-18 14:13 /etc/subversion/passwd
-rw-r-----+ 1 root root 2350 05-18 14:15 /etc/subversion/svnserve.conf
(2) 将主配置文件复制到每个项目仓库
[root@localhost ~]# cp -pf /etc/subversion/svnserve.conf /var/svnroot/pbdevj/conf/
[root@localhost ~]# cp -pf /etc/subversion/svnserve.conf /var/svnroot/pbtest/conf/
5. 启动svnserve服务器程序
SVN的主服务程序为svnserve,默认监听端口为3690,选项“-d”、“-i”分别表示运行再daemon、inetd模式,更多选项请参考--help。
若此SVN服务器并不许要频繁访问,建议选用inetd模式进行启动,可参考以下操作。
[root@localhost ~]# grep -i subversion /etc/services
svn 3690/tcp #Subversion
svn 3690/udp #Subversion
[root@localhost ~]# vi /etc/xinetd.d/svn
service svn #//服务名须与services文件中定义的相同
{
disable = no
port = 3690
socket_type = stream
protocol = tcp
wait = no
user = svnuser
server = /usr/bin/svnserve
server_args = -i -r /var/svnroot
}
[root@localhost ~]# /etc/init.d/xinetd restart
停止 xinetd: [确定]
启动 xinetd: [确定]
二、客户机端的使用
1. 软件包安装
(1) 安装客户端程序 TortoiseSVN-1.6.15.21042-win32-svn-1.6.16.msi 。
(2) 安装中文语言包 LanguagePack_1.6.15.21042-win32-zh_CN.msi 。
(3) 重新启动系统,以便在资源管理器中应用SVN特有的标识图标。
2. 使用 TortoiseSVN客户端软件
(1) 修改SVN的语言设置
在Windows资源管理器中,任意空白处单击右键,可调出“TortoiseSVN”-->“Settings”设置菜单,然后将“Language”设置为“中文简体”,下一次使用时界面即变为中文。
(2) 浏览项目仓库
在资源管理器的地址栏访问svn://ServerIP/项目名称,例如svn://192.168.7.11/pbdevj,然后以授权的用户名认证即可。
或者在TortoiseSVN右键菜单中选择“版本库浏览器”,然后输入上述URL地址,也可以进行访问。
成功登录以后,可以对项目代码进行管理(如创建文件夹、删除文件、改名等)。
(3) 导入项目代码
访问指定的项目库,展开至指定位置,然后将需要导入的代码文件直接拖入即可。
或者在TortoiseSVN右键菜单中选择“导入”,然后输入URL地址,验证后也可以执行导入。
(4) 检出项目(Checkout)
在本地新建空文件夹,右击后选择“SVN检出”,然后输入项目库地址(可附带具体子目录)执行检出。
若需再次从SVN服务器中获取更新的代码,右击本地检出目录后选择“SVN更新”即可。
(5) 检入项目(Checkin)
修改文件后,右击此文件或本地检出目录后选择“SVN提交”即可。
(6) 查看修改记录
选中文件后,在TortoiseSVN右键菜单中选择“显示日志”,即可查看历次修改记录。
—— 注意:若将项目库设为允许匿名read,查看日志时可能出现连接失败的情况,改为none后正常。
#################################################################
阅读(644) | 评论(0) | 转发(0) |