学习SVN
- 摘要
- 1.简介
- 2.下载安装
- 3.SVN生命周期
- 4.SVN Server搭建
- 5.SVN Client使用
- 6.git与SVN的区别
SVN 官网 Github SVN 源码
摘要
本篇博客对SVN的基础使用进行总结,以便加深理解和记忆
1.简介
SVN是Apache Subversion的缩写,是一个开源的源码版本控制系统
2.下载安装
SVN官方的发布版只提供了源码,没有提供各个平台对应的安装包或下载程序,不过可以在官网找到不同社区贡献者提供的安装包或下载程序页
-
SVN Server
- Windows
- 命令行工具(将bin目录配置到系统环境变量中)
- sourceforge提供的32位的Subversion for Windows
- VISUALSVN提供的最新的Subversion命令行工具(选用此项,同时包括了客户端)
- 可视化工具
- VISUALSVN Server
- SVNBucket(官网中有详细的教程和针对不同IDE的插件)
- 命令行工具(将bin目录配置到系统环境变量中)
- Linux:大多数 GNU/Linux 发行版系统自带了Subversion
# 检查安装 svnserve --version # Centos安装 yum install subversion # Ubuntu安装 apt-get install subversion
- Windows
-
SVN Client
- Windows
- 命令行工具:同上的VISUALSVN提供的SVN命令行工具
- 可视化工具:tortoisesvn
# 检查安装 svn --version
- Windows
3.SVN生命周期
-
SVN Serve创建版本库repository:git服务端的git init
-
检出checkout:相当于git clone
-
更新update:相当于git pull,在本地修改前先从版本库拉取同步更新
-
添加本地文件/文件夹到版本控制:相当于git add + commit
-
提交commit:相当于git push
-
解决冲突:SVN也是以行为单位管理代码和文件,若两人未提交修改同一行SVN则会进行自动合并,若为同一行则会提示冲突,需要手动确认
4.SVN Server搭建
-
命令行
- 创建版本库
svnadmin create {版本库文件夹路径}
-
配置文件:配置文件目录在版本库文件夹路径中的
conf
文件夹内- svn服务配置文件
svnserve.conf
# 通用配置项 [general] # 未鉴权用户访问版本库的权限:可读可写"write"、只读"read" 和 无访问权限"none" anon-access = read # 鉴权用户访问版本库的权限:可读可写"write"、只读"read" 和 无访问权限"none" auth-access = write # 指定用户密码配置文件位置,默认为当前文件夹下的相对路径,也可使用绝对路径 password-db = passwd # 指定权限配置文件位置,默认为当前文件夹下的相对路径,也可使用绝对路径 authz-db = authz # 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。 realm = My First Repository# 其余配置项暂略
- 用户密码配置文件
passwd
[users] # 格式:{用户名} = {密码} lyf = 15194572419
- 权限配置文件authz
# 用户组 [groups] # 格式:{权限组名} = {用户名列表} harry_and_sally = harry,sally # 权限配置,格式: # [{版本库名}:{路径}] # @{权限组名} = {权限} [test:/home/thinker] thinker = r @harry_and_sally = rw * = r
-
VN启动模式
- 单库svnserve模式:一个svnserve只能为一个版本库工作
- 多库svnserve模式:将svnserve指定到版本库的上级目录
-
启动SVN Serve服务
svnserve -d -r {目录} --listen-port {端口号,默认为3690}
- SVN版本库访问地址:
svn://192.168.0.1/{-r指定的路径}
- svn服务配置文件
-
可视化工具
-
SVNBucket:第三方提供的云端SVN服务器
-
VISUALSVN教程 CSDN
-
5.SVN Client使用
- 命令行
# 1.导入项目
svn import {SVN地址} --message {"附加信息"}
# 2.检出项目
svn checkout {SVN地址} [--username={用户名}]
# 3.导出一份“干净”的项目
svn export {SVN地址} {本地项目名}
# 4.查看本地工作副本状态:?表示未添加到版本控制中,A表示已添加待提交
svn status
# 5.查看差异
# 5.1检查本地修改
svn diff
# 5.2检查工作副本和版本库
svn diff -r {版本号,如3} [{文件名}]
# 5.3比较两个版本库
svn diff -r {版本库号1:版本库号2} [{文件名}]
# 6.添加本地文件/文件夹到版本控制
svn add {文件或文件夹名}
# 7.更新与版本仓库一致
svn update [-指定版本]
# 8.提交
svn commit -m {"附加信息"}
# 9.撤回本地工作副本某文件/文件夹的修改
svn revert {文件名}
svn revert -R {文件夹名}
# 10.版本回退
svn merge -r {当前版本号:回退版本号} {文件名}
# svn merge -r 22:21 readme
# 11.显示信息
svn log
# 12.仅查看不比较
svn cat
svn cat -r {版本号} [{文件名}]
# 13.在不检出的情况下查看版本库中的文件列表
svn list {SVN地址}
# 14.对文件进行改名和删除
svn mv b.c bb.c
svn rm d.c
# 15.为失败的事务清场
svn cleanup
# 16.SVN分支(本地操作)
# 16.1查看分支
svn copy {基版本库路径} {分支版本库路径}
# svn copy trunk/ branches/my_branch
# 16.2在新分支中修改
# 16.3切换到基版本库,将分支合并到基版本库
svn merge {分支版本库路径}
# 16.4将合并好的基版本库变化提交到版本库中
# 17.标签:主要用于项目开发中的里程碑,比如开发到一定阶段可以单独一个版本作为发布等
# 17.1未本地工作副本创建标签(新的目录将会被创建在 tags 目录下)
svn copy trunk/ tags/v1.0
# 17.2提交tag内容
svn commit -m "tags v1.0"
- 可视化工具(tortoisesvn)
TortoiseSVN安装及使用方法-CSDN博客
TortoiseSVN 使用教程 | 菜鸟教程 (runoob.com)
6.git与SVN的区别
-
Git是分布式的,而SVN不是,SVN依赖于网络
-
Git把内容按元数据方式存储,而SVN是按文件
-
Git没有一个全局版本号,而SVN有
-
Git的内容的完整性要优于SVN
-
Git的分支克隆更快
-
…