svn学习笔记4(进阶应用)
工作副本相关命令:
svn list -列出当前目录下处于版本控制的所有文件
svn status -列出工作副本中的文件(夹)的状态
svn log -查看提交日志(来自svn ci 的 -m参数)
svn info -工作副本及文件(夹)的详细信息
svn list = svn ls 只会列出处于版本控制的文件的顶级目录,而不会递归显示出来,
svn ls --recursive 会递归显示出来处于版本控制的所有文件夹下的文件
svn ls -v --recursive 会显示处于版本控制下文件详情.
svn status 列出工作副本的文件状态 ,
? -无版本控制
D -已被标记从版本库中删除
M -已被编辑过
A -已被标记增加到版本控制中
R -文件被替换
C -文件存在冲突
! -文件缺失
svn info --xml 出以xml格式输入工作副本的详细信息
多版本库解决方案
前提:
TCP/IP协议规定端口号的范围为 0-65535
0-1023号为公认端口 ftp协议:21 http协议:80
1024-49151号为注册端口 mysql: 3306 svn服务端:3690
49152-65535号为私有端口
1:
svnserve -d -r /path/repos/版本库名称 --listen-port 端口号
killall svnserve 所有版本库都会被停止
检出 svn co svn://ip:端口号 文件名 或者 svn co svn://ip/svn版本库名称 文件名
2:
svnserve -d -r /path/repos/ 同时启动repos下多个版本库
检出 svn co svn://ip/svn版本库名称 另存的文件名
优缺点比较:
多个端口号: 版本库可以创建在任意位置,但是端口号容易混淆.
一个端口号:版本库必须在同一目录下,无需分配端口号.
工作副本->工作副本
svn copy = svn cp 复制工作副本到工作副本 等同于 svn add 新文件
svn cp 源文件名称 目标文件名称
svn cp -r 版本号 源文件名称 目标文件名称 //复制历史版本文件
svn cp 文件1 文件2 文件3 ./path/ //批量复制文件
工作副本->线上版本库(不支持跨库操作,提交是不可以跨库的)
svn cp 文件名 svn ://ip/版本库名称/目标文件名 -m "" //从本地工作副本直接复制到线上版本库,相当于svn ci
ps:出现
svn: E235000: In file '/build/subversion-8E3yhQ/subversion-1.9.3/subversion/libsvn_client/copy.c' line 2099: assertion failed (commit_items != NULL)
Aborted (core dumped)错误时候应该检查检出时与复制时所填svn url是否一致 检出的时候 svn co svn://域名:端口号/目标文件名 -m "" 复制时 必须同样svn cp 工作副本文件 svn://域名:端口号/目标文件 -m ""
版本库->工作副本(支持跨库操作)
svn cp svn://ip/版本库名称/文件名 目标文件名
版本库->版本库(不支持跨库操作)
主干版本与分支版本
svn cp svn://ip/版本库名/ svn://ip/版本库名称/主干版本名称(trunk) -m ""
svn cp svn://ip/版本库名称/主干版本库名称/ svn://ip/版本库名称/分支版本库名称(branch) -m ""
建议版本库刚创建好之后创建三个文件夹 trunk(主干版本),branch(分支版本),tag(备份)