在windows上配置svn的方法
在linux 10.117.100.130 上安装svn
svn库的导入导出
查看svn服务器版本
SVN备份策略
Svn 服务配置和维护常用命令
linux下启动和停止
win下启动和停止svn
把svn加为系统服务
配置apache通过http访问svn
svn 命令行
====================================在windows上的配置方法===============================================================
1. 环境和软件准备
Window-Subvsersion : http://subversion.tigris.org/servlets/ProjectDocumentListolderID=91
2. 配置管理
2.1. 创建仓库 (svnadmin)
在硬盘上创建个空目录,作为 SVN 的仓库目录。如: E:/svnroot/repository 。
下面使用两种方式创建仓库的初时文件结构和存储方式。
-
命令方式
-
TortoiseSVN 客户端方式,
后面所有文档都采用两种方式说明,其功能完全相同。请根据实际情况选择使用。
命令方式( DOS 下):
# 默认方式,采用 FSFS 方式存储数据,这是推荐方式,管理和迁移相对 bdb 方式简单
svnadmin create E:/svnroot/repository
或
svnadmin create &endash;fs-type bdb E:/svnroot/repository
上为bdb的文件系统方式, 一般默认是native的FS即 NTFS
TortoiseSVN 客户端方式
安装TortoiseSVN
创建空目录
进入空目录,右键TortoiseSVN 》创建库here
2.2. 配置服务
进入仓库目录下的 conf 文件夹。也就是 E:/svnroot/repository/conf
里面有 3 个默认的配置文件: authz , passwd , svnserve.conf
-
authz 典型的配置是设置由 authz 控制授权,即哪个组可以对这个目录有什么权限
-
svnserve.conf 控制 svnserve 的启动配置选项,可以配置认证和授权方式,
-
passwd 控制认证的方式来控制访问权限。也可以使用匿名方式,但不推荐。所有用户和密码
使用 authz 和 passwd 的典型配置:
请特别注意:以下三个配置文件的配置,每行有效配置前不能有空格,不然配置会失败。
——————————————服务配置文件 svnserve.conf—————————————————–
&ldots;&ldots;
### 匿名方式不允许访问
anon-access = none
&ldots;&ldots;
### Uncomment the line below to use the default password file.
### 表示访问仓库的认证有文件 passwd 提供的账户确定
password-db = passwd
&ldots;&ldots;
### Uncomment the line below to use the default authorization file.
### 表示认证后的账户访问权限由文件 authz 定义
authz-db = authz
### This option specifies the authentication realm of the repository.
&ldots;&ldots;
#realm = My First Repository
——————————————–认证配置文件 passwd————————————————————–
passwd 文件实际提供访问本仓库的账户管理,文件格式就是 ini 方式的格式
[users]
# harry = harryssecret
# sally = sallyssecret
testuser1=testuser1
testuser2=testuser2
这表示本仓库配置了二个用户及:其中一个用户 testuser1, 他的访问密码是 testuser1。
访问密码可以使用明文,也可以使用 htpasswd.exe ( apache 服务器提供的工具方法,安装 apache 服务器后,在其 bin 目录中有该程序文件)进行加密处理。
——————————————–授权配置文件 authz—————————————————————-
该文件负责认证后的用户的权限控制,配置稍微复杂,但其实也就是个 ini 配置文件而已。
典型配置:
# groups 段提供配置组的功能 , 但组成员必须是 passwd 文件中定义的用户才有效。可以对组
# 进行权限控制,所有组成员具有组对应的访问权限。
[groups]
# 表示定义了一个管理组叫 admin_group, 包括 harry 和 sally , admin_group 前千万不能有空格
admin_group=testuser1
dev_group=testuser2
# 下面就是定义具体仓库下目录的访问权限
# 一般对管理员来说都具有整个仓库的读写权限,一般人员对整个敞开具有读取权限,下面
# 就是这样的配置 ,[/] 表示整个仓库的根,组的引用使用 @ ,对应的权限可以是 r,w,rw 或空
[/]
@admin_group = rw
@dev_group = rw
* = r
[/test_project]
@admin_group = rw
@dev_group = rw
* = r
[repository:/]
@admin_group = rw
@dev_group = rw
* = r
以上的配置完成后,就可以启动服务器了,下面说明服务器的启动。
注意,以上 authz 和 passwd 文件在管理中因为具体项目的加入和人员的变动会经常的修改,这也是 SVN 管理主要的工作
2.3. 启动服务 (svnserve)
Svn 服务器一般有三种方式, svnserve , apache 和 SSH 。
-
svnserve 是最高效的方式,一般应用于内部开发 中使用。
-
Apache 方式因为可以很好的部署在 internet 上,所以公 使用最方便,但配置稍微相对复杂点点,呵呵~~。
-
ssh方式
命令方式( DOS 下)启动:
svnserve &endash;d &endash;r “E:/svnroot/repository”
-d 参数是以独立服务的方式启动
-r 是制订要加载的仓库的物理路径
添加为Windows系统服务
方法1(推荐):
在Windows NT中(包括Windows XP, Windows 2000, Windows 2003 Server, Windows vista)本身包含了一个安装服务的工具,叫做”Service Control”,也就是sc.exe。
1.安装为服务:
例:我的Subversion安装在”C:/Program Files/Subversion“,版本库在”E:/svnroot/repository“,
而我希望对应的Subversion服务名为svnservice,安装这个svn服务的命令就可以这样写:
SC create svnservice binPath= “/”C:/Program Files/Subversion/bin/svnserve.exe/” –service –root /”E:/svnroot/repository/”” displayname= “SVNService” depend= Tcpip start= auto 配置为自启动服务
在以前启动svnserve时会使用”-d”选项,也就是守护进程模式,在这里不能使用,会导致服务无法启动。同样,”-i”和”-t”选项也不能使用。
另外还有两点需要小心处理。
-
首先,如果路径中包括空格,一定要用”r;/”处理双引 ,例如上面的例子中如果svnserve.exe在
”r;C: /Program Files/Subversion/bin/svnserve.exe”中,则命令应该写为”r;binpath= “/”C:/Program Files/Subversion/bin/svnserve.exe/””(”r;”中的内容):
SC create svnservice binPath= “/”C:/Program Files/Subversion/bin/svnserve.exe/” –service –root /”E:/svnroot/repository/”” displayname= “SVNService” depend= Tcpip
-
其次,sc对选项的格式还有要求,例如”r;depend= Tcpip”不能写为”r;depend = Tcpip”或”r;depend=Tcpip”,也就是”r;=”前不能有空格,而后面必须有空格。
2.启动服务
在命令行窗口执行完这个命令之后,服务还没有启动,你可以继续运行”net start svnservice”启动这个服务。
3.停止服务
然后使用”net stop svnservice”停止服务。
4.删除服务
如果服务安装的有问题,你可能需要删除服务。要删除前面添加的服务,只需要运行”sc delete svnservice“,
“svnservice”就是我们创建服务时使用的名字。
5.配置服务是自动启动
默认情况下安装的服务不会随Windows的启动而启动,为了使svn服务能够随Windows启动而启动,
需要修改一下”sc create”命令(首先要删除),增加”start= auto”选项:
SC create svnservice binPath= “/”C:/Program Files/Subversion/bin/svnserve.exe/” –service –root /”E:/svnroot/repository/”” displayname= “SVNService” depend= Tcpip start= auto
当然你也可以使用图形化的工具修改服务的属性,你可以在”r;开始->运行…”中执行”services.msc”,然后在界面中修改。
在vista下要以管理员的权限运行CMD, 否则会出现权限问题.
=================================在linux 10.117.100.130 上安装svn===============================================================
1、下载svn for linux 最新版 http://subversion.tigris.org
2、连接vpn并使用sshsecure client上传
3、使用cat /proc/version 查看系统是什么Linux,
结果显示是centos
4、查看磁盘使用情况
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vgroot-root
6887724 1757136 4775056 27% /
/dev/mapper/vgehong-ehong 逻辑卷
20282620 176200 19059484 1% /usr/local/ehong
/dev/sda1 194442 14424 169979 8% /boot
tmpfs 2022252 0 2022252 0% /dev/shm
5、解压缩并安装
-
解压:#: tar zxvf subversion-1.3.2.tar.gz
-
依次输入./configure , make , make install 进行编译安装完成。
-
开启SVN服务:svnserve -d
-
检测服务是否开启:netstat -ntlp如果看到3690的端口正常开放了,证明SVN启动了。
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 /home/tmp/httpd-2.2.4/srclib/apr apr
ln -s /home/tmp/httpd-2.2.4/srclib/apr-util apr-util
./configure && make && make install
安装完成后,查看是否存在文件$APACHE_HOME/modules/mod_dav_svn.so(默认/usr/local/apache2/modules/mod_dav_svn.so)。另外,如果该机器上以前是装过旧版本的SVN,要把”/usr/local/lib/libsvn*”文件都删除。
正式使用前准备:
首先我们得建立一个SVN的项目,一般人都认为建立项目就只需要一个文件,在我第一次使用SVN之前都有这样的看法,SVN建立项目需要建立文件夹
-
建立项目命令:svnadmin create project_name project_name 为你的project名字,可以任意取。
建立完毕后,project_name是一个文件夹,进入文件夹,可以看到一个conf的文件夹。
还有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库的导入导出============================================================================
//导出
1、首先进入库的相应目录
cd e:/svnroot
2、导出/java-source所有文件到
E:/svnroot>svnadmin dump ./java-source > java-dump
3、将java-dump上传到
//还原
$svnadmin load java-source < java-dump
ok成功导入。
停止subversion服务
ps &endash;aux | grep svnserve
kill -9 ID
查看svn服务器版本
C:/Documents and Settings/server>svnadmin –version 用svn –version效果一样
svnadmin,版本 1.5.6 (r36142)
编译于 Mar 6 2009,14:54:47
版权所有 (C) 2000-2008 CollabNet。
Subversion 是开放源代码软件,请参阅 http://subversion.tigris.org/ 站点。
此产品包含由 CollabNet(http://www.Collab.Net/) 开发的软件。
下列版本库后端(FS) 模块可用:
* fs_base : 模块只能操作BDB版本库。
[root@localhost ~]# svn –version
svn, version 1.6.11 (r934486)
compiled Apr 20 2010, 00:24:22
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository access (RA) modules are available:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
– handles ‘http’ scheme
– handles ‘https’ scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
– with Cyrus SASL authentication
– handles ‘svn’ scheme
* ra_local : Module for accessing a repository on local disk.
– handles ‘file’ scheme
====================================SVN备份策略=============================================================================
文章摘要:Subversion适合于规模一般(几十开发人员)的项目代码的版本管理工作。使用体验较VSS、CVS等好,推荐在选择版本管理工具时可以试用一下。
安装Subversion
1 安装svn-1.4.0-setup。
2 将SVN配置成服务。
配置管理的一个重要使命是保证数据的安全性,防止服务器应硬盘损坏、误操作造成数据无法恢复的灾难性后果。因此制定一个完整的备份策略非常重要。
一般来说,备份策略应规定如下几部分内容:备份频度、备份方式、备份存放地点、备份责任人、灾难恢复检查措施及规定。
svn备份一般采用三种方式:1)svnadmin dump 2)svnadmin hotcopy 3)svnsync.
注意,svn备份不宜采用普通的文件拷贝方式(除非你备份的时候将库暂停),如copy命令、rsync命令。
笔者曾经用 rsync命令来做增量和全量备份,在季度备份检查审计中,发现备份出来的库大部分都不可用,因此最好是用svn本身提供的功能来进行备份。
优缺点分析:
==============
第一种svnadmin dump是官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。
缺点是:如果版本比较大,如版本数增长到数万、数十万,那么dump的过程将非常慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复。
个人建议在版本数比较小的情况下使用这种备份方式。
第二种svnadmin hotcopy原设计目的估计不是用来备份的,只能进行全量拷贝,不能进行增量备份;
优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。
缺点是:比较耗费硬盘,需要有较大的硬盘支持(俺的备份机有1TB空间,呵呵)。
第三种svnsync实际上是制作2个镜像库,当一个坏了的时候,可以迅速切换到另一个。不过,必须svn1.4版本以上才支持这个功能。
优点是:当制作成2个镜像库的时候起到双机实时备份的作用;
缺点是:当作为2个镜像库使用时,没办法做到”r;想完全抛弃今天的修改恢复到昨晚的样子”;而当作为普通备份机制每日备份时,操作又较前2种方法麻烦。
下面具体描述这三种的备份的方法:
===============
1、svnadmin dump备份工具
————————
这是subversion官方推荐的备份方式。
1)定义备份策略:
备份频度:每周六进行一次全量备份,每周日到周五进行增量备份
备份地点:备份存储路径到/home/backup/svn/
备份命名:全量备份文件名为:weekly_fully_backup.yymmdd,增量备份文件命名为:daily-incremental-backup.yymmdd
备份时间:每晚21点开始
备份检查:每月末进行svnadmin load恢复试验。
2)建立全量备份脚本:
#!/usr/bin/perl -w
my $svn_repos=”/home/svn/repos/project1″;
my $backup_dir=”/home/backup/svn/”;
my $next_backup_file = “weekly_fully_backup.”.`date +%Y%m%d`;
$youngest=`svnlook youngest $svn_repos`;
chomp $youngest;
print “Backing up to revision $youngestn”;
my $svnadmin_cmd=”svnadmin dump –revision $youngest $svn_repos >$backup_dir/$next_backup_file”;
`$svnadmin_cmd`;
open(LOG,”>$backup_dir/last_backed_up”); #记录备份的版本
print LOG $youngest;
close LOG;
#如果想节约空间,则再执行下面的压缩脚本
print “Compressing dump file…n”;
print `gzip -9 $backup_dir/$next_backup_file`;
3)建立增量备份脚本:
#!/usr/bin/perl -w
my $svn_repos=”/home/svn/repos/project1″;
my $backup_dir=”/home/backup/svn/”;
my $next_backup_file = “daily_incremental_backup.”.`date +%Y%m%d`;
open(IN,”$backup_dir/last_backed_up”);
$previous_youngest = <IN>;
chomp $previous_youngest;
close IN;
$youngest=`svnlook youngest $svn_repos`;
chomp $youngest;
if ($youngest eq $previous_youngest)
{
print “No new revisions to backup.n”;
exit 0;
}
my $first_rev = $previous_youngest + 1;
print “Backing up revisions $youngest …n”;
my $svnadmin_cmd = “svnadmin dump –incremental –revision $first_rev $youngest $svn_repos > $backup_dir/$next_backup_file”;
`$svnadmin_cmd`;
open(LOG,”>$backup_dir/last_backed_up”); #记录备份的版本
print LOG $youngest;
close LOG;
#如果想节约空间,则再执行下面的压缩脚本
print “Compressing dump file…n”;
print `gzip -g $backup_dir/$next_backup_file`;
4)配置/etc/crontab文件
配置 /etc/crontab 文件,指定每周六执行weekly_backup.pl,指定周一到周五执行daily_backup.pl;
具体步骤俺就不啰嗦了.
5)备份恢复检查
在月底恢复检查中或者在灾难来临时,请按照如下步骤进行恢复:恢复顺序从低版本逐个恢复到高版本;即,先恢复最近的一次完整备份 weekly_full_backup.071201(举例),然后恢复紧挨着这个文件的增量备份 daily_incremental_backup.071202,再恢复后一天的备份071203,依次类推。如下:
user1>mkdir newrepos
user1>svnadmin create newrepos
user1>svnadmin load newrepos < weekly_full_backup.071201
user1>svnadmin load newrepos < daily_incremental_backup.071202
user1>svnadmin load newrepos < daily_incremental_backup.071203
….
如果备份时采用了gzip进行压缩,恢复时可将解压缩和恢复命令合并,简单写成:
user1>zcat weekly_full_backup.071201 | svnadmin load newrepos
user1>zcat daily_incremental_backup.071202 | svnadmin load newrepos
…
(这部分内容很多参考了《版本控制之道》)
2、svnadmin hotcopy整库拷贝方式
————————-
svnadmin hotcopy是将整个库都”r;热”拷贝一份出来,包括库的钩子脚本、配置文件等;任何时候运行这个脚本都得到一个版本库的安全拷贝,不管是否有其他进程正在使用版本库。
因此这是俺青睐的备份方式。
1)定义备份策略
备份频度:每天进行一次全量备份,
备份地点:备份目录以日期命名,备份路径到 /home/backup/svn/${mmdd}
备份保留时期:保留10天到15天,超过15天的进行删除。
备份时间:每晚21点开始
备份检查:备份完毕后自动运行检查脚本、自动发送 告。
2)建立备份脚本
在自己home目录 ~/下创建一个文件,backup.sh:
#!/bin/bash
SRCPATH=/home/svn/repos/; #定义仓库parent路径
DISTPATH=/home/backup/svn/`date +%m%d`/ ; #定义存放路径;
if [ -d “$DISTPATH” ]
then
else
mkdir $DISTPATH
chmod g+s $DISTPATH
fi
echo $DISTPATH
svnadmin hotcopy $SRCPATH/Project1 $DISTPATH/Project1 >/home/backup/svn/cpreport.log 2>&1;
svnadmin hotcopy $SRCPATH/Project2 $DISTPATH/Project2
cp $SRCPATH/access $DISTPATH; #备份access文件
cp $SRCPATH/passwd $DISTPATH; #备份passwd文件
perl /home/backup/svn/backup_check.pl #运行检查脚本
perl /home/backup/svn/deletDir.pl #运行删除脚本,对过期备份进行删除。
3)建立检查脚本
在上面指定的地方/home/backup/svn/下建立一个perl脚本:backup_check.pl
备份完整性检查的思路是:对备份的库运行 svnlook youngest,如果能正确打印出最新的版本 ,则表明备份文件没有缺失;如果运行 错,则说明备份不完整。我试过如果备份中断,则运行svnlook youngest会出错。
perl脚本代码如下:
#! /usr/bin/perl
## Author:xuejiang
## 2007-11-10
## http://www.scmbbs.com
use strict;
use Carp;
use Net::SMTP;
#### defined the var #######
my $smtp =Net::SMTP->new(‘mail.scmbbs.com’, Timeout => 30, Debug => 0)|| die “cann’t connect to mail.scmbbs.comn”;
my $bkrepos=”/home/backup/svn/”.&get_day;#定义备份路径
my $ssrepos=”http://www.scmbbs.com/repos”;#定义仓库url
my @repos = (“project1″,”project2”);
my $title=”echo “如下是昨晚备份结果与真实库对比的情况,如果给出备份版本数,则表示备份成功;如果给 错信息或没有备份版本数,则表示备份失败:” >./report”;
system $title || die “exec failedn”;
foreach my $myrepos(@repos)
{
my $bkrepos1=$bkrepos.”/”.$myrepos;
my $ssrepos1=$ssrepos.”/”.$myrepos;
my $svnlookbk1 = “echo “$myrepos 昨晚备份的版本是:”>>./report;svnlook youngest “.$bkrepos1.” >> ./report 2>&1″;
my $svnlookss1 = “echo “$myrepos 真实库中的最新版本及最后修改时间是:”>>./report;svn log -r’HEAD’ “.$ssrepos1.” >> ./report 2>&1″;
system $svnlookbk1 || die “exec failedn”;
system $svnlookss1 || die “exec failedn”;
}
my $body =”echo “=========================================================================” >>./report”;
my $bottom =”echo “备份位置:来自http://www.scmbbs.com的”.$bkrepos.”” >>./report”;
system $body || die “exec failedn”;
system $bottom || die “exec failedn”;
###### report the result ####
open(SESAME,”./report”)|| die “can not open ./report”;
my @svnnews = <SESAME>;
close(SESAME);
foreach my $line1 (@svnnews)
{
print $line1.”n”;
}
my @email_addresses =(“scm@list.scmbbs.com”,”leader1@scmbbs.com”,”leader2@scmbbs.com”);
my $to = join(‘, ‘, @email_addresses);
$smtp->mail(“scm@scmbbs.com”);
$smtp->recipient(@email_addresses);
$smtp->data();
$smtp->datasend(“Toton”);
$smtp->datasend(“From: svnReport@scmbbs.comn”);
$smtp->datasend(“Subject:svn备份检查 告”.&get_today.”n”);
$smtp->datasend(“Reply-to:scm@scmbbs.comn”);
$smtp->datasend(“@svnnews”);
$smtp->dataend();
$smtp->quit;
#############
sub get_today
{
my( $sec, $min, $hour, $day, $month, $year ) = localtime( time() );
$year += 1900;
$month++;
my $today = sprintf( “%04d%02d%02d”, $year, $month, $day);
return $today;
}
sub get_day
{
my( $sec, $min, $hour, $day, $month, $year ) = localtime( time() );
$year += 1900;
$month++;
my $today = sprintf( “%02d%02d”, $month, $day);
return $today;
}
4)定义删除脚本
由于是全量备份,所以备份不宜保留太多,只需要保留最近10来天的即可,对于超过15天历史的备份基本可以删除了。
在/home/backup/svn/下建立一个perl脚本:deletDir.pl
(注意,删除svn备份库可不像删除普通文件那么简单)
5)修改/etc/crontab 文件
在该文件中指定每晚21点执行”r;backup.sh”脚本。
3、svnsync备份
———————–
使用svnsync备份很简单,步骤如下:
1)在备份机上创建一个空库:
svnadmin create svnbackup
2)更改该库的钩子脚本pre-revprop-change(因为svnsync要改这个库的属性,也就是要将源库的属性备份到这个库,所以要启用这个脚本):
cd SMP/hooks;
cp pre-revprop-change.tmpl pre-revprop-change;
chmod 755 pre-revprop-change;
vi pre-revprop-change;
将该脚本后面的三句注释掉,或者干脆将它弄成一个空文件。
3)初始化,此时还没有备份任何数据:
svnsync init file:///home/backup/svn/svnsync/svnbackup/ http://svntest.subversion.com/repos/svnbackup
语法是:svnsync init {你刚创建的库url} {源库url}
注意本地url是三个斜杠的:///
4)开始备份(同步):
svnsync sync file:///home/backup/svn/svnsync/svnbackup
5)建立同步脚本
备份完毕后,建立钩子脚本进行同步。在源库/hooks/下建立/修改post-commit脚本,在其中增加一行,内容如下:
/usr/bin/svnsync sync –non-interactive file:///home/backup/svn/svnsync/svnbackup
你可能已经注意到上面的备份似乎都是本地备份,不是异地备份。实际上,我是通过将远程的备份机mount(请参阅mount命令)到svn服务器上来实现的,
逻辑上看起来是本地备份,物理上实际是异地备份。
——————————————————————————–
Subversion独立服务和与apache整合服务。
1、Svn独立服务安装
操作系统: Redhat Linux AS3 AS 4 ContOS AS 4
安装包获取:
下载[url]http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz[/url]和[url]http://subversion.tigris.org/downloads/subversion-deps-1.4.0.tar.gz[/url]。
编译:
以root用户登录。
将subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz传到服务器。
tar xfvz subversion-1.4.0.tar.gz
tar xfvz subversion-deps-1.4.0.tar.gz
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!