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(备份)

 

 

svn