对svn版本库磁盘空间瘦身
来源:互联网 发布:python抓取网页数据 编辑:程序博客网 时间:2024/06/05 03:11
问题原因:
平常自己写的测试项目都放在自己电脑上的一个svn版本库里,有些资料放进去后来又删掉了,但是svn版本库是不会减少的,
如果放进去了一个200M的项目,版本历史是 50, 这时候可去看下svn库,下的 db/revs/0/50 这个文件,将永久存在这个svn库中,
如果这个项目将来想还原出来,这个功能倒是有用,如果是永久放弃,就需要 对svn库进行下瘦身了
一. 导出整个版本库
svnadmin dump F:/SVN/test > F:/SVN/dump
我的版本库跟路径是F:/SVN/test ,
这样整个test库导出到 F:/SVN文件夹下的dump文件
(或者导出时就给版本库瘦下身,使用-r参数指定版本记录从60到99 进行导出
svnadmin dump F:/SVN/test -r 60:99 > F:/SVN/dump)
二.过滤dump文件
svndumpfilter include /trunk/project1 <dump> dump_project1 --drop-all-empty-revs
这个命令时过滤dump文件中/trunk/project1文件下的所有文件到dump_project1文件中,
svndumpfilter exclude /trunk/project1 <dump> dump_project1 --drop-all-empty-revs
这个命令时过滤dump文件中/trunk/project1文件下的所有文件 除去,剩余的文件信息放到dump_project1 文件中
如果有多个项目,可以直接在 /trunk/project1后加个空格,接着写项目路径.eg: /trunk/project1 /trunk/project2
下面是过滤时能用的所有参数:
--drop-empty-revs : Remove revisions emptied by filtering.
--drop-all-empty-revs : Remove all empty revisions found in dumpstreamexcept revision 0.
--renumber-revs : Renumber revisions left after filtering.
--skip-missing-merge-sources : Skip missing merge sources.
--targets ARG : Read additional prefixes, one per line, fromfile ARG.
--preserve-revprops : Don't filter revision properties.
--quiet : Do not display filtering statistics.
--pattern : Treat the path prefixes as file glob patterns.
一般就使用--drop-all-empty-revs 把原来的编号给删掉,从新排列. 把过滤掉的文件的历史信息给扔掉
--renumber-revs这个是历史信息扔掉,但不重新排列序号
--preserve-revprops这个是保留所有的老版本信息,包含过滤掉文件信息
三.新建svn库并导入过滤号的数据
svnadmin create test2
svn mkdir file:///F:/svn/test2/trunk --parents -F F:/svn/log.txt (这是在新建的svn库中添加一个trunk目录,否则下一步会报错,所有的过滤目录的上级目录都要自己手动建好)
svnadmin load F:/svn/test2 < dump_project1
完整的一个批处理文件:
svnadmin dump F:/SVN/test > F:/SVN/dump
svndumpfilter include /trunk/project1 <dump> dump_project1 --drop-all-empty-revs
if exist test2 (
rd /s/q test2
svnadmin create test2
svn mkdir file:///F:/svn/testTemp/test2/trunk/ --parents -F F:/svn/log.txt
) else (
svnadmin create test
svn mkdir file:///F:/svn/testTemp/test2/trunk/ --parents -F F:/svn/log.txt
)
svnadmin load F:/svn/testTemp/test2 < dump_project1
一个谨慎的操作:
如果过滤一个这样的 /trunk/first/second/third/project1项目,然后把project1移动到/trunk下.
结果:
/trunk/project1
这种操作往后将不能再对project1下的文件瘦身,排除一些文件了,这个时候project1下的文件指向路径还是/trunk/first/second/third/project1项目老的物理磁盘文件.svn上的路径换了,而磁盘文件没变,而老的svn路径/trunk/first/second/third/project1将变为一个invalid path
当再次对这种库导出文件过滤的时候会报错.eg:过滤 /trunk/project1/docs
svndumpfilter include /trunk/project1/docs <dump> dump_project1_docs --drop-all-empty-revs
当把docs下文件过滤到 dump_project1_docs 时,还是用的/trunk/first/second/third/project1这个路径copy过去.
然后报出/trunk/first/second/third/project1 路径 无效.
所以所以 瘦个身,就瘦个磁盘空间就可以了,不要把路径也给瘦了.路径一瘦往后别想再瘦磁盘空间了
http://svnbook.red-bean.com/en/1.7/svn.ref.svndumpfilter.html#svn.ref.svndumpfilter
- 对svn版本库磁盘空间瘦身
- SVN历史版本删除 瘦身svn库
- SVN历史版本删除(为SVN库瘦身)
- svn历史版本删除(为svn库瘦身)
- 如何对 ViewController 瘦身
- 用SVN对unity3D进行版本控制
- 使用SVN对Unity进行版本控制
- 使用SVN对Unity进行版本控制
- 使用SVN对GitHub进行版本管理
- SVN解除对项目的版本控制
- svn版本库管理
- svn合并版本库
- SVN版本库迁移
- svn合并版本库
- SVN增加版本库
- SVN版本库迁移
- svn创建版本库
- svn版本库迁移
- linux 知识点拾遗
- HDU 1756 Cupid's Arrow(判定点在多边形内)
- xcode 文件版本控制
- UIView非常有用的方法及属性详解
- C++学习50条忠告
- 对svn版本库磁盘空间瘦身
- 设置Eclipse中的字体
- tomcat6.0实现https安全访问 (面试时提问)
- 使用SSL证书保障网络游戏信息安全
- 远程调试Java代码时老是跳来跳去的原因
- poj3244(公式题)
- Linux ssh连接
- 新浪微博开发平台接入流程(1)---注册应用
- 源代码方式和二进制包的区别