`
aben328
  • 浏览: 1451343 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类

Linux SVN的安装使用2009-06-20

    博客分类:
  • SVN
阅读更多
Linux SVN的安装使用
2009-06-20 20:03

The goal of the Subversion project is to build a version control system that is a compelling replacement for CVS in the open source community. The software is released under an Apache/BSD-style open source license.

SVN是一个版本控制软件,类似CVS,但是SVN的的有点是开源的,而且SVN的版本控制能力给CVS还要强多。

SVN可以用于项目管理,还可以用于版本同步,功能可是十分强呢:)

下载:
http://subversion.tigris.org

当前日期稳定版SVN1.32

 

http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz

安装:

解压:#: tar zxvf subversion-1.3.2.tar.gz

依次输入./configure , make , make install 进行编译安装完成。

开启SVN服务:svnserve -d

检测服务是否开启:netstat -ntlp如果看到3690的端口正常开放了,证明SVN启动了。

正式使用:
首先我们得建立一个SVN的项目,一般人都认为建立项目就只需要一个文件,在我第一次使用SVN之前都有这样的看法,SVN建立项目需要建立文件夹

建立项目命令:svnadmin create project_name     project_name 为你的project名字,可以任意取。
建立完毕后,project_name是一个文件夹,进入文件夹,可以看到一个conf的文件夹。进入文件夹可以看到2个文件(如果没有passwd文件,可以用vi创建),编辑
svnserve.conf  把anon-access = read ,auth_access = write
还有password-db = passwd 的注释去掉,还有[general]的注释也要去掉。
vi passwd文件,如果是新文件,则输入:
[user]
your_name = your_password
这里设置的your_name是你的用户名,your_password是你的密码,这个是访问SVN必要的通行证。

好了,现在终于把准备功夫做完了,下面可以正是使用了。
首先找到你的项目源代码文件夹,使用下面命令:
cd your project
in your project dircetory
use:svn co /home/project_name --username = your_name --password=your_password

好了,现在你可以在客户机上使用以下命令获得你想要的项目源代码文件
svn co svn://home/project_name --username=your_name --password = your_password

把增加的svn文件添加入svn库:
svn add /home/your_project/*.* --username=your_name --password = your_password

提交文件:
svn commit /home/your_project/*.* --username=your_name --password=your_password

更新文件:svn update /home/your_project/*.* --username=your_name --password=your_password

当然你可以编辑一个脚本文件来一次完成所有的操作:
vi svnupdate.sh

#!/bin/sh
svn add /home/your_project/*.* --username=your_name --password = your_password
svn commit /home/your_project/*.* --username=your_name --password=your_password
svn update /home/your_project/*.* --username=your_name --password=your_password


chmod +x svnupdate.sh

Finish
关键词: SVN apache linux subversion                                       

1、安装APR-1.2.7和APR-util-1.2.7

下载地址:[url]http://apr.apache.org/[/url]

tar zxvf   apr-1.2.7.tar.gz

./configure

make

make install

tar zxvf apr-util-1.2.7.tar.gz

./configure --with-apr=/usr/local/apr/

    make

    make install

2、编译安装APACHE。

tar zxvf httpd-2.2.3.tar.gz
cd httpd-2.2.3
./configure --prefix=/opt/apache --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config

    make
    make install

3、安装subversion-1.4.0

    tar zxvf subversion-1.4.0.tar.gz

    ./configure --with-apxs=/opt/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr

    make

    make install

4、查看subversion两个动态库有没有安装成功

    vi /opt/apache/conf/httpd.conf

看到下面两个模块说明安装成功

    LoadModule dav_svn_module     modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so

5、配置SVN

vi /opt/apache/conf/httpd.conf

    以下大概是我的配置:

<Location /svn>
   DAV svn
       SVNParentPath /data/svn/repos
       AuthType Basic
       AuthName "Subversion repository"
       AuthUserFile /data/svn/passwd
       AuthzSVNAccessFile /data/svn/auth
       Require valid-user
</Location>
6、建立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

7、建立本地访问控制文件

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

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

8、建立本地项目控制文件

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

9、安装客户端,访问服务器

因为我的apache配置端口为88所以访问服务器的时候必须加上端口号。

[url]http://192.168.7.10:88/svn/tony.tang[/url]

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

10、到此安装基本结束

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

cd /data/svn/

    chmod -R apache.apache repos

主要参考文章:

[url]http://www.01cn.net/cgi-bin/topic_show.cgi?id=3073&bpg=1&age=0[/url]

要在新服务器上装版本控制系统了。本来打算和以前一样用 CVS 来进行源代码管理,碰巧看到 duduwolf 对 SVN 大力推荐,加上这篇文章对于各种版本控制系统功能的完整比较,一直为 CVS 的各种缺陷感到郁闷的我自然毫不犹豫投奔了 SVN 的怀抱。

安装过程算不上一帆风顺,但我不打算在这里写出一篇完整的安装手册来,只简单记录几点体会。
服务模式
SVN 可以通过内置的 svnserve 提供服务,也可以和 Apache 配合通过标准的 http/https 来提供服务。用 svnserve 的好处是配置相对简单,但不足是 svnserve 所能提供的权限管理最小粒度只能到版本库(和 CVS 一样)。这对于开源软件的开发使用可能问题不大,但对于用作公司内部源代码控制来说就太简单了。所以我选择用 Apache + SSL + SVN 。
当 初使用 CVS 最让我觉得美中不足的就是它的目录权限控制。因为针对每个用户只能控制其访问整个版本库的读写权限,以至于我不得不创建了N个独立的版本库。即便这样,每 个版本库下面还是有许多项目是希望能分别控制权限的。当时采用的方法是禁用了CVS的目录浏览功能,并对每个项目目录名增加随机编号。只有知道确切的目录 名称才可以访问到该项目。现在既然改用 SVN ,如果还是无法对版本库里面的每一个子目录进行精确的权限控制的话,还不如用 CVS 。通过配置AuthzSVNAccessFile文件来控制每一个项目目录的访问权限虽然算不上特别方便,但总比 CVS 那样完全没办法好。
数据存储
SVN 同样可以使用两种数据存储方式: Berkeley DB 和 FSFS 。在我看来, Berkeley DB 的优势在于其成熟性,但需要更多的日常管理和维护,并且是平台依赖的。所以我选择更简便的 FSFS 。
APR libraries
安 装 SVN 的时候最好指定 --with-apr= 和 --with-apr-util= 参数到 Apache 安装的根目录(ServerRoot)下,而不是使用缺省的 SVN 安装包中自带的 apr 。否则如果你安装的 Apache 版本不同有可能导致 APR 库不匹配,出现类似 Can't set position pointer in file '/svn/test/db/revs/1': Invalid argument 的错误。Updated 2006-04-20 16:30 -- 比如说如果你安装的是apache 2.2.0版本,就需要在编译安装svn的时候指定--with-apxs和--with-apr参数到你的apache2.2.0安装目录下:
./configure --prefix=${subversionInstallFolder} /
--with-apxs=${apacheInstallFolder}/bin/apxs /
--with-apr=${apacheInstallFolder} /
--with-apr-util=${apacheInstallFolder} /
--with-ssl /
--with-zlib /
--enable-maintainer-mode

make clean && make && make install
签署证书
既然是公司内部的源码控制系统,通过 SSL 来加密保护登录信息还是很有必要的。证书的制作所 填写的信息其他都关系不大,只要注意生成根证书和服务器请求签证文件时的两次 Common Name 不能一样(理论上Common Name 应该是用户将会用来访问的完整域名字符串),否则会导致证书生成的时候出现 error 18 at 0 depth lookup:self signed certificate 错误。
Updated 2006-06-29 12:52 -- 似乎还是有不少朋友在安装svn的时候碰到各种各样的问题,所以我把自己用来进行 svn server 恢复的完整脚本提供给大家下载( 点击下载 svn_recover.rar 13,473 字节),仅供大家参考。需要说明的几点:
  1. 不要直接运行 reinstall.sh 脚本。因为这个脚本是针对我自己的 svn 服务器的情况来写的,目的是在重装服务器的时候可以完全实现自动化。所以如果你不去了解脚本的实际工作就放服务器上执行,由此造成的任何后果我可不负责 :)
  2. 我的 svn server 不需要提供其他的服务,所以我的安装脚本是完全以 svn 服务为中心的,如果你的服务器还需要提供 php / mysql 等服务的话,这个脚本可能并不适合你。
  3. 为 了 recover 的方便,我把 svn 所需要的一些关键文件放在了 resource 目录下面,安装脚本自动从 resource 目录下读取相关的文件拷贝到对应的目标目录下。你如果想用这个脚本,需要在 resource 目录下提供你自己服务器环境下的真实文件。本压缩包中的资源文件仅作示例。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics