原文发表于cu:2016-05-24

参考文档:

  1. http://www.tuicool.com/articles/Yv2iyu7
  2. http://www.centoscn.com/CentosServer/ftp/2013/1217/2244.html
  3. http://sxlkk.iteye.com/blog/2264819
  4. http://blog.csdn.net/fax5201314/article/details/38020547

svn服务器有2种运行方式:

  1. 独立服务器; (例如:svn://x.x.x.x/xxx)
  2. 借助apache。(例如:http://x.x.x.x/xxx)

此文档基于独立服务器部署,不依赖apache。

svn存储版本数据也有2种方式:

  1. BDB;
  2. FSFS。

BDB方式在服务器中断时,有锁住数据的可能,FSFS方式相对安全,本文档部署FSFS模式。

一.环境

Server: CentOS-6.7-x86_64

Server IP: 172.18.11.212

Client: Win7 x86_64

二.软件获取

Server

Subversion官网:http://subversion.apache.org/

1.9.3版本下载:http://apache.fayea.com/subversion/subversion-1.9.3.tar.bz2

Client

TortoiseSVN官网:http://tortoisesvn.tigris.org/

1.9.3 x86_64位置版本下载:http://netix.dl.sourceforge.net/project/tortoisesvn/1.9.3/Application/TortoiseSVN-1.9.3.27038-x64-svn-1.9.3.msi

中文语言包(版本必须匹配,否则语言包不生效,客户端设置中找不到):

http://pilotfiber.dl.sourceforge.net/project/tortoisesvn/1.9.3/Language%20Packs/LanguagePack_1.9.3.27038-x64-zh_CN.msi

三.安装svn

1. 准备

系统检查

#查看服务器系统是否已经安装svn
#方式1
rpm -qa | grep subversion #方式2,查看是否有执行文件
ll /usr/bin/svn* #方式3,如果有执行文件,查看版本
svnserve –version

依赖包

常规编译包

yum install autoconf libtool gcc gcc-c++ -y

openssl(optional)

#openssl主要在客户机上通过serf使用或在apache服务器使用。
#检测
find / -name opensslv.h #如果找不到可以进行yum安装或源码安装(略)
yum install openssl openssl-devel –y

安装之后找到opensslv.h的所在目录,编译svn时使用" --with-openssl="带上路径。

zlib(必需)

#zlib主要用作svn的二进制差异算法,算法取决于zlib压缩。
#检测
rpm qa | grep zlib* #如果找不到可以进行yum安装或源码安装(http://zlib.net/,也可通过svn解压后的脚本获得)
yum install zlib zlib-devel –y

编译svn时使用" --with-zlib="带上路径(针对非默认路径的源码安装)。

2. 安装svn

解压

#将下载的subversion-1.9.3.tar.bz2放置于/usr/local/src目录,
cd /usr/local/src
tar -jxvf subversion-1.9.3.tar.bz2
cd subversion-1.9.3

配套依赖包

#在subversion-1.9.3目录内有1个可执行脚本get-deps.sh,可以下载版本相关的依赖包;
#执行之后subversion-1.9.3文件夹多出了apr,apr-util,zlib,serf(与客户端通过apache服务访问svn相关),sqlite-amalgamation等文件夹,其中apr,apr-util,zlib是subversion必需依赖包,系统中可能已安装,但版本可能不匹配(尤其是apr,apr-util,所以使用此脚本下载的依赖包最佳)。
./get-deps.sh

apr/apr-util

cd apr
./configure --prefix=/usr/local/apr
make
make install cd ../apr-util
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install

编译安装

#不使用bdb方式,预编译时可能会有告警
cd ..
./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --without-berkeley-db
make
make install

环境变量

#将svn的命令目录加入环境变量
vim /etc/profile export PATH=/usr/local/svn/bin:$PATH source /etc/profile #或者采用软链接的方式将svn的命令加入到环境变量中,如下
ln -s /usr/local/svn/bin/* /usr/bin/

验证

#返回版本信息即成功
svnserve --version

3. 部署svn

创建版本库

#创建仓库根目录
mkdir -p /svn #创建版本库svntest,如果有多个项目可建多个版本库
mkdir -p /svn/svntest
svnadmin create /svn/svntest

版本配置库文件

#版本库svntest的配置文件目录
cd /svn/svntest/conf/ vim svnserve.conf
#取消general项目下如下几行的注释;注意:每一行的都要顶头,不能有空格,否则报错
#27/36/47行可以使用相对路径(passwd/authz默认为版本库conf下文件,svntest为版本库svntest根目录),也可以指定绝对路径
19 anon-access = none #必须设置,否则所有用户不用密码就可以访问
20 auth-access = write
27 password-db = passwd
36 authz-db = authz
47 realm = svntest

用户配置文件

cd /svn/svntest/conf/

vim passwd

[users]
# harry = harryssecret
# sally = sallyssecret #设置登录账号与密码
#对用户配置文件的修改立即生效,不需要重启服务
testuser = testsecret

权限配置文件

#除如下修改外,默认配置可不变
cd /svn/svntest/conf/ vim authz
#设置admin组,用户testuser加入admin组,1个用户组可含多个用户,用逗号隔离
[groups]
admin = testuser #设置admin组对版本库svntest根目录及以下有读写权限,也可以针对单个用户设置,如 testuser = rw
[svntest:/]
@admin = rw #权限配置文件中的账户必须已在用户配置文件中定义,对权限配置文件的修改立即生效,不需要重启svn服务

authz文件语法

用户组格式

[groups]

= ,

其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔

版本库目录格式

[<版本库>:/项目/目录]

@<用户组名> = <权限>

<用户名> = <权限>

其中,方框号内部分可以有多种写法:

[/],表示根目录及以下,根目录在svnserve启动时指定的,[/]表示对仓库根目录有设置权限;

[版本库:/] 表示对版本库xxx设置权限,如上文指定的svntest版本库;

[版本库:/项目] 表示对版本库xxx中的某项目设置权限;

[版本库:/项目/目录] 表示对版本库xxx中的某项目的某目录设置权限;

权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户;

权限可以是w、r、wr和空,空表示没有任何权限

启动svn

# -d表示以daemon方式运行;
# --listen-port指定监控端口,不指定时默认是3690端口,通过端口可开启多个svn库;
# -r指定仓库根目录,注意不是某版本库根目录,根目录的设置与客户端登录地址有关联,如果设置不当,可能会导致登录的诸多问题
svnserve -d --listen-port 5690 -r /svn/ #验证
ps aux | grep svn #停止svn
killall svnserve

开机启动svn

# 注意修改shell中的相关设置,如变量SVN_HOME,端口等
# 请不要删除# chkconfig: - 85 15与# description: svn server,否则无法使用chkconfig加入服务,会提示service svn does not support chkconfig
vim /etc/rc.d/init.d/svn #!/bin/bash
# chkconfig: - 85 15
# description: svn server SVN_HOME=/svn
if [ ! -f "/usr/local/svn/bin/svnserve" ]
then
echo "svnserver startup: cannot start"
exit
fi
case "$1" in
start)
echo "Starting svnserve…"
/usr/local/svn/bin/svnserve -d --listen-port 5690 -r $SVN_HOME
echo "Finished!"
;;
stop)
echo "Stoping svnserve…"
killall svnserve
echo "Finished!"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: svn { start | stop | restart } "
exit 1
esac #赋予启动脚本权限
chmod 755 /etc/rc.d/init.d/svn
chkconfig --add svn
chkconfig --level 35 svn on #也可以简单处置,如编辑rc.local文件
vim /etc/rc.d/rc.local
/usr/local/svn/bin/svnserve -d –listen-port 5690 -r /svn

iptables

#打开相应的端口,保存iptables设置
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5690 -j ACCEPT
/etc/rc.d/init.d/iptables save

四.客户端TortoiseSVN

安装TortoiseSVN客户端及语言包,访问路径svn://ip:port。

以下是简单的使用教程。

数据导入

选择本地需要导入到服务器端的文件目录,,右键—>TortoiseSVN导入,如下:

输入版本库地址,

首次使用需要输入用户名/密码,

数据检出

选择需要检出的目录,鼠标右键,SVN检出 -->导出

填写导出版本库URL与需要导出的目录,

更新与提交

如果版本有更新,选择相应的目录,右键-->SVN更新;

如果本地做了更改,需要上传到服务器,选择相应的目录,右键-->SVN提交。

建议每次本地要做更新提交时,先SVN更新到服务器端最新版本,在最新版本上做本地修改再提交。

添加文件/目录

如果在检出目录内新增了文件/目录,需要先添加,再SVN提交到版本库,如下,

如添加的文件符号变更如下,然后才能SVN提交到版本库。

删除文件/目录

如果需要删除服务器端文件/目录,不能使用本地删除,对删除的文件/目录,右键-->TortoiseSVN-->删除,回到上级目录,SVN提交

SVN部署与简单使用的更多相关文章

  1. 开发部署一个简单的Servlet

    Servlet是一个执行在服务器端的Java Class文件,载入前必须先将Servlet程序代码编译成.class文件,然后将此class文件放在servlet Engline路径下.Servlet ...

  2. svn部署项目

    svn部署项目 在svn服务器上文件夹拷入项目文件~然后直接检出文件夹~即可

  3. Flume1.9.0的安装、部署、简单应用(含分布式、与Hadoop3.1.2、Hbase1.4.9的案例)

    目录 目录 前言 什么是Flume? Flume的特点 Flume的可靠性 Flume的可恢复性 Flume的一些核心概念 Flume的官方网站在哪里? Flume在哪里下载以及如何安装? 设置环境变 ...

  4. SVN就是这么简单

    什么是SVN SVN全称:Subversion,是一个开放源代码的版本控制系统 Svn是一种集中式文件版本管理系统.集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码, ...

  5. OpenStack部署的简单模型

    记录下看到的openstack部署的简单模型,方便自己以后定位问题 规划网络部署节点为一个controller节点(包含网络节点),两个compute节点.controller节点有3个网卡,分别为e ...

  6. [异常解决] 初玩SAE遇到的小问题——注册&创建项目+MyEclipse装插件直接部署+一个简单的JSP部署实现

    ① 新浪SAE快速上手教程:http://jingyan.baidu.com/season/43090 上面一个链接是针对PHP的相关介绍,如果用java还有点不一样,具体请看新浪SAE官网:http ...

  7. SVN部署(Centos7,Ubuntu)

    SVN 简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Sub ...

  8. Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例)

    目录: 一.什么是Flume? 1)flume的特点 2)flume的可靠性 3)flume的可恢复性 4)flume 的 一些核心概念 二.flume的官方网站在哪里? 三.在哪里下载? 四.如何安 ...

  9. jenkins maven svn 部署web项目到本地Tomcat

    查了N多网页,折腾了几个小时,终于部署成功,部署的过程比较坎坷,遇到各种问题,记录一下,不管大家是否会遇到的同样的问题,希望有所帮助: 常规操作: 1.下载jenkins,必须要做的一步,http:/ ...

随机推荐

  1. oracle查询用户的权限

    DBA_* 描述的是数据库中的所有对象 ALL_* 描述的是当前用户有访问权限的所有对象 USER_* 描述的是当前用户所拥有的所有对象 查看所有用户:  select * from dba_user ...

  2. OC字符串处理

    接到一个需求, 现有多个品牌的商品,使用字符串保存已选中的品牌,使用','隔开,可以反选. 分析问题可知: 1. 字符串由多个品牌名字组成,由 ',' 隔开. 2.如果选中的品牌不在字符串内,则拼接到 ...

  3. 19-3-15Python中闭包,迭代器,递归

    函数名的使用 函数名可以当作值赋值给变量 函数名可以当作元素放到容器里 闭包 一个嵌套函数 在嵌套函数内的函数使用外部(非全局的变量) 满足以上两条就是闭包 python中闭包,会进行内存驻留,普通函 ...

  4. python使用findall正则匹配出所有符合条件的字符串

    # -*- coding:utf-8 -*- import re mystr="qqq key:www.baidu.com<br>key:www.tengxun.com<b ...

  5. vrrp_script不起作用解决方案

    我这里主要是因为windows转码造成的:将可执行的check_nginx.sh检测脚本内容复制到U盘,然后插入内网windows,将内容用nodepad++打开,复制,粘贴到服务器的check_ng ...

  6. 基于jQuery的轮播焦点图图

    轮播焦点图 ——仿淘宝首页jquery轮播焦点图,我特意去taobao首页看了下它的轮播,好像有点相似,我不保证是我写的这样. 本例来源:站长之家http://sc.chinaz.com/jiaobe ...

  7. 课时54.audio标签(掌握)

    1.什么是audio标签? 播放音频 格式: <audio src=""> </audio> 也是由于同样的适配问题,所以出现了第二种格式 <audi ...

  8. 运维与架构—Nginx的优缺点

    Nginx的优点是: 1.工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名.目录结构 它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一 Nginx ...

  9. mongodb学习一(使用mongoResposity)

    最近公司做一个项目用到了mongodb,下面来介绍一下MongoRepository接口. 大家可以类比Hibernate的jpa,MongoRepository是一个springdata提供的一个有 ...

  10. BurpSuite—-Target模块(目标模块)

    Target功能 目标工具包含了SiteMap,用你的目标应用程序的详细信息.它可以让你定义哪些对象在范围上为你目前的工作,也可以让你手动测试漏洞的过程,Target分为site map和scope两 ...