随着项目的开发,项目的版本会非常多,我们可以对SVN的版本进行精简。
为了演示,我的虚拟机SVN版本比较小,最大版本号为7,我只精简成保留4-7版本,前面的三个版本丢弃掉。
[root@localhost hello]# svn info
路径: .
工作副本根目录: /root/svn/hello
URL: svn://192.168.8.194/hello
版本库根: svn://192.168.8.194/hello
版本库 UUID: 8fe3937b-a4af-401c-9ecf-fc89928b4ebe
版本: 7
节点种类: 目录
调度: 正常
最后修改的作者: harry
最后修改的版本: 7
最后修改的时间: 2019-04-24 09:00:12 +0800 (三, 2019-04-24)
原理:
先停止svn服务,以防其他人进行提交
[root@localhost hello]# killall svnserve
备份区间段的svn版本
[root@localhost hello]# svnadmin dump /root/hello/ -r 4:7 > /root/hbk/hello.repo
* 已转存版本 4。
* 已转存版本 5。
WARNING 0x0000: 版本 2 引用的数据比最旧的转存版本 (r4) 还旧。加载这个转存到空的版本库会失败。
* 已转存版本 6。
* 已转存版本 7。
WARNING 0x0000: 导出的版本范围包含的引用超出导出范围。
新建版本
[root@localhost hello]# svnadmin create /root/newhello
导入备份的版本
[root@localhost hello]# svnadmin load /root/newhello/ < /root/hbk/hello.repo
<<< 开始新的事务,基于原始版本 4
* 正在增加路径: index_bak.html ...完成。
* 正在增加路径: index.html ...完成。
* 正在增加路径: huangbaokang.txt ...完成。
* 正在增加路径: trunk ...完成。
* 正在增加路径: trunk/index.html ...完成。
* 正在增加路径: trunk/index_bak.html ...完成。
------- 提交新版本 1 (从原始版本 4 装载) >>>
<<< 开始新的事务,基于原始版本 5
* 正在修改路径: huangbaokang.txt ...完成。
------- 提交新版本 2 (从原始版本 5 装载) >>>
<<< 开始新的事务,基于原始版本 6
svnadmin: E160006: 当前版本库不存在相对源版本 -1
拷贝之前的配置文件,用户权限等文件。
[root@localhost hello]# rm -rf /root/newhello/conf/*
[root@localhost hello]# cp /root/hello/conf/* /root/newhello/conf/
删除原版本目录
[root@localhost hello]# rm -rf /root/hello/
启动svn服务
[root@localhost hello]# svnserve -d -r /root/
这样就完成了SVN版本的精简,其他同事在原来的工作中svn将不可用,提交的时候会报错,因为没有相应的版本号,因为精简过好,有原来的1:7变成了1:4(4到7区间段的推移,默认版本从1开始),所以精简之后,需要重新检出一下,用之前的svn checkout命令