SVN是subversion的简称,是一个开源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。
官方网站:http://subversion.apache.org/
Windows客户端TortoiseSVN:http://tortoisesvn.net/
常见的版本控制软件:
SVN
Git
Git是一个开源的分布式版本控制系统,用以有效,高速的处理从小到非常大的项目版本管理。Git是Linus Torvalds(林纳斯·托瓦兹)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件
GitLab
GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有github类似的功能,能够浏览代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
SVN存储数据的方式
BDB Berkeley DB ,一种事务安全型表类型
FSFS,‘FSFS’采用文件系统方式,替代原来的基于Berkeley DB的实现,因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
SVN的运行方式及端口
独立服务器 3690端口 访问方式SVN:// C/S模式
借助apache运行 80 端口 访问方式http://
实验准备环境
SVN+HTTP Server (dxt-node1)
Client Server (dxt-node2)

安装成功后可以查看到 svn服务的端口已经被注册上去了

运行在独立服务器上:
1 创建版本 库目录
# mkdir /webdept #存放版本库的主目录
# svnadmin create /webdept/dxt-svn
svnadmin命令是由subversion这个软件包提供的
查看版本库文件
db目录:所有版本控制的数据存放文件
hooks目录:放置hook脚本文件的目录
locks目录:用来放置subversion监控锁定数据的目录,用来追踪存取文件库的客户端
format文件:是一个文本文件,里面存放了一个整数。表示当期文件库配置的版本号
conf目录:是这个仓库的配置文件(仓库的用户访问账号,权限等)。是我们要关注的配置文件
查看conf目录文件

authz:认证权限相关
passwd: 用户名和密码
svnserver: 服务器配置文件
针对不同版本的库修改配置文件
# vim /webdept/dxt-svn/conf/svnserve.conf

配置用户密码及认证权限
# vim /webdept/dxt-svn/conf/passwd

设置用户和组的权限
# vim /webdept/dxt-svn/conf/authz

启动SVN服务
# svnserve -d -v /webdept/
启动了所有版本库,如果只需要某一个版本库,后面添加/webdept/dxt-svn/的版本库即可
ps查询到下面这行表示启动成功了

创建测试代码并使用svn导入测试代码
导入测试代码格式: svn [选项] 源码 svn://server ip/项目名
常见的选项:
import: 将未版本化的文件纳入版本控制并提交
checkout: 从版本库中检出一个修订版
update: 更新工作拷贝
add,delete,copy,move:增、删、复制、移动文件或目录
status: 检查状态差异
diff: 检查文件行级详细差异
revert: 恢复
resolve: 解决冲突
switch: 切换工作拷贝对应的版本库分支
log: 查看历史记录
list: 显示文件目录
cat: 查看某个文件内容
# mkdir localsvn
# cd localsvn; touch 1.html 2.html; cd
# svn import /root/localsvn/ file:///webdept/dxt-svn/ -m "my first edit"

//本地导入代码,使用file,仅仅能在服务器本地导入, -m=messages,类似注释,首次加入代码使用import
代码取出
第一次在代码取出时出现如下问题

svn的配置文件有的地方需要空格,有的地方不需要空格,配置文件一个不正确,就可能导致svn不能正常使用, 几行配置所在行第一个字母前不能有任何空格,配置项等号左右两边各一个空格。配置项后面也不要紧跟着#之类的注释字符

提交代码(注意用户权限)

拓展:
commit,SVN的提交是将在工作空间做的修改进行提交,包括文件内容的修改,文件或目录的添加,删除,命名,移动等操作。开发项目时,你会在工作拷贝中修改项目的代码,你总要把修改之后做过的改动又存回到项目仓库中去。这个过程称为“提交”。提交是将你对工作拷贝所作的所有改动发送并存储到中央项目仓库中。
add 功能:向文件拷贝所在的文件夹中添加新的文件,并作出标识,是新添加的,下一步提交时将一并提交到Subversion版本库中去。简单的说就是将一新文件加入svn,你添加再提交后该文件就进入subversion版本中去了;
checkout:check out导出获得文件后,导出的文件仍处于SVN版本控制中,与版本库保持关联,比如你可以进行Svn Update或者Svn Commit操作,checkout是第一次用,后面的用法就是更新
SVN + Apache
SVN+Apache的需要subversion的两个动态库支持,同时需要密码验证的支持
查看apache对svn模块的支持,有下面svn相关库,就证明安装成功


配置Apache支持svn
# vim /etc/httpd/conf.d/subversion.conf

创建用户passwd文件

# htpasswd /webdept/svn/passwd dxt2
# htpasswd /webdept/svn/passwd dxt3

创建authz权限文件
# vim /webdept/svn/authz

启动服务测试
# systemctl restart httpd
访问 http://192.168.6.227(我的内网ip)/webdept/dxt-svn

到此我们的SVN服务本地和本地+Apache的模式已成功的完成配置使用。
网友评论