SVN学习笔记

SVN学习笔记

除了主流的Git,SVN也需要学一下,特别是命令行的使用。

基本概念

SVN(Apache Subversion)是Apache基金会的一个开源的VCS(版本控制系统)。

基本名词

  • repository: 代码仓库。
  • checkout: 从仓库检出代码到本地。
  • commit: 修改完代码需要提交到仓库。
  • update: 从代码仓库更新变更的代码到本地。

工作流

一般的工作流是这样:

  1. 先checkout远程仓库的代码到本地。
  2. 修改、添加、删除代码。
  3. 改完代码,提交之前先update代码防止冲突(如果修改了同一个文件中的同一行代码则会冲突)。
  4. 然后提交commit代码到仓库。

安装

官网:https://subversion.apache.org/

生命周期

  1. 创建版本库

版本库存放了代码和文件的变动历史。
使用create创建新的版本库。

  1. 检出

checkout用于从版本库拉取代码到本地。

  1. 更新

update用于更新版本库。

  1. 执行变更

执行变更包括:修改、添加、删除。
变更完毕后需要commit提交到版本库中。

  1. 复查变化

执行变更后,本地的代码就会比版本库要新,在commit之前最好复查一下代码。
使用status复查变更的文件,使用diff查看详细变更信息。

  1. 修复错误

想要撤销本地修改的文件,可以使用revert将本地文件恢复为版本库中的文件。

  1. 解决冲突

合并代码的时候可能发生冲突,merge操作可以自动处理合并代码。
可以使用resolve找出冲突。

  1. 提交更改

使用commit将变更提交到版本库,commit之前最好update一下本地代码。

创建版本库

  • 创建版本库repo
create
1
svnadmin create /opt/svn/repo

检出

checkout
1
svn checkout http://svn.server.com/svn/project_repo --username=user01

解决冲突

先update:

update
1
svn update

再提交。

如果再冲突则手动解决冲突。

提交

commit
1
2
3
4
5
6
7
8
# 查看状态
svn status

# add到版本库
svn add <filename>

# commit到版本库,可以忽略-m参数打开一个编辑器输入多行
svn commit -m "infomation"

版本回退

放弃对文件的修改,使用revert。

revert
1
2
3
4
5
6
7
8
# 恢复单个文件
svn revert <filename>

# 恢复指定目录
svn revert -R <dir>

# 恢复为一个已经提交的版本
svn merge -r 22:21 readme

查看历史

  • svn log
log
1
2
3
4
5
6
7
8
# 查看两个版本之间的信息
svn log -r 6:8

# 查看特定文件的历史
svn log <filename>

# 显示指定书目的目录的信息
svn log -l 5 -v
  • svn diff
diff
1
2
3
4
5
6
7
8
# 查看本地和版本库的差异
svn diff

# 比较指定版本的工作拷贝和版本库的区别
svn diff -r 3 <filename>

# 比较各个版本库
svn diff -r 2:3 <filename>
  • svn cat
cat
1
2
# 查看一个版本的文件
svn cat -r 5 <filename>
  • svn list
list
1
2
# 用于查看目录中的文件
svn list http://192.168.0.1/runoob01

分支

分支
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建分支
svn copy trunk/ branches/branchA

# 提交分支到版本库
svn commit -m "info"

# 切换分支
cd branches/branchA/

# 切换到trunk分支并合并分支到trunk
svn merge ../branches/branchA/

# 将合并完的trunk提交到版本库
svn commit -m "info"

标签

tag
1
2
3
4
5
# 创建tag
svn copy trunk/ tags/v2.0

# 提交tag
svn commit -m "tag v2.0"

GUI工具

windows平台有TortoiseSVN,mac平台有SnailSVN。

参考

  1. https://www.runoob.com/svn/svn-tutorial.html

评论