# 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
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
2
3
4
5
6
7
8
9
SVN版本库访问
运行SVN
# svn版本库路径
svnserve -d -r /imooc
1
2
2
访问svn(客户端命令)
# 检出版本库
mkdir svntest
cd svntest
svn co/checkout svn://192.168.0.130 (--username imooc --password 123456)
1
2
3
4
5
2
3
4
5
SVN服务自启动
编辑 /etc/rc.local(ubuntu)
vim /etc/rc.local
svnserve -d -r /imooc
1
2
2
常见SVN术语与文件状态
checkout检出和export导出
svn co/checkout -r 2 //检出版本2
svn co/export -r 3 //导出版本2
1
2
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
2
3
4
svn diff/di - 版本差异比较(-r 1)
svn mkdir - 创建目录并增加到版本控制
svn cat - 不检出工作副本直接查看指定文件
1
2
3
2
3
svn revert - 工作副本还原 (--recursive) [filename|*]
1
二进制冲突与树冲突
svn resolve [filename] - 处理冲突
svn resolved [filename] - 标记冲突已处理
1
2
3
2
3
锁定与解锁(没什么用)
svn lock - 锁定文件,防止其他成员对文件进行提交
svn unlock - 解锁文件(提交之后会自动解锁)(svn ci --no-unlock)
1
2
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
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
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
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
2
3
4
5
6
7
8