摘要
本文部分内容来源于网络,个人收集整理,请勿传播
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
运行方式
svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。
作为版本控制服务,目前来说git的使用以及功能更强大一些,如果是公司项目比较多,比较大,还是建议使用gitlab,对于一些小项目,或者个人使用,svn还是很轻量、很简单的。
svn搭建
svn下载地址以及官方文档:
准备安装包
本文使用最新的svn1.9.5版本。
1 | wget https://mirrors.aliyun.com/apache/subversion/subversion-1.9.5.tar.gz |
安装依赖
1 | yum install gcc gcc-c++ unzip zlib zlib-devel -y |
第二部分:svn+http环境搭建,并进行分配权限、svn配合http推送立即生效
第三部分:http多节点通过rsync(sersync2、rsync+inotify)多种方式自动同步,确认不同方式的性能和效率
编译安装
1 | tar -xvf apr-1.5.2.tar.gz && \ |
创建svn版本库
1 | svnadmin create /data/svn_home/ |
修改配置文件并分配权限
1 | cd /data/svn_home/conf |
进行测试
请无视下面的中文提示
1 | mkdir /data/svn && cd /data/svn |
测试完成
svn+http模式安装
httpd 建议编译安装。
apache 官网 http://httpd.apache.org/
安装依赖
1 | yum install gcc gcc-c++ unzip zlib zlib-devel epel* -y |
安装httpd
1 | yum install httpd httpd-devel pcre-devel mod_dav_svn -y |
编译安装
1 | tar -xvf apr-1.5.2.tar.gz && \ |
修改配置文件
待续。。。
svn post-commit
待续。。。
svn命令详解
检出
1 | svn co http://路径(目录或文件的全路径) [本地目录全路径] |
导出(导出一个干净的不带.svn文件夹的目录树)
1 | svn export [-r 版本号] http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 |
添加新文件
1 | svn add 文件名 |
提交
1 | svn commit -m “提交备注信息文本“ [-N] [--no-unlock] 文件名 |
更新文件
1 | svn update |
删除文件
1 | svn delete svn://路径(目录或文件的全路径) -m “删除备注信息文本” |
加锁/解锁
1 | svn lock -m “加锁备注信息文本“ [--force] 文件名 |
比较差异
1 | svn diff 文件名 |
查看文件或者目录状态
1 | svn st 目录路径/名 |
查看日志
1 | svn log 文件名 |
查看文件详细信息
1 | svn info 文件名 |
SVN 帮助
1 | svn help <- 全部功能选项 |
查看版本库下的文件和目录列表
1 | svn list svn://路径(目录或文件的全路径) |
创建纳入版本控制下的新目录
1 | svn mkdir 目录名 |
恢复本地修改
1 | svn revert [--recursive] 文件名 |
把工作拷贝更新到别的URL
1 | svn switch http://目录全路径 本地目录全路径 |
解决冲突
1 | svn resolved [本地目录全路径] |
不checkout而查看输出特定文件或URL的内容
1 | svn cat http://文件全路径 |
新建一个分支copy
1 | svn copy branchA branchB -m "make B branch" // 从branchA拷贝出一个新分支branchB |
合并内容到分支merge
1 | svn merge branchA branchB // 把对branchA的修改合并到分支branchB |