Subversion是一个自由、开放源码的版本控制系统。它是一个通用系统,可用来管理任何类型的文件,
其中包括程序源码。Subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。因为修改不再是单线进行(单线进行也就是必须一个一个进行),开发进度会进展迅速。此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量—如果出现不正确的更改,只要撤销那一次更改操作即可。
Subversion实现了绝大部分CVS的已有功能;充分考虑现有的CVS用户,在使用方式上模仿CVS,同时开发了一系列工具,使得基于CVS的项目能够顺利迁移到Subversion上。和CVS相比,它有很多优点,例如目录版本控制、不可分割的提交、一致的数据处理方式和更有效率的分支与标记等。
httpd是web服务器,用来通过web访问subversion,Turbolinux
GTES10.5默认已经安装了httpd服务。 Subversion从网站subversion.tigris.org下载最新版本subversion-1.4.4.tar.gz
最好不要让root用户参与到svn的权限管理和日常的运行和维护工作中来,但是下面的一些安装和配置操作还是
需要root用户来完成的,因为有些操作只有root才能做。
用下面命令察看系统是否已经安装
# rpm –qa | grep httpd
若没有安装,从Turbolinux GTES10.5安装光盘中找到安装包:httpd-2.0.52-9.7.i386.rpm
# rpm –ivh httpd-2.0.52-9.7.i386.rpm
启动apache服务
# service httpd start
打开浏览器http://webserver ip address/如果有测试页” GreatTurbo
Enterprise Server Test Page “出现则证明已经安装成功。
从Turbolinux GTES10.5安装盘第2和第3张安装光盘中找到下面软件包并安装:
# rpm –ivh apr-devel-0.9.4-24.1.3.i386.rpm
# rpm –ivh apr-util-devel-0.9.4-17.2.i386.rpm
# rpm –ivh pcre-devel-4.5-3.2.i386.rpm
# rpm –ivh httpd-devel-2.0.52-9.7.i386.rpm
解压SubVersion安装包 (root用户进行下面的操作)
# tar xvzf Subversion-1.4.4.tar.gz
进入解压后的目录
# cd Subversion-1.4.4
配置subversion安装
# ./configure
--with-apxs=/usr/sbin/apxs
--prefix=/usr/local/subversion
--with-apr=/usr
--with-apr-util=/usr
--with-ssl
--with-zlib
--enable-maintainer-mode
# make;make install
创建库文件所在的目录 (svnroot用户进行下面的操作)
# mkdir /home/svnroot/repository
进入subversion的bin目录
# cd /usr/local/subversion/bin
创建仓库”test”
# ./svnadmin create /home/svnroot/repository/test
# cd /home/svnroot/repository/test 看看是不是多了些文件,如果是则说明Subversion安装成功了
# cd /usr/local/subversion/bin
在/home/svnroot下创建目录project,project中创建一个文件test.file文件,并执行下面命令,将把路径/home/svnroot/project下找到的文件导入到你创建的Subversion
仓库中去,提交后的修订版为1。 #./svn import /home/svnroot/project
file:/home/svnroot/repository/test -m “注释” 不让其他人有该目录的权限
# chmod 700 /home/svnroot/repository 在svn使用过程中牵扯到几种权限:文件系统的权限,linux系统权限,svn用户的权限,apache进程的权限。文件系统的权限,linux系统权限,就是linux系统的文件夹和文件的访问权限。在
svn建立仓库,文件夹,配置文件的时候用svnroot用户,并将仓库权限设置为700,不允许其他用户直接通过
文件系统查看,只能由svnroot进行管理。 ==== 修改Apache配置文件 ==== 启动Apache
# service httpd start # vi /etc/httpd/conf/httpd.conf
在最下面添加 LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn> DAV svn SVNParentPath /home/svnroot/repository/
svn父目录
AuthzSVNAccessFile /home/svnroot/repository/authz.conf //权限配置文件
AuthType Basic //连接类型设置
AuthName "Please input username and password" //连接框提示
AuthUserFile /home/svnroot/repository/authfile //用户配置文件
Require valid-user //采用何种认证
</Location>
其中authfile是通过”htpasswd -c /home/svnroot/repository/authfile
username”来创建的,“Require valid-user”告诉apache在authfile中所有的用户都可以访问。
# export SVN_EDITOR=vi 将该加入到文件/etc/profile中
# service httpd restart 打开浏览器访问http://webserver/svn/test/,如果提示输入用户名和密码则说明安装成功。
具体用法可参考 Subversion 命令参考手册
http://svnbook.subversion.org.cn/1.2/svn-book.html
如果是第一次创建用户,则是用下面命令:
# htpasswd -c /home/svnroot/repository/authfile username
回车后输入用户密码,完成对用户的增加,以后创建用户可以使用:
# htpasswd /home/svnroot/repository/authfile 用户名
# vi /home/svnroot/repository/authz.conf
[test:/] //这表示,仓库test的根目录下的访问权限
user1 = rw //test仓库user1用户具有读和写权限
user2 = r //test仓库user2用户具有读权限
[test2:/] //test2仓库根目录下的访问权限
user1 = r //user1用户在test2仓库根目录下只有读权限
user2 = //user2用户在test2仓库根目录下无任何权限
[/] //这个表示在所有仓库的根目录下
* = r //这个表示对所有的用户都具有读权限
#[groups] //这个表示群组设置
#svn1-developers = user1, user2 //这个表示某群组里的成员
#svn2-developers = user1
#[svn1:/]
#@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置
将这个设置完成后。重启httpd,就可以通过 http://webserver/svn/test
来访问仓库了,当然,受权限的限制,必须是合法用户才能访问且具有相应的权限的仓库。
# /usr/local/subversion/bin/svn checkout file:///home/svnroot/repository/test
注:如果linux的登录用户名密码都和svn的其中一个用户名密码相同时,在checkout的时候不会要求输
入用户名密码直接就可以checkout出来。比如:linux有个用户user1,svn也有一个用户user1,并且密码
都是一样的,当用user1登录linux后,执行checkout,可以直接提取出源码文件,不用输入认证信息。
# /usr/local/subversion/bin/svn delete test.file
# /usr/local/subversion/bin/svn commit -m "Update File Log"
|