# SVN命令

# 服务端命令

创建本版库

svnadmin create svnroot
1

删除版本库

rm -rvf svnroot
1

版本库配置及权限分组

配置文件位于/path/repos/conf/

authz -- 配置用户组以及用户组权限

passwd -- 配置用户名和密码

svnserve.conf -- 配置默认权限、权限配置文件及密码配置文件

svnserve.conf

 # 没有权限不允许操作(默认可读)
 anon-access = none
 # 有权限时的操作
 auth-access = write
 
 # 用户名密码配置的路径
 password-db = passwd
 # 权限路径配置文件位置
 authz-db = authz
1
2
3
4
5
6
7
8
9

passwd

imooc = 123456
1

authz

[groups]
# 组名 = 用户名(多个用户用,隔开)
pm = imooc

[/]
@pm = rw
imooc2 = r
# * 所有用户
# * = r
1
2
3
4
5
6
7
8
9

SVN版本库访问

运行SVN

# svn版本库路径
svnserve -d -r /imooc
1
2

访问svn(客户端命令

# 检出版本库
mkdir svntest
cd svntest
svn co/checkout svn://192.168.0.130 (--username imooc --password 123456)

1
2
3
4
5

SVN服务自启动

编辑 /etc/rc.local(ubuntu)

vim /etc/rc.local
svnserve -d -r /imooc
1
2

常见SVN术语与文件状态

checkout检出和export导出

svn co/checkout -r 2 //检出版本2
svn co/export -r 3 //导出版本2
1
2

# 客户端命令

svn add - 添加到版本控制(--non-recursive)/ (* --force)
svn commit/ci - 提交修改到服务端(创建新版本号)(-m "xxxx") 
svn update/up - 更新工作副本(-r 1)
svn delete/del/remove/rm - 从版本库中删除文件或目录(-m "")
1
2
3
4
svn diff/di - 版本差异比较(-r 1)
svn mkdir - 创建目录并增加到版本控制
svn cat - 不检出工作副本直接查看指定文件
1
2
3
svn revert - 工作副本还原 (--recursive) [filename|*]
1

二进制冲突与树冲突


svn resolve [filename] - 处理冲突
svn resolved [filename] - 标记冲突已处理
1
2
3

锁定与解锁(没什么用)

svn lock - 锁定文件,防止其他成员对文件进行提交
svn unlock - 解锁文件(提交之后会自动解锁)(svn ci --no-unlock)
1
2

# svn进阶应用

svn list/ls - 列出当前目录下处于版本控制的所有文件(--recursive -v)
svn status/st - 列出工作副本中文件(夹)的状态
? - 无版本控制
D - 已被标记从版本库中删除
M - 已被编辑过
A - 已被标记添加到版本库中
R - 文件被替换
C - 文件存在冲突
! - 文件缺失

svn log - 查看提交日志(来自svn ci的-m参数)
svn info - 工作副本及文件(夹)的详细信息 (--xml>>info.xml)
1
2
3
4
5
6
7
8
9
10
11
12

# svn高级应用

# 复制工作副本并添加到当前版本库
svn copy/cp [source] [target] - 复制单个文件 (-r 4)
svn cp index.html about.html ./temp 批量操作

# 复制工作副本并直接提交到当前版本库(不可跨库)
svn cp index.html svn://192.168.0.130/imooc/target.html -m ""

# 复制当前线上版本库文件到工作副本 (可以跨库)
svn cp svn://192.168.0.130/imooc/target.html index.html 

# 复制当前线上版本库文件到其他版本库 (不可跨库)
svn cp svn://192.168.0.130/imooc/ svn://192.168.0.130/imooc2/ -m ""
1
2
3
4
5
6
7
8
9
10
11
12

主干版本与分支版本

# 复制当前线上版本库文件到其他版本库 (不可跨库)
svn cp svn://192.168.0.130/imooc/ svn://192.168.0.130/imooc2/ -m ""

1
2
3

hooks 钩子

版本库精简

killall svnserve
svnadmin dump /svnroot/imooc/ -r 6:16 > ~/imooc.repo

svnadmin create /svnroot/newimooc/

svnadmin load /svnroot/newimooc/ < ~/imooc.repo
# 复制配置文件

1
2
3
4
5
6
7
8