一. SVN 简单介绍

Subversion(SVN) 是一个开源的版本号控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库非常像一个普通的文件server, 只是它会记住每一次文件的变动。 这样你就能够把档案恢复到旧的版本号, 或是浏览文件的变动历史。

SVN中的一些概念 :

(1). repository(源码库)

源码统一存放的地方

(2). Checkout (提取)

当你手上没有源码的时候,你须要从repository checkout一份

(3). Commit (提交)

当你已经改动了代码,你就须要Commit到repository

(4). Update (更新)

当你已经Checkout了一份源码, Update一下你就能够和Repository上的源码同步,你手上的代码就会有最新的变更

日常开发过程事实上就是这种(如果你已经Checkout而且已经工作了几天):Update(获得最新的代码) -->作出自己的改动并调试成功 --> Commit(大家就能够看到你的改动了) 。

假设两个程序猿同一时候改动了同一个文件呢,  SVN能够合并这两个程序猿的改动,实际上SVN管理源码是以行为单位的,就是说两个程序猿仅仅要不是改动了同一行程序,SVN都会自己主动合并两种改动。假设是同一行,SVN会提示文件Confict, 冲突,须要手动确认。

client软件:

(1)Windows下经常使用的client软件经常使用TortoiseSVN。它是一个免费的开源的client。 下载地址:http://tortoisesvn.net/downloads.html

(2)向Myeclipse,也有一些SVN的插件。

Subversion提供下面主要功能:

(1)文件夹版本号控制

CVS 仅仅能跟踪单个文件的历史, 只是 Subversion 实作了一个 “虚拟” 的版本号控管文件系统, 可以依时间跟踪整个文件夹的变动。 文件夹和文件都能进行版本号控制。

(2)真实的版本号历史

自从CVS限制了文件的版本号记录,CVS并不支持那些可能发生在文件上,但会影响所在文件夹内容的操作,如同复制和重命名。除此之外,在CVS里你不能用拥有相同名字可是没有继承老版本号历史或者根本没有关系的文件替换一个已经纳入系统的文件。在Subversion中,你能够添加(add)、删除(delete)、复制(copy)和重命名(rename),不管是文件还是文件夹。全部的新加的文件都从一个新的、干净的版本号開始。

(3)自己主动提交

一个提交动作,不是所有更新到了档案库中,就是全然不更新。这同意开发者以逻辑区间建立并提交变动,以防止当部分提交成功时出现的问题。

(4)纳入版本号控管的元数据

每个文件与文件夹都附有一組属性keyword并和属性值相关联。你能够创建, 并儲存不论什么你想要的Key/Value对。 属性是随着时间来作版本号控管的, 就像文件內容一样。

(5)选择不同的网络层

Subversion 有抽象的档案库存取概念, 能够让人非常easy地实作新的网络机制。 Subversion 能够作为一个扩展模块嵌入到Apache HTTP server中。这个为Subversion提供了非常先进的稳定性和协同工作能力,除此之外还提供了很多重要功能: 举例来说, 有身份认证, 授权, 在线压缩, 以及文件库浏览等等。另一个轻量级的独立Subversionserver, 使用的是自己定义的通信协议, 能够非常easy地通过 ssh 以 tunnel 方式使用。

(6)一致的数据处理方式

Subversion 使用二进制差异算法来异表示文件的差异, 它对文字(人类可理解的)与二进制文件(人类无法理解的) 两类的文件都一视同仁。 这两类的文件都相同地以压缩形式储存在档案库中, 并且文件差异是以两个方向在网络上传输的。

(7)有效的分支(branch)与标签(tag)

在分支与标签上的消耗并不必一定要与项目大小成正比。 Subversion 建立分支与标签的方法, 就仅仅是复制该项目, 使用的方法就相似于硬连接(hard-link)。 所以这些操作仅仅会花费非常小, 并且是固定的时间。

(8)Hackability

Subversion没有不论什么的历史包袱; 它主要是一群共用的 C 程序库, 具有定义完好的API。这使得 Subversion 便于维护, 而且可被其他应用程序与程序语言使用。

二.  SVN server搭建

2.1 使用yum 安装SVN包

关于YUM server的配置參考:

Linux 搭建 YUM server

http://blog.csdn.net/tianlesoftware/archive/2011/01/03/6113902.aspx

[root@singledb ~]# yum install -y subversion

Loaded plugins: rhnplugin, security

This system is not registered with RHN.

RHN support will be disabled.

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package subversion.i386 0:1.4.2-4.el5_3.1 set to be updated

--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================

Package                Arch             Version                        Repository             Size

====================================================================================================

Installing:

subversion             i386             1.4.2-4.el5_3.1                rhel-base             2.3 M

Transaction Summary

====================================================================================================

Install      1 Package(s)

Update       0 Package(s)

Remove       0 Package(s)

Total download size: 2.3 M

Downloading Packages:

subversion-1.4.2-4.el5_3.1.i386.rpm                                          | 2.3 MB     00:00

Running rpm_check_debug

Running Transaction Test

Finished Transaction Test

Transaction Test Succeeded

Running Transaction

Installing     : subversion                                                                   1/1

Installed:

subversion.i386 0:1.4.2-4.el5_3.1

Complete!

[root@singledb ~]#

验证安装版本号:

[root@singledb ~]# svnserve --version

svnserve, version 1.4.2 (r22196)

compiled Aug  5 2009, 19:03:56

Copyright (C) 2000-2006 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 back-end (FS) modules are available:

* fs_base : Module for working with a Berkeley DB repository.

* fs_fs : Module for working with a plain file (FSFS) repository.

2.2 创建SVN 版本号库

[root@singledb ~]# mkdir /u02/svn

[root@singledb ~]# svnadmin create /u02/svn/davesvn  --davesvn为版本号库名称

2.3  SVN 配置

创建版本号库后,在这个文件夹下会生成3个配置文件:

[root@singledb conf]# pwd

/u02/svn/davesvn/conf

[root@singledb conf]# ls

authz  passwd  svnserve.conf

(1)svnserve.conf:  svn服务配置文件下。

(2)passwd: username口令文件。

(3)authz: 权限配置文件。

svnserve.conf 文件, 该文件配置项分为下面5项:

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

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

password-db: 指定username口令文件名称。

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

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

Passwd 文件 :

我们在svnserve.conf文件中启用这个文件。然后配置例如以下:

[root@singledb conf]# cat passwd

### This file is an example password file for svnserve.

### Its format is similar to that of svnserve.conf. As shown in the

### example below it contains one section labelled [users].

### The name and password for each user follow, one account per line.

[users]

# harry = harryssecret

# sally = sallyssecret

dave = davepwd

tianlesoftware = tianlesoftwarepwd

authz  文件 :

在网上找到一个非常好的配置样例:

[groups]

admin = john, kate

devteam1 = john, rachel, sally

devteam2 = kate, peter, mark

docs = bob, jane, mike

training = zak

--这里把不同用户放到不同的组里面,以下在设置文件夹訪问权限的时候,用文件夹来操作就能够了。

# 为全部库指定默认訪问规则

# 全部人能够读,管理员能够写,危急分子没有不论什么权限

[/]  --相应我測试里的:/u02/svn 文件夹

* = r

@admin = rw

dangerman =

# 同意开发者能够全然訪问他们的项目版本号库

[proj1:/]

@devteam1 = rw

[proj2:/]

@devteam2 = rw

[bigproj:/]

@devteam1 = rw

@devteam2 = rw

trevor = rw

# 文档编写人员对全部的docs文件夹有写权限

[/trunk/doc]

@docs = rw

# 培训人员能够全然訪问培训版本号库

[TrainingRepos:/]

@training = rw

以下我们来配置我们的authz文件:

[root@singledb conf]# cat authz

[groups]

admin = dave

dev=tianlesoftware

[davesvn:/]

@admin = rw

@dev = rw

[root@singledb conf]#

2.4 启动和停止SVN服务

(1)启动SVN服务:

[root@singledb conf]# svnserve -d -r /u02/svn

-d表示后台执行

-r 指定根文件夹是 /u02/svn

[root@singledb conf]# ps -ef | grep svn

root      4592     1  0 18:04 ?        00:00:00 svnserve -d -r /u02/svn

root      4594  3709  0 18:04 pts/1    00:00:00 grep svn

(2)停止SVN服务:

ps -aux |grep svn

kill -9 进程杀掉

三. client连接SVN server

3.1 安装TortoiseSVN client

下载地址在第一节已说明。

3.2 找到自己项目的文件夹,右击,进行SVN 操作

(1)新建測试文件夹svn,进入后右键,点checkout:

SVN server的IP地址和版本号库名称。

新建个文件svn.txt. 把这个文件上传到SVNserver(add):

------------------------------------------------------------------------------

Blog: http://blog.csdn.net/tianlesoftware

网上资源: http://tianlesoftware.download.csdn.net

相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1 群:62697716(满); DBA2 群:62697977(满)

DBA3 群:62697850   DBA 超级群:63306533;

聊天 群:40132017

--加群须要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

转载于:https://www.cnblogs.com/blfshiye/p/4095847.html

Linux 搭建SVN server相关推荐

  1. Linux搭建SVN Server

    一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...

  2. linux 搭建 svn 小白教程

    linux搭建svn服务器: 安装svn软件包: yum install subversion mysql-server httpd mod_dav_svn mod_perl sendmail wge ...

  3. [How TO]-在ubuntu20.10上搭建SVN Server

    背景: 做为一名嵌入式工程师,工作了八九年,积攒了大量的学习资料,家里备有3个电脑.好几块硬盘,另外还有百度云盘.阿里云盘等.各种零碎的资料.不知如何分类,导致出现了有的资料只出现在某一个硬盘中,或者 ...

  4. 原 Linux搭建SVN 服务器2

    原 Linux搭建SVN 服务器 发表于1年前(2014-08-05 17:55)   阅读(12257) | 评论(3) 31人收藏此文章, 我要收藏 赞3 摘要 Linux搭建SVN 服务器 目录 ...

  5. linux 下搭建subversion (svn),CentOS Linux 搭建 SVN(CollabNet Subversion)服务器,易用性和对远程团队的...

    CentOS Linux 搭建 SVN(CollabNet Subversion)服务器,易用性和对远程团队的 Subversion® 是需要在各个地方共享源代码的全球分布式组织进行版本控制和软件配置 ...

  6. Linux搭建SVN 服务器(转)

    转自:http://my.oschina.net/lionel45/blog/298305 Linux搭建SVN 服务器 作者: 沈小然    日期:2014年 8月 5日 1          安装 ...

  7. 【远程访问】Linux搭建SVN服务器,并内网穿透实现公网远程访问

    文章目录 前言 1. Ubuntu安装SVN服务 2. 修改配置文件 2.1 修改svnserve.conf文件 2.2 修改passwd文件 2.3 修改authz文件 3. 启动svn服务 4. ...

  8. Linux 搭建SVN 服务器

    一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...

  9. Linux搭建SVN服务器详细教程

    前言 本文讲解Linux系统下如何搭建SVN服务器,详细说明各配置项的功能,最终实现可管控多个项目的复杂配置. SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统 ...

最新文章

  1. 使用字符串定界符(标准C ++)在C ++中解析(拆分)字符串
  2. Linux学习笔记(一)|目录结构
  3. cocos2d-lua-win
  4. Hive Cilent数据操作
  5. 12如何隐藏dock栏_iPhone边框“变色”壁纸,隐藏Dock栏
  6. vscode 快速调到定义处_vim技巧:在程序代码中快速跳转,在文件内跳转到变量定义处...
  7. Dos命令使用Latex编写“Hello Latex.”
  8. java wait 参数_Java Object wait()方法
  9. 【Docker】常用命令简述十一
  10. centos7学习笔记-安装配置apache
  11. Wireshark实战分析之TCP协议(二)
  12. docker学习之ssh连接
  13. 骑士cms,骑士cms快速搭建
  14. 赚大钱,你需要多一些杠杆思维
  15. 消防中计算机基础知识,消防基础知识考试题
  16. Vue Antdv 上传组件(a-upload、a-upload-dragger)二次封装(DZMAntdvUpload)
  17. hls视频流_HLS视频流:它是什么,以及何时使用它
  18. ysoserial URLDNS解析
  19. 什么是“ Windows任务的主机进程”,为什么我的PC上运行着这么多主机?
  20. DataX Transformer 源码分析及 UDF 扩展与使用

热门文章

  1. jenkins-邮件通知
  2. sofa-pbrpc框架的简单使用
  3. Ajax请求步骤(十)
  4. synchronized 异常_面试官,别挂电话,Synchronized,我还能说上半小时
  5. 己所不欲,勿施于人的意思,这句话出自哪里?
  6. 你自己的事,你不操心谁操心?
  7. 进程调度的时机切换与过程调度方式
  8. [leetcode]326. Power of Three(c语言)
  9. sql server 监视_监视SQL Server报告服务
  10. c#代码如何连数据库快照_5127数据库快照错误代码的含义