一、前言

Subversion是一个免费的开源的版本管理系统,它是作为CVS(Concurrent Versions System)的取代品出现的。本文简单介绍了Subversion在centos上的安装过程及其基本概念和使用方法。

二、安装

安装命令:

yum -y install subversion

安装完用命令:

svn –version

查看一下是否安装成功,如果成功则显示

svn, version 1.6. (r934486)
compiled Aug , ::

三、项目目录结构及导入

一般来说会在一部服务器上面管理多个项目,但是想让各个项目之间相互独立,这种情况最好为不同的项目建立不同的仓库进行管理。譬如现在有两个项目,名字分别为hello和world,接下来以hello为例子进行建仓和导入。

1. 建立本地工程的仓库

Subversion把工程的各个版本的数据集中放在一个仓库(repository)中。假定我们要建立一个本地工程,叫做hello,为了使用subversion对它进行版本管理,首先要为该工程建立一个仓库。

subversion安装后会生成一个~/.subversion目录,这里,我们将工程hello的数据仓库建立在~/.subversion/repos/hello目录。

[root@localhost ~] cd ~/.subversion/
[root@localhost .subversion] mkdir respos
[root@localhost .subversion] svnadmin create repos/hello
[root@localhost .subversion] ls –p repos/hello/
conf/  dav/  db/  format  hooks/  locks/  README.txt

2. 组建本地工程工作目录

假定工程hello的顶层目录为~/projects/hello(这里~代表/root),则应如下组建工程的工作目录:

~/projects/hello/branches
~/projects/hello/tags
~/projects/hello/trunk/
hello.c

/trunk目录是实际上的工程顶层目录,工程中的所有文件和文件夹都在该目录下组织。

[root@localhost ~]# cd projects/hello/
[root@localhost ~]# ls -p
branches/ tags/ trunk/

关于标准目录结构:

trunk是主分支,是日常开发进行的地方。

branches是分支。一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中。又比如为不同用户客制化的版本,也可以放在分支中进行开发。

tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档。

详情请参考:http://www.cnmiss.cn/?p=296

3. 将本地工程hello导入本地的Subversion的工程仓库

svn import ~/projects/hello/ file:///root/.subversion/repos/hello/ -m "initial improt"
Adding /root/projects/hello/trunk
Adding /root/projects/hello/trunk/hello.c
Adding /root/projects/hello/branches
Adding /root/projects/hello/tags
Committed revision 1.

注意,完成导入后,原目录~/projects/hello并不转换为“工作副本(working copy)”,而且该项目已经转由该仓库接管,即该仓库中已经包含了首次导入的工程的所有信息,与源目录~/project/hello再无任何关系,我们完全可以删除这一目录而不必担心丢失工程项目数据。注意,如果源目录并不是一个“工作副本”,那么就无法用svn进行管理,在其中所作的任何变动都无法提交到仓库。
    要用subversion对工程进行版本管理,那么工程项目的开发必须在一个“工作副本”中进行,即首先要从仓库获取一个“工作副本”。

4. 工程开发过程中的版本管理与控制

使用subversion对工程进行版本管理的一般流程如下:
    a)建立工程的数据仓库,并导入工程的最初版本(前面已经完成);
    b)从仓库获取一个“工作副本”(svn checkout,可以获取最新版本也可以获取以前的某个版本),在这个“工作副本”中进行工程开发,修改完毕将变动提交到仓库。
    下面简单介绍b)步骤。
    由于工程hello已经导入到仓库,因此原目录可以删除。我们删除原目录,并从仓库获取工程hello的一个“工作副本”(working copy);当然,如果你当心这样做会造成数据丢失,完全可以重新建立一个目录,将“工作副本”保存到那里。

[root@localhost projects]# rm -rf hello/[root@localhost projects]# svn checkout file:///root/.subversion/repos/hello/trunk hello
//注意,我们用红色标出了"trunk",如果不指定这一目录,则会取出除工程源文件外的其他不必要的目录如branches和tags。

至此,我们在仓库根目录~/.subversion/repos建立了仓库hello,并将本地工程导入仓库中,最后在本地目录获取仓库的一个工作副本。可以同样用这个方法建立其他仓库。

四、权限管理及配置

新建一个仓库之后,在仓库目录下面(这里是~/.subversion/repos/hello/)会有一个conf目录,里面有三个文件,分别是

authz:权限配置文件

passwd:用户名口令文件

svnserve.conf:svn服务配置文件

这里,因为开发人员会参与多个项目,所以我们希望权限配置文件和用户口令文件是公用的,我的做法是在.subversion目录下新建多一个目录repos_conf,把authz和passwd文件复制过去,根据实际情况进行配置。

修改各个仓库下面的svnserve.conf文件,该文件配置项分为以下5项:

anon-access: 控制非鉴权用户访问版本库的权限。

auth-access: 控制鉴权用户访问版本库的权限。

password-db: 指定用户名口令文件名。

authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。

realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件

修改如下:

anon-access = noneauth-access = writepassword-db = /root/.subversion/repos_conf/passwdauthz-db = /root/.subversion/repos_conf/authz

然后以默认监听端口(3690)启动svn服务:

svnserve -d -r /root/.subversion/repos

参数-d表示以守护进程运行,-r后面接服务的根目录,如果需要绑定别的端口,则在后面加上--listen-port 端口号。

关闭服务

killall svnserve

注意,如果修改了svnserve.conf文件,需要重启服务,authz和passwd则不用。

五、总结

svn的搭建及配置流程总体如下:

1. 安装svn服务端

2. 按照标准目录结构创建本地工程目录

3. 将本地工程导入仓库

4. 删除原目录,在本地获取主分支的工作副本

5. 权限和口令文件配置,svnserve.conf配置

6. 启动svn服务

参考:

http://www.cnblogs.com/hitwtx/archive/2011/11/16/2251581.html

http://www.cnmiss.cn/?p=296

centos6.5 svn服务端搭建的更多相关文章

  1. linux svn 服务端搭建

    环境是centos6.x. 关于团队对代码管理,相信大部分人习惯于svn.不过我个人比较喜欢git的.这个blog git 常用命令 就是介绍git的基本用法.现部署svn服务端方式如下: 1. 用y ...

  2. svn服务端搭建

    本文介绍的是SVN的服务器端的搭建. 一.SVN服务器安装 1.     首先来下载和搭建SVN服务器,下载地址如下: http://subversion.apache.org/packages.ht ...

  3. SVN服务端和客户端的安装与搭建

    版权声明:本文为博主原创文章,转载请注明原文出处. https://blog.csdn.net/zzfenglin/article/details/50931462 SVN简介 SVN全名Subver ...

  4. 最全Linux搭建SVN服务端教程

    文章首推 支付宝接口对接 高德地图调用 验证码登录 QQ邮箱登录 今日主题:Linux搭建SVN服务端 简介 相信程序员对SVN还是不陌生的,虽然现在用Git比较多,但是SVN也是用的,SVN可以做代 ...

  5. 阿里云ESC搭建SVN服务端

    CentOS7)下yum命令快速安装svn服务端,学习在思考中独孤中度过,在孤独中进取! 01.SVN服务的安装(subversion) 02.ESC安全组策略 1.在线安装svn服务 $ sudo  ...

  6. SVN服务端启动解决方案(2013-12-10 记)

     解决每一次开机都得用DOS启动SVN服务,而DOS窗口又无法关闭的情况 1.安装Setup-Subversion-1.8.5.msi搭建好SVN服务端(下载地址:http://subversion. ...

  7. SVN 服务端 和 客户端

    网址大全  |  EF CodeFirst  |  电视  |  MyNPOI  |  开源  |  我的皮肤  |  ASP.NET MVC4  |  前端提升  |  LINQ  |  WCF   ...

  8. git跟svn 服务端对比

    Git已经火了很久,简单的使用也没有问题,但有几个问题一直以来都没有搞清楚:git跟svn有哪些异同,两者相互的优劣是什么,git的分布式怎么理解,为什么有离线提交,,,自己动手,分别看一下服务端跟客 ...

  9. svn服务端和eclipse配合使用

    今天弄了个svn服务器来做项目的版本控制,讲讲我做的步骤吧 1.安装svn服务端 2.下载subclipse插件 3.将subclipse插件安装到eclipse上,点击Install New Sof ...

随机推荐

  1. 【转】理解 pkg-config 工具

    原文网址:http://www.chenjunlu.com/2011/03/understanding-pkg-config-tool/ 你在 Unix 或 Linux 下开发过软件吗?写完一个程序, ...

  2. webservice-之使用axis+spring开发

    一.环境配置 :在 eclipse 中配置引入相应的 spring框架( core/Remoting/Web ). axis 包.   二.代码开发 1.  在 MyEclipse 中建立一个新的 J ...

  3. TCP/IP概念简述

    这里所说的是广义上的TCP/IP协议群,而不是特指TCP和IP这两种具体的协议.既然是协议群,那么都有哪些协议呢?我们先不着急回答这个问题,因为要弄清楚这个问题,首先得了解另两件事,就是为啥要有这个协 ...

  4. Sql Server 2012 存储过程的调试

    [一]Sql Server 关于存储过程调试SQL2000是在查询分析器中的对象浏览器中选中需要调试的存储过程,右键----调试---输入参数开始调试.sqlserver2008中则完全不同,变成了必 ...

  5. Windows10+CUDA8.0+VS2015+CUDNN5下配置caffe

    [转]https://blog.csdn.net/zhj_matlab/article/details/69943869

  6. 系统管理员都要知道的 30 个 Linux 系统监控工具

    1. top - 进程活动监控命令 top 命令会显示 Linux 的进程.它提供了一个运行中系统的实时动态视图,即实际的进程活动.默认情况下,它显示在服务器上运行的 CPU 占用率最高的任务,并且每 ...

  7. C++内存管理原则

    内存可分配的地方有2个: 栈Stack和堆Heap. 内存管理的方式有3种: RAII, 智能指针或者GC. 不推荐自己管理裸指针. C++的内存管理其实是一个哲学问题: 怎样才能确定一个东西没有被其 ...

  8. java代码-----------继承练习

    总结:父类和子类拥有相同的 方法时,父类的方法被覆盖,子类 package com.sads; class fong { void pprint() { this.print(); this.prin ...

  9. 【AR实验室】mulberryAR:并行提取ORB特征

    本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 在[AR实验室]mulberryAR : ORBSLAM2+VVSION末尾提及了iPhone5s真机测试结果,其中 ...

  10. ApacheOFBiz的相关介绍以及使用总结(二)

    OFBiz的实体配置   实体定义文件一般存放位置是在对应模块的entity文件夹下面,在该模块对应的ofbiz-component.xml配置文件中加入一行,用来声明实体定义文件路径:   < ...