SVN学习--进阶

SVN进阶应用

ls、st、log、info

1
2
3
4
svn list --列出当前目录下处于版本控制的所有文件(添加-v显示更详细信息 --recursive 强制递归文件中的信息)
svn status --列出工作副本中的文件状态
svn log --查看提交日志
svn info --查看工作副本及文件的详细信息

svn status中的状态说明

遇到问题:svn log 后显示 svn: E220001: 条目不可读
解决:服务器的权限配置文件conf/svnserve.conf 中设置anon-access = none 即可. 然后重启Subversion 服务.

多版本库解决方案

解决方案A

场景:当只有一台服务器当做版本库的时候,同一个服务器要开很多次服务,但是每一种服务对应只能一个端口号,所以当我们创建很多版本库的同时,再启动服务的时候也要手动分配一个端口号,svn默认端口3690

端口号知识

回顾创建版本库: svnserve create 版本库名称

为其他版本库启动服务

1
2
svnserve -d -r 路径1 --listen-port 3691
svnserve -d -r 路径2 --listen-port 3692

注意:当同一个服务器有多个版本库,在使用checkout 后的url 要加上版本号,否则或链接默认端口号3690

killallserve –关闭所有服务

使用这种手动修改端口号的方法只适用于少量版本库

解决方案B

启动服务的路径为存放各个版本库的父级目录版本库

1
svnserve -d -r 父级目录

只使用一个端口号一次性启动了所有的版本库,条件时所有版本库要建立在一个目录下

唯一要注意的是,当我们只用一个端口号对接多个服务器,在checkout下有点不同

1
2
(客户端)
svn co svn:0.0.0.0/需要的版本库

总结

svn copy

复制:工作副本与工作副本之间的复制。。。。
在这之间需要理清楚复制从哪到哪

作副本与工作副本

1
2
3
(单个文件复制)
svn copy index.html copy.html
<!--复制到copy.html新文件中-->

1
2
3
4
(批量文件复制)
svn copy index.html ./复制到的路径
<!--只能复制到不同目录文件中,因为文件中文件名id唯一-->
<!-- .表示当前目录 -->

工作副本到服务器版本库

这种不经过本地的代码直接复制到版本库中,成功后将版本号+1

1
svn copy index.htm svn:0.0.0.0/版本库名称/目标 -m "copy a file"

注意:

服务器版本库到工作副本

1
2
svn copy svn:0.0.0.0/版本库名称/目标 复制到的文件
<!--这种操作支持跨库操作-->

可用从其他工作副本 获取到线上版本库

版本库到版本库

继续阅读——>

主干版本与分支版本

在主干版本目录中创建一个目录区分主版本和分支版本

创建一个主干版本

1
svn cp svn://0.0.0.0/版本库名称/ svn://0.0.0.0/版本库名称/trunk -m "setup a trunk"

创建一个分支版本

1
svn cp svn:0.0.0.0/版本库名称/版本库名称 svn:0.0.0.0/版本库名称/branch -m "create a branch"

(*^▽^*)