SVN服务实战。

第1章 SVN服务实战应用指南

1.1 SVN介绍

1.1.1 什么是SVN(Subversion)?

  • Svn(subversion)是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个跨平台的开源的版本控制系统。Svn版本管理工具管理着随时间改变的各种数据。这些数据放置在一个中央资料档案库(repository)中,这个档案库很像一个普通的文件服务器或者FTP服务器,但是,与其他服务器不同的是,SVN会备份并记录每个文件每一次的修改更新变动。这样我们就可以把任意一个时间点的档案恢复到想要的某一个旧的版本,当然也可以直接浏览指定文件的更新历史记录。
  • 为什么会有svn这样一个项目?
  • 官方解释:为了接管CVS的用户基础,确切的说,我们写了一个新的版本控制系统,它和CVS很相似,但是它修正了以前CVS所没有解决的许多问题。问题见SVN官方首页。
  • SVN是一个非常通用的软件系统,它常被用来管理程序源码,但是它也可以管理任何类型的文件,如文本,视频,图片等等。

SVN相关站点:

Subversion官网: 
http://subversion.tigris.org/ 
http://subversion.apache.org/ 
svn客户端:http://toroisesvn.net/ 
svn中文网站:http://www.iusesvn.com/ 
中文常见问题解答FAQ:http://subversion.apache.org/faq.zh.html 
官方手册:http://svnbook.red-bean.com/ 中英都有

1.2 svn与git的区别

1.2.1 svn集中式版本控制系统

svn版本控制系统是集中式的数据管理,存在一个中央版本库,所有开发人员本地开发所使用的代码都是来自于这个版本库,提交代码也都必须提交到这个中央版本库。

svn版本控制系统工作流程如下:

  1. 在中央库上创建或从主干复制一个分支
  2. 从中央库check out 下这个分支的代码
  3. 增加自己的代码文件,修改现存的代码或删除代码文件
  4. commit(提交)代码,假设有人在刚刚的分支上提交了代码,你就会被提示代码过期,你得先up你的代码后再提交。up代码的时候如果出现冲突,需要解决好冲突后再进行提交。

缺点

当无法连接到中央版本库的环境下,你无法提交代码,将代码加入版本控制; 
你无法查看代码的历史版本以及版本的变化过程。提交到版本控制系统中的代码我们都默认通过自测可运行的,如果某个模块的代码比较复杂,不能短时间内实现为可测试的功能,那么你需要等很长的时间才能提交自己的代码,由于代码库集中管理,因此,需要对中央版本库的存储做备份。这点分布式的版本控制系统要好一些。Svn的备份要备份所有代码数据以及所有更改的版本记录。

1.2.2 git分布式的版本控制

  • git是由Linus开发的,所以很自然的git和Linux文件系统结合的比较紧密,以至于在windows上你必须使用cygwin才能使其完美的工作。
  • 那git凭啥叫做分布式的版本控制系统呢?还是从其工作模式讲起把。
  • git中没有了中央版本库的说法了,但是为了开发小组的代码共享,我们通常还是会搭建一个远程的git仓库。
  • 但是和svn不同的是,开发者本地也包含了一个完整的git仓库,从某种程度上说本地的仓库和远程的仓库在身份上是等价的,没有主从之分。
  • 如果你的项目是闭源项目,或者你习惯于以往的集中式的管理模式的话,那么在git下你也可以像svn那样的工作,只是流程中可能会增加一些步骤。
    1. 你本地创建一个git库,并将其add到远程git库中。
    2. 你在本地添加或者删除文件,然后commit,当然commit操作都是提交到本地的git库中了。(嗯,其实是提交到git目录下的objects目录中去了)
    3. 将本地git库的分支push到远程git库的分支,如果这个时候远程git库中已经有别人push过,那么远程git库将不允许你push,这时候你需要先pull,然后如果有冲突,处理好冲突,commit到本地git库后,再push到远程git库。

从上面的描述我们可以看到,我们每个开发人员的本地都会有一个git库,我们可以随时进行commit而不需要联网,可以随时查看历史版本,当某一个功能点开发完了之后我们可以将commit后的内容push到远程git库了,如果远程git库的版本在你上次clone或者pull之后变化了,那么你需要进行pull并处理冲突,提交之后,再push到远程git库。

1.3 企业应用场景

svn仍是当前企业的主流。git正在发展,也许未来也会成为主流,但现在还不是。如果有精力,能同时掌握更好。

1.4 运维人员掌握版本管理

对于版本管理系统,运维人员需要掌握的技术点

  1. 安装,部署,维护,排障。
  2. 简单使用,很多公司都是由开发来管理,包括建立新仓库和添加删除账号
  3. 对于版本控制系统,运维人员相当于开发商,开发人员是业主,运维搭建的系统为开发人员服务的。

1.5 SVN服务运行模式与访问方式

1.5.1 SVN服务端运行方式

svn服务常见的运行访问方式有3种:

(1)独立服务器访问 
访问地址如:svn://svn.yunjisuan.org/sadoc;

(2)借助apache等http服务 
访问地址如:http://svn.yunjisuan.com/sadoc;

a,单独安装apache+svn(不要用) 
b,CSVN(apache+svn)是一个单独的整合的软件,带web界面管理的SVN软件

(3)本地直接访问(例如:file://application/svndata/sadoc)

在这里,主要介绍第一种方式以及第二种方式中的CSVN web管理方式

1.5.2 SVN客户端访问方式

SVN客户端可以通过多种方式访问服务器端,例如:本地磁盘访问,或各种各样不同的网络协议访问,但一个版本库地址永远都是一个URL,URL反映了访问方法。

1.6 SVN档案库数据格式

svn存储版本数据有2种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

  • BDB:

    伯克利DB(Berkeley DB),版本库可以使用的一种经过充分测试的后台数据库实现,不能在通过网络共享的文件系统上使用,伯克利DB是Subversion 1.2版本以前的缺省版本库格式

  • FSFS:

    一个专用于Subversion版本库的文件系统后端,可以使用网络文件系统(例如 NFS 或 SMBFS)。是1.2版本及其后的缺省版本库格式。

1.7.1 SVN 集中式版本管理系统

Svn是一种集中式文件版本管理系统。集中式管理的工作流程如下图:

集中式代码管理的核心是SVN服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后进行开发,最后解决冲突,提交。所有的版本信息都放在SVN服务器上。因此如果脱离了服务器,开发者就无法进行提交代码工作。

1.7.2 开发者利用SVN版本管理系统工作过程

下面举例说明:

开始新一天的工作:

  1. 首先从SVN服务器下载项目组最新代码。
  2. 进入自己的分支,进行开发工作,每隔一小时向服务器上自己的分支提交一次代码(很多程序员都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到新一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。
  3. 下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器。

优点:

  1. 管理方便,逻辑清晰明确,符合一般人思维习惯。
  2. 易于管理,集中式svn服务器更能保证数据安全性。
  3. 代码一致性非常高。
  4. 适合开发人数不多的项目开发。
  5. 普及度高,大部分软件配置管理的大学教材都是使用svn和vss。

第2章 搭建SVN服务端

2.1 安装配置SVN服务

检查环境

cat /etc/redhat-release

uname -r

cat /etc/redhat-release

光盘yum安装svn

yum -y install subversion

rpm -qa subversion

建立svn版本库数据存储根目录(svndata)及用户,密码权限目录(svnpasswd)

mkdir -p /application/svndata --->数据存储根目录

mkdir -p /application/svnpasswd --->用户,密码权限目录

2.2 建立项目版本库

创建一个新的Subversion项目yunjisuan,其实,类似yunjisuan这样的项目可以创建多个,每个项目对应不同的代码,这里只是以创建一个项目为例演示:

svnadmin create /application/svndata/yunjisuan

tree /application/svndata/yunjisuan/ --->没有tree则需要yum安装

  1. /application/svndata/yunjisuan/
  2. |-- README.txt
  3. |-- conf
  4. | |-- authz
  5. | |-- passwd
  6. | `-- svnserve.conf
  7. |-- db
  8. | |-- current
  9. | |-- format
  10. | |-- fs-type
  11. | |-- fsfs.conf
  12. | |-- min-unpacked-rev
  13. | |-- rep-cache.db
  14. | |-- revprops
  15. | | `-- 0
  16. | | `-- 0
  17. | |-- revs
  18. | | `-- 0
  19. | | `-- 0
  20. | |-- transactions
  21. | |-- txn-current
  22. | |-- txn-current-lock
  23. | |-- txn-protorevs
  24. | |-- uuid
  25. | `-- write-lock
  26. |-- format
  27. |-- hooks
  28. | |-- post-commit.tmpl
  29. | |-- post-lock.tmpl
  30. | |-- post-revprop-change.tmpl
  31. | |-- post-unlock.tmpl
  32. | |-- pre-commit.tmpl
  33. | |-- pre-lock.tmpl
  34. | |-- pre-revprop-change.tmpl
  35. | |-- pre-unlock.tmpl
  36. | `-- start-commit.tmpl
  37. `-- locks
  38. |-- db-logs.lock
  39. `-- db.lock
  40. 10 directories, 28 files
  41. 目录详解
  42. conf --->配置文件目录
  43. authz --->用户认证
  44. db --->数据目录
  45. hooks --->钩子脚本目录
  46. locks --->代码锁目录

2.3 编辑svn配置文件

cd /application/svndata/yunjisuan/conf/

ls

cp svnserve.conf{,.bak}

vim svnserve.conf

修改配置文件的如下信息

cat -n /application/svndata/yunjisuan/conf/svnserve.conf.bak | sed -n ‘12p;13p;20p;27p‘

  1. 12 # anon-access = read
  2. 13 # auth-access = write
  3. 20 # password-db = passwd
  4. 27 # authz-db = authz

将配置文件代码修改为如下所示:

cat -n /application/svndata/yunjisuan/conf/svnserve.conf | sed -n ‘12p;13p;20p;27p‘

  1. 12 anon-access = none #禁止匿名访问
  2. 13 auth-access = write #验证访问可写
  3. 20 password-db = /application/svnpasswd/passwd #密码文件位置
  4. 27 authz-db = /application/svnpasswd/authz #验证文件位置

特别提示:

此配置文件里的每条配置代码必须顶格写,不能有空格。

2.4 将authz文件和passwd文件拷贝到/application/svnpasswd下

cp /application/svndata/yunjisuan/conf/authz /application/svnpasswd/

cp /application/svndata/yunjisuan/conf/passwd /application/svnpasswd/

ll /application/svnpasswd/

2.5 svn启动命令帮助

svnserve --help --->svn启动命令帮助

  1. svnserve: warning: cannot set LC_CTYPE locale
  2. svnserve: warning: environment variable LANG is en
  3. svnserve: warning: please check that your locale name is correct
  4. usage: svnserve [-d | -i | -t | -X] [options]
  5. Valid options:
  6. -d [--daemon] : daemon mode #守护进程启动(后台)
  7. -i [--inetd] : inetd mode
  8. -t [--tunnel] : tunnel mode
  9. -X [--listen-once] : listen-once mode (useful for debugging)
  10. -r [--root] ARG : root of directory to serve #指定根目录
  11. -R [--read-only] : force read only, overriding repository config file
  12. --config-file ARG : read configuration from file ARG
  13. --listen-port ARG : listen port #监听端口默认3690
  14. [mode: daemon, listen-once]
  15. --listen-host ARG : listen hostname or IP address #监听IP
  16. [mode: daemon, listen-once]
  17. -T [--threads] : use threads instead of fork [mode: daemon]
  18. --foreground : run in foreground (useful for debugging)
  19. [mode: daemon]
  20. --log-file ARG : svnserve log file
  21. --pid-file ARG : write server process ID to file ARG
  22. [mode: daemon, listen-once]
  23. --tunnel-user ARG : tunnel username (default is current uids name)
  24. [mode: tunnel]
  25. -h [--help] : display this help
  26. --version : show program version information

启动svn服务

svnserve -d -r /application/svndata/

netstat -antup | grep 3690

2.6 解决svnserve启动时的警告问题

source /etc/sysconfig/i18n --->启用中文字符集

cat /etc/sysconfig/i18n

svnserve -d -r /application/svndata/ --->有中文字符集启动没有警告了

2.7 passwd文件及密码设置

vim /application/svnpasswd/passwd

在/application/svnpasswd/passwd文件末尾追加内容

tail -4 /application/svnpasswd/passwd

  1. yunjisuan = 123123 #设置账号密码
  2. benet = 123123 #设置账号密码
  3. stu001 = 123 #设置账号密码
  4. stu002 = 456 #设置账号密码

2.8 authz的授权

注意

1,权限配置文件中出现的用户名必须已在用户配置文件中定义

2,对权限配置文件的修改立即生效,不必重启svn

权限配置说明

用户组格式

  1. 【groups】
  2. =,
  3. 其中,1个用户组可以包含1个或多个用过户,用户间以逗号分隔。
  4. 例如:harry\_and\_sally = harry,sally #==>用户组 = 用户1,用户2

版本库目录格式

  1. [<版本库>:/项目/目录] #例如:[repository:/baz/fuz]
  2. @<用户组名> = <权限> #例如:@harry\_and\_sally = rw
  3. <用户名> = <权限> #例如:harry = rw
  4. 其中,方框号内部分可以有多种写法:
  5. [/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/application/svndata,[/]就是表示对全部版本库设置权限。
  6. [repos:/],表示对版本库repos设置权限。
  7. [repos:/yunjisuan],表示对版本库repos中的yunjisuan项目设置权限。
  8. [repos:/yunjisuan/benet],表示对版本库repos中的yunjisuan项目的benet目录设置权限。

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

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

authz中每个参数都要顶格写,开头不能有空格。

对于组,要以@开头,用户不需要@开头。

编辑authz配置文件进行授权,在authz末尾加入以下几句代码

vim /application/svnpasswd/authz

egrep -v "#|^$" /application/svnpasswd/authz

  1. [aliases]
  2. [groups]
  3. sagroup = stu001,stu002 #新增本行,定义组名
  4. [yunjisuan:/] #定义授权的范围
  5. yunjisuan = rw #用户单独授权
  6. benet = r #用户单独授权
  7. @sagroup = r #组用户授权

2.9 重启动svnserve(可以不用重启)

ps -ef | grep svn | grep -v grep

kill 1062

ps -ef | grep svn | grep -v grep

svnserve -d -r /application/svndata/

第3章 搭建SVN客户端

3.1 使用svn客户端(windows版)

3.1.1 软件版本选择

推荐:TortoiseSVN-1.9.7.27907-x64-svn-1.9.7 
注意:32位系统要用32位软件版本

下载链接 
链接:https://pan.baidu.com/s/1dKq_JVJN3tFxY_AvMKKTcA 
提取码:kn9z

3.1.2 svn客户端软件安装

一路yes即可

3.1.3 svn客户端软件的使用

(1)先在本地创建一个目录,起名任意,比如data

(2)鼠标右键点击data目录

svn://192.168.200.69/yunjisuan

选择右键菜单里的SVN Checkout,出现下图:

特别提示

如果连接不通,请检查Linux虚拟机的iptables是否关闭

点击OK后,出现下图:

再次点击OK以后,结束。此时目录里多了一个隐藏的目录,表示此目录已经和svn服务器连通

命令说明

(1)SVN Checkout:相当于下载,第一次连接svn服务器的时候需要和服务器的对应存储目录进行数据同步,如果服务器的对应目录里有数据文件,那么就会下载到你的本地对应目录里。

(2)SVN Update:更新数据,检查服务器端svn存储目录里是否和本地svn存储目录数据不一致,如果不一致,那么下载改变或新增的部分到本地svn目录里。(不会删除本地目录内容)

(3)SVN Commit:提交数据到svn服务器端存储目录。本地svn存储目录会和服务器端存储目录进行比对校验。会把本地改变的部分和新增的部分同步上传至服务器端。

3.1.4 svn客户端使用测试

(1)向windows的svn存储目录data里放一个空文件


(2)右键点击data目录,选择SVN Commit


(3)打开本地data目录里的文件,随便写点内容后,再次进行SVN commit


(4)直接从本地查看服务器端的数据内容

右键点击本地svn存储目录data,选择TortoiseSVN ===>Repo-browser后出现下图

双击文件可以直接远程打开文件,可以看到里面刚刚被修改后的内容已经更新至服务器端。

(5)删除本地svn存储目录data里的文件,后选择SVN Update

会发现,刚刚删除的文件又重新下载回来了。

(6)继续删除本地svn存储目录data里的文件,后选择SVN Commit

(7)再次查看服务器端存储目录里,发现文件已经被删除了

3.2 SVN的管理命令(Linux)

svn --help

  1. usage: svn <subcommand> [options] [args]
  2. Subversion command-line client, version 1.6.11.
  3. Type ‘svn help <subcommand>‘ for help on a specific subcommand.
  4. Type ‘svn --version‘ to see the program version and RA modules
  5. or ‘svn --version --quiet‘ to see just the version number.
  6. Most subcommands take file and/or directory arguments, recursing
  7. on the directories. If no arguments are supplied to such a
  8. command, it recurses on the current directory (inclusive) by default.
  9. Available subcommands:
  10. add
  11. blame (praise, annotate, ann)
  12. cat
  13. changelist (cl)
  14. checkout (co) #下载数据
  15. cleanup
  16. commit (ci) #提交数据
  17. copy (cp)
  18. delete (del, remove, rm)
  19. diff (di)
  20. export
  21. help (?, h)
  22. import
  23. info
  24. list (ls) #显示服务器端内容
  25. lock
  26. log
  27. merge
  28. mergeinfo
  29. mkdir
  30. move (mv, rename, ren)
  31. propdel (pdel, pd)
  32. propedit (pedit, pe)
  33. propget (pget, pg)
  34. proplist (plist, pl)
  35. propset (pset, ps)
  36. resolve
  37. resolved
  38. revert
  39. status (stat, st)
  40. switch (sw)
  41. unlock
  42. update (up) #更新数据
  43. Subversion is a tool for version control.
  44. For additional information, see http://subversion.tigris.org/

3.2.1 从SVN库提取数据

将文件checkout到本地目录 
svn checkout(co) remotepath localpath

mkdir yunjisuan

cd yunjisuan/

pwd

下载服务器端数据到Linux本地目录

svn co svn://192.168.200.69/yunjisuan/ /root/yunjisuan/ --username=benet --password=123123

ll

3.2.2 查看SVN版本库中的数据

svn list file:///application/svndata/yunjisuan

3.2.3 提交数据到SVN版本库

(1)一次失败的提交

pwd

mkdir [1..5]

ll

svn add * --->提交前需要先把要提交的内容做标记A(相当于windows上勾对号)

svn ci -m "message" --->提交时需要同时-m指定一段话作为备注

  1. A 1
  2. A 2
  3. A 3
  4. A 4
  5. A 5
  6. svn: warning: ‘666.txt.txt‘ is already under version control --->这个文件已经标记过了
  1. svn: Commit failed (details follow):
  2. svn: Authorization failed #提交失败,账户没有写权限,认证失败

(2)换账户重新Checkout

svn co svn://192.168.200.69/yunjisuan/ /root/yunjisuan/ --username=yunjisuan --password=123123 
换拥有写入权限的账户checkout

Store password unencrypted (yes/no)? yes --->是否作为目录的新账户和密码

ll

重新提交

svn add *

  1. svn: warning: ‘1‘ is already under version control
  2. svn: warning: ‘2‘ is already under version control
  3. svn: warning: ‘3‘ is already under version control
  4. svn: warning: ‘4‘ is already under version control
  5. svn: warning: ‘5‘ is already under version control
  6. svn: warning: ‘666.txt.txt‘ is already under version control --->这些文件已经标记过了

svn ci -m "message" --->重新提交

查看服务器端数据

svn list file:///application/svndata/yunjisuan/

原文地址:https://www.cnblogs.com/linyaonie/p/10014500.html

时间: 2024-10-05 05:46:39

SVN服务实战。的相关文章

svn服务实战

第1章 SVN服务实战应用指南 1.1 SVN介绍 1.1.1 什么是SVN(Subversion)? Svn(subversion)是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个跨平台的开源的版本控制系统.Svn版本管理工具管理着随时间改变的各种数据.这些数据放置在一个中央资料档案库(repository)中,这个档案库很像一个普通的文件服务器或者FTP服务器,但是,与其他服务器不同的是,SVN会备份并记录每个文件每一次的修改更新变动.这样我们就可以把任意一个时间点的

svn服务

svn服务实战应用指南 1.1     svn介绍 什么是svn? svn(sub-version)是近年来崛起的非常优秀的版本管理工具,与cvs管理工具一样,svn是一个跨平台的开源的版本控制系统,svn版本管理工具管理者随时间改变的各种数据 这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器或者ftp服务器,但是,与众不同的是,svn会备份并记录每个文件每一次的修改更新变动,这样我们就可以把任意一个时间点的档案恢复到想要的某一个旧的版本(回滚),当然也可以直接浏览制定文件

实战搭建 apache + svn 服务

SVN 作为版本控制软件是非常优秀的免费软件,现在想通过http://.. 访问,本文介绍一下搭建. 1.系统环境 [[email protected] ~]# uname -r 2.6.32-642.6.1.el6.x86_64 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.8 (Final) 系统IP:10.89.1.32 2.实战搭建 #安装所需要的软件 [[email protected] ~]# yum

windows下SVN服务的安装与配置

第一步 下载 去svn官网下载一个最新版的svn svn官网下载地址 该链接会跳转到 https://sourceforge.net/projects/win32svn/ 进行下载 第二步 安装 双击刚才下载的Setup-Subversion-1.8.15.msi 然后一直Next 安装完毕之后就会发现我们的PATH环境变量中多了一个C:\Program Files\TortoiseSVN\bin 第三步 配置SVN资源库 在电脑的任何位置创建一个空目录,用于存放SVN的资源.我在D盘根目录下建

Eclipse下安装SVN插件以及连接SVN服务并发布项目

Eclipse安装SVN插件 Help->Eclipse MarketPlace 查找并安装Subclipse插件 按默认步骤完成SVNEclipse插件的安装(安装完成后需要重启Eclipse后生效). 将项目从Eclipse发布到SVN服务器 新建一个Java项目: 在项目上右键,找到Team->ShareProject 选择SVN 创建一个新的资源库位置: 设置SVN地址,格式: svn://ip地址 设置SVN资源库的文件夹名称: 添加注释后选择完成: 填写SVN服务的用户名和密码 点

centos7.2 安装svn服务

简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据.这些数据放置在一个中央资料档案库(repository) 中.这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动.这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史. SVN 的一些概念: repository(源代码库):源代码统一存放的地方 Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份 Co

Ubuntu Server搭建svn服务以及迁移方法【转】

转自:http://www.linuxidc.com/Linux/2013-05/84693.htm Ubuntu Server搭建svn服务以及迁移方法 采用apache+svn,http访问方式. 先确定安装了apache,没有安装则用以下命令: sudo apt-get install apache2 然后安装subversion及svn-apache连接库: sudo apt-get install subversion sudo apt-get install libapache2-s

Linux系统中DHCP服务实战

Linux系统中DHCP服务实战部署 一.实验要求 1.将系统的主机名改成s01.benet.com 2.搭建一台dhcp服务器为局域网分配IP地址,要求分配192.168.40.0/24 3.为boss保留192.168.40.188地址 二.实验环境 虚拟机VMware Workstation11.0 RED HET 6.5 三.实验步骤 1.将系统的主机名改成s01.benet.com 2.搭建dhcp服务.为局域网分配IP地址 3.测试主机分配地址效果 4.给boss分配192.168.

构建企业代码管理系统之SVN服务(基础篇)

一.What's is a subversion Subversion(SVN)是一个开源的,跨平台的版本控制系统,由CollabNet公司成立于2000年:Subversion作为新一代的版本管理系统,以其目录版本化.原子提交.版本化的元数据.更加有效的分支和标签等特性,至今已被众多的互联网企业使用来管理网站.论坛的代码文件:Subversion最独特的地方,便是可以通过Apache的扩展模块与Apache的HTTP服务相结合,实现更安全的特性与管理,其次用户还可以通过HTTP协议去访问版本库