开源中文网

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

linux subversion 版本控制

来源:  作者:

原文出处:

 
一、什么是SVN ?与CVSVSS 的区别?
    SVN全名Subversion,即版本控制系统。
 SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本或是浏览文件的变动历史。Subversion 是一个通用的系统可用来管理任何类型的文件其中包括了程序源码。PS:就是为开发部门而产生的
 
更详细的介绍大家去看在线中文手册:
 
官方网站:http://subversion.tigris.org/   
二、在服务器安装SVN
安装环境:
OS: RedHat AdvanceServer 4 Update 4

需要软件:
SVN: Subversion 1.4.3
HTTPD: Apache Httpd 2.2.4
APR: Apache Apr #source: path/apache.source/srclib/apr
APU: Apache Apr-Util 1.2.8
#source: path/apache.source/srclib/apr-util

1. 下载源代码:
到各自的官方网站下载相应的源代码的tar.gz包,解包后准备编译安装:

2. 编译源代码:
按下面的顺序编译源代码:
(1) Apache Apr
# cd apr-1.2.8
# ./configure --prefix=/usr/local/apr
# make
# make install

(2) Apache Apr-Util
# cd apr-util-1.2.8
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install

(3) Apache Httpd
# cd httpd-2.2.4
# ./configure --prefix=/usr/local/apache2 --enable-dav --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
# make
# make install

(4) Subversion
# cd subversion-1.4.3
# ./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install

以上的编译通常情况都能顺利编译成功,得到相应的可执行程序。

检查WebDav for SVN 模块:
# cd /usr/local/apache2/modules
检查 mod_dav_svn.so 和 mod_authz_svn.so,如果上述第2步编译成功,这两个模块应该可以看到。

3. 创建svn用户:
# groupadd svn
# useradd -g svn svn
以后代码库的创建维护等,都用这个帐户来操作。

4. 创建版本库:
以svn用户登录

准备环境变量:
$ SVN_HOME=/usr/local/subversion
$ export SVN_HOME
$ PATH=$PATH:$SVN_HOME/bin
$ export PATH

上述命令创建了版本库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


5. 配置Apache Httpd
# cd /usr/local/apache2/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进程能访问版本库的数据。
(1. 在Apache Http Server里配置:
<Location /svn>
       DAV svn
        SVNParentPath /data/svn/repos      #svn根目录
        AuthType Basic
        AuthName "Subversion repository"
        AuthUserFile /data/svn/passwd      #认证口令文件
        AuthzSVNAccessFile /data/svn/auth  #子目录访问权限控制文件
        Require valid-user
    </Location>


(1.1 建立SVN存储仓库

     #mkdir -p /data/svn/repos

    #svnadmin create /data/svn/repos/tony.tang

    备份以前的SVN库

    #svnadmin dump /data/svn/repos/tony.tang/ > /root/tony.tang

    把备份出来的数据恢复到本地

    #svnadmin load /data/svn/repos/tony.tang/ < /home/tony.tang

(1.2 建立本地访问控制文件

    /opt/apache/bin/htpasswd -c /data/svn/passwd clay.li

   会提示你输入密码,默认是MD5加密

(1.3 建立本地项目控制文件

    touch /data/svn/auth

    我的文件内容为:

[groups]
[hms.rd.ikang.com:/]
#wxy = rw
chen.shanshan = rw
nuo = rw
jonathan.sun = rw

[php.ikang.com:/]
#wxy = rw
peter = rw

[tony.tang:/]
tony.tang = rw
jonathan.sun = rw
clay.li      =rw

(1.4 安装客户端,访问服务器

    
    [url]http://IP/svn/tony.tang[/url]

   注意:SVN是APACHE配置的时候加上去的。

(1.5 到此安装基本结束

     修改一下/data/svn/repos属性,否则会导致文件上传失败。

    cd /data/svn/

     chmod -R svn:svn repos



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

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

<VirtualHost *:80>
    ServerAdmin webmaster@svn.yourcompany.com
    ServerName svn.yourcompany.com
    ErrorLog logs/svn.yourcompany.com-error_log
    CustomLog logs/svn.yourcompany.com-access_log common
    <Location />
       DAV svn
       SVNListParentPath on
       SVNParentPath /home/svn
    </Location>
</VirtualHost>
 
 这样配置的目的是可以使用 http://svn.yourcompany.com/sandbox 或http://svn.yourcompany.com/projects 这样的URL来供各种客户端通过http协议访问该版本库中的文件。
 
四、SVN客户端(XP)使用方法
安装包在官网上全有,包括汉化包,安装英文包 重启后 安装汉化包。
1、导入数据
在客户端上创建一个空的文件夹SVN。进入文件夹SVN,建立再建一个空的个人文件夹,选中SVN文件夹,单击鼠标右键,(如图1)选择命令“TortoiseSVN->导入”。在弹出的对话框填写如下参数(如图2):
版本库URLhttp://IP/test
其它选项为默认值;
选择确定。       
 
 
在弹出的认证对话框填写如下信息:
用户名:你的用户名;
密码:你的用户名;
保存密码:选中;
选择确定,导入数据完成。
2、检出工作拷贝
       点击右键---检出 弹出对话框(如图3)。

选中SVN文件夹中的个人文件夹;
检出至目录:个人文件夹的全路径;


其它选项默认;
选择确定,检出工作拷贝完成。

Tags:版本
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明