开源中文网

您的位置: 首页 > Linux应用 > Subversion > 正文

subversion版本管理

来源:  作者:

subversion svn apache linux 
一、 工具准备 
Apache Web服务器:httpd-2.2.4.tar.bz2 <http://government-grants.org/mirrors/apache.org/httpd/httpd-2.2.4.tar.bz2> 
Subversion源码包及依赖包:subversion-1.4.3.tar.bz2 <http://subversion.tigris.org/downloads/subversion-1.4.3.tar.bz2>,subversion-deps-1.4.3.tar.bz2 <http://subversion.tigris.org/downloads/subversion-deps-1.4.3.tar.bz2> 
(下面假设apache和svn源码都解压到了/home/tmp下) 
Apr-1.2.8.tar.gz 
Apr-util-1.2.8.tar.gz 
二、安装Apache 
Apache的安装就根平时安装Apache没什么两样,都记得要打开dav模块和动态模块选项。安装安装命令如下: 
1、 安装apache apr 
# tar -zvxf apr-1.2.8.tar.gz 
# cd apr-1.2.8 
# ./configure -prefix=/usr/local/apr 
# make 
# make install 
2、 安装apache apr-util 
# tar -zvxf apr-util-1.2.8.tar.gz 
# cd apr-util-1.2.8 
# ./configure -prefix=/usr/local/apr-util -with-apr=/usr/local/apr 
# make 
# make install 
3、安装Http 
# tar xfj httpd-2.2.4.tar.bz2 
# cd httpd-2.2.4 
# ./configure --prefix=/usr/local/apache --enable-modules=so --enable-dav --enable-rewrite --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util 
# make 
# make install 
安装完成后使用命令 apachectl -l查看安装的模块,如果看到mod_dav.so的模块证明在-enable-dav这步操作成功。因为这个是apache的验证模块,如果不能正确安装那下面的操作就无效。 

三、安装Subversion 
SVN的安装一定要注意: 

* SVN 依赖的APR版本要正确。如果Apache为2.0.x,对应的APR版本应为0.9.x;Apache为2.2.x,对应的APR版本应为1.2.x。由于subversion-deps包里的APR是0.9.x的,因此编译svn时要删除从deps里解压出来的apr, apr-util,改而使用apache 2.2里提供的。 
* 如果apache不是安装在默认路径,configure必須加上--with-apxs选项,如:./configure --with-apxs=/home/apache2/bin/apxs 

1、安装命令如下: 
# tar xfj subversion-1.4.3.tar.bz2 
# tar xfj subversion-deps-1.4.3.tar.bz2 
# subversion-deps的文件也会解压到subversion-1.4.3目录中 
# cd subversion-1.4.3 
# rm -rf apr 
# rm -rf apr-util 
# ln -s /root/soft/httpd-2.2.4/srclib/apr apr 
# ln -s /root/soft/httpd-2.2.4/srclib/apr-util apr-util 
# ./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs 
# make 
# make install 
以上的编译通常情况都能顺利编译成功,得到相应的可执行程序。 
检查WebDav for SVN 模块: 
# cd /usr/local/apache/modules 
检查 mod_dav_svn.so 和 mod_authz_svn.so,如果上述第2步编译成功,这两个模块应该可以看到。 
2、 创建svn用户: 
# groupadd svn 
# useradd -g svn svn 
以后代码库的创建维护等,都用这个帐户来操作。 
3、 vi /etc/profile 
准备环境变量: 
$ SVN_HOME=/usr/local/subversion 
$ export SVN_HOME 
$ PATH=$PATH:$SVN_HOME/bin 
$ export PATH 
创建版本库: 
以svn用户登录 
cd /home/svn 
上述命令创建了版本库sandbox,用于测试: 
$ svnadmin create --fs-type fsfs sandbox 
还可以再创建工程的版本库: 
$ svnadmin create --fs-type fsfs projects 
创建启动Subversion的脚本: 
$ echo '/usr/local/subversion/bin/svnserve -d -r /home/svn/' > startup.sh 
$ chmod +x startup.sh 
$ ./startup.sh 
将启动脚本放置到开机自动启动脚本中: 
以root身份修改文件:/etc/rc.d/rc.local,添加以下文字: 
su -c /home/svn/startup.sh svn 
4、配置Apache Httpd 
# cd /usr/local/apache/conf 
# vi httpd.conf 
加载WebDav for SVN模块: 

# Dynamic Shared Object (DSO) Support 

# To be able to use the functionality of a module which was built as a DSO you 
# have to place corresponding `LoadModule' lines at this location so the 
# directives contained in it are actually available _before_ they are used. 
# Statically compiled modules (those listed by `httpd -l') do not need 
# to be loaded here. 

# Example: 
# LoadModule foo_module modules/mod_foo.so 
LoadModule dav_svn_module modules/mod_dav_svn.so 
LoadModule authz_svn_module modules/mod_authz_svn.so 
添加最后两行(默认编译后,configure会自动加上): 
LoadModule dav_svn_module modules/mod_dav_svn.so 
LoadModule authz_svn_module modules/mod_authz_svn.so 

修改启动httpd的默认用户: 

# If you wish httpd to run as a different user or group, you must run 
# httpd as root initially and it will switch. 

# User/Group: The name (or #number) of the user/group to run httpd as. 
# It is usually good practice to create a dedicated user and group for 
# running httpd, as with most system services. 

#User daemon 
#Group daemon 
User svn 
Group svn 
</IfModule> 

将执行httpd的用户和组设为svn,这样做是为了让httpd进程能访问版本库的数据。 

在Apache Http Server里配置虚拟主机: 
将httpd.conf中的虚拟主机的注释去掉,然后编辑/usr/local/apache/conf/extra/httpd-vhost.conf。 

# Virtual hosts 
Include conf/extra/httpd-vhosts.conf 

添加虚拟主机svn.yourcompany.com,当然,这个主机名需要使用你自己的域名。 
# vi /usr/local/apache/conf/extra/httpd-vhost.conf 

<VirtualHost *:80> 
ServerAdmin webmaster@svn.yourcompany.com 
ServerName 192.168.0.8 
ErrorLog logs/localhost-error_log 
CustomLog logs/localhost-access_log common 
<Location /> 
DAV svn 
SVNListParentPath on 
SVNParentPath /home/svn 
AuthType Basic 
AuthName “Subversion Repository” 
AuthUserFile /home/svn/passwd 
Require valid-user 
</Location> 
</VirtualHost> 
5、 创建用户密码文件 
# cd /home/svn 
# /usr/local/apache/bin/htpasswd -cm passwd harry 
# New password:**** 
# Re-type new password:**** 
# Adding password for user harry 
我们创建了一个用户harry ,密码123456的页面验证。 
# /usr/local/apache/bin/htpasswd -m passwd fengjie 
# New password:**** 
# Re-type new password:**** 
# Adding password for user fengji 
(htpasswd命令。第一次用参数-c创建文件;参数-m是对密码进行MD5加密) 
至此我们就把subversion安装完毕,现在可以在页面<http://IP>地址访问了,然后输入我们设置的用户名和密码,进入。 
四、以上我们讲了subversion和apache的结合使用。Subversion是连接方式可以分多种,如下图 
协议 访问方法 
file:/// 通过本地磁盘访问。 
http:// 与Apache组合,通过WebDAV协议访问。 
https:// 同上,但支持SSL协议加密连接。 
svn:// 通过svnserve服务自定义的协议访问。 
svn+ssh:// 同上,但通过SSH协议加密连接 
我们上面介绍的是http的结合方式,如果要用svn://的方式,其实当我们安装完成后就已经可以使用这种方式了,但是它的控制文件是在你新建的项目中做设置。 
1、svn的连接方式,我这里介绍是通过另外一台linux机对svn的服务器进行连接,服务器安装同上,我这里略过不说,我们这里主要讲通过liunx客户端来连接. 
# yum search svn 
# yum install mod_dav_svn 
检查:[root@localhost ~]# rpm - qa | grep svn 
mod_dav_svn-1.1.4-2.ent 
(注:使用yum升级安装CentOS可以使用,红帽不能使用这个命令,因为redhat升级不是免费的) 
安装完毕 
检查// telnet 192.168.100.191 3690 
成功显示: 
[root@localhost ~]# telnet 192.168.0.15 3690 
Trying 192.168.0.15... 
Connected to 192.168.0.15 (192.168.0.15). 
Escape character is '^]'. 
( success ( 1 2 ( ANONYMOUS ) ( edit-pipeline svndiff1 absent-entries ) ) ) 
失败显示:出现这样的错误“[root@localhost ~]# telnet 192.168.0.17 3690 
Trying 192.168.0.17... 
telnet: connect to address 192.168.0.17: No route to host 
telnet: Unable to connect to remote host: No route to host“ 
解决方案:需要关闭服务器防火墙 
防火墙关闭方法 setup 
或者在防火墙里开启3690端口 
我们在/home/svn/下建了两个库。就是projects和sanbox。如何创建在上面有 
2、如果我么想用svn模式访问,就要在svn服务器端的设置。 
# cd /hom/svn/projects/conf 
# vi service.conf 进入service.conf文件 
[general] 
# anon-access = read 
# auth-access = wirte 
# password-db = passwd 
# authz-db = authz 
# realm = My First Tepository 
其中anon-access表示匿名用户权限,auth-access表示认证用户的权限设置,password-db指向帐号密码的文件位置,可以使用绝对路径。Authz-db是认证用户的设置。Realm数显示的连接信息。正常情况下我们修改把#去掉就可以了,如果不让匿名用户使用就设置anon-access=none 
3、 接着设置密码文件 
# vi /home/svn/projects/conf/passwd 
[users] 
# harry = sallyssecret 
# sally = sallyssecret 
我们比如用了harry 用户,但是密码可以设置成别的比如:harry = 123456想开几个用户都从这里设置。 
4、 设置用户访问策略文件 
# vi authz 
[groups] 
#harry_and_sally = harry,sally 
[/svn/projects] 
#harry = rw 
# * = 
# [repository:/baz/fuz] 
# @harry_and_sally = rw 
# * = r 
分了一个组:harry_and_sally 
[groups] 
#harry_and_sally = harry,sally 
在目录下制定权限 
[/svn/projects] 
# * = #所有用户禁止对/svn/projects库进行访问 
#harry = rw #只打开harry用户对/svn/projects的读写权限 
* = 表示禁止所有用户访问/svn/projects目录。Harry = rw只允许harry用户对/svn/projects有读写的权限。 
定义projects库,下的/baz/fuz文件的访问权限 
# [projects:/baz/fuz] #定义projects库下/bac/fuz文件的访问权限 
# @harry_and_sally = rw #打开组的访问权限对projects库下文件/baz/fuz的访问 
# * = r #所有用户对projects库下文件/baz/fuz的只读权限 
这样可以按照我们的方式去配置服务器的访问权限。 
可以在linux客户端访问。 
# svn import svn://192.168.7.233/projects /root/myproject -m “first’ 
这样吧myproject的内容上传到服务器的 project库中。可以查看svn list -verbose svn://192.168.7.233/project 
Subversion完全命令手册 
服务器端命令 
1、 创建仓库(Repository) 
Svnadmin create /路径/projects,svnadmin是subversion系统管理命令。 
2、 添加新项目(import new project) 
Svn import /home/svn/projects <file://home/svn/projects> -m “comment” 
3、 检出(checkout)项目 
Svn checkout <file://home/svn/projects> projects 
4、 列出仓库中的项目(list) 
Svn list -verbose <file://home/svn/projects> 
5、 状态查询(status) 
Svn status 
Svn status projects/test/fish.c 查看那某个文件的信息内容 
6、 添加文件或目录(add) 
Svn add 
7、 删除文件或目录 
Svn delete file://home/svn/projects/test 
8、 提交(commit) 
Svn commit <file://home/svn/projects> 
9、 更新(update) 
Svn update 更新仓库中的文件到本地 
10、 标签和特出版本项目 
使用copy命令 
Svn copy <file://home/svn/projects/test> <file://home/svn/projects/tags>/1.0.0 用于创建某个特定版本的快照 
Svn list <file://home/svn/projects/tags/1.0.0>查看那某个版本的内容 
11、 另一种查看方式 
Svn diff 它会精确的找出你所做的修改。它会打开你文件中的内容 
12、 检查日志 
Svn log 
svnadmin list-unused-dblogs 
svnadmin create 
svnadmin dump 
svnadmin help 
svnadmin load 
svnadmin lstxns 
svnadmin recover 
svnadmin rmtxns 
svnadmin setlog 
svnlook author 
svnlook cat 
svnlook changed 
svnlook date 
svnlook diff 
svnlook dirs-changed 
svnlook help 
svnlook history 
svnlook info 
svnlook log 
svnlook proplist 
svnlook tree 
svnlook youngest 
客户端的命令 
svn add 
svn cat 
svn checkout 
svn cleanup 
svn commit 
svn copy 
svn delete 
svn diff 
svn export 
svn help 
svn import 
svn info 
svn list 
svn log 
svn merge 
svn mkdir 
svn move 
svn propdel 
svn propedit 
svn propget 
svn proplist 
svn propset 
svn resolved 
svn revert 
svn status 
svn switch 
svn update 

Tags:subversion版本管理
相关文章列表:
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明