删除svn中指定的文件以及合并svn版本库

来源:互联网 发布:java中js不是数字 编辑:程序博客网 时间:2024/05/22 16:55

一、如何彻底删除svn中的文件或目录

假设svn项目的目录为 G:\SVN\myproj, 里面有 test/readme.txt 文件和 work/sound/目录,其中test和work是在G:\SVN\myproj下的顶层目录,

即路径分别为G:\SVN\myproj\test和G:\SVN\myproj\work\sound


1)首先将svn库整个导出

svnadmin  dump  G:\SVN\myproj   >  myproj.dump


2)将myproj.dump文件里面不需要的文件进行排除并生成一个新的dump文件

type  myproj.dump  |  svndumpfilter  exclude  test/readme.txt   work/sound    --drop-empty-revs   --renumber-revs  --quiet   > drop.dump


这样readme.txt 文件和sound目录就被排除了。

--drop-empty-revs: 删除因过滤而产生的空版本

--renumber-revs :过滤后重编余下的版本

--quiet : 不显示过滤的统计数据

其中 --quiet参数或者其他两个参数有可能不支持,如果生成drop.dump的命令出错,建议按个去掉这几个参数再进行尝试


exclude命令是排除指定文件或目录,与之相反,include命令是只保存指定文件或目录,例如:

type  myproj.dump  |  svndumpfilter  include  test/readme.txt   work/sound    --drop-empty-revs   --renumber-revs   > D:\drop.dump

这样就只保留了readme.txt文件和work/sound目录,其他都删除了


3) 创建新的svn项目并将上面的dump文件导入到新项目中

svnadmin create  G:\SVN\newProj

svnadmin  load  G:\SVN\newProj  <  D:\drop.dump


这样一来,彻底删除svn版本库中部分文件或目录的工作就完成了。


二、合并版本库

假设有G:\SVN\repos1和G:\SVN\repos2两个版本库,且repos1版本库比较小,因此要把repos1导入到repos2中

1) 查看repos1的最新版本号

svnlook  youngest G:\SVN\repos1

得到最大版本号为81

2) 增量导出

svnadmin  dump  G:\SVN\repos1   -r  0:81  --incremental  > D:\repos1.dump

3) 导入

假设repos2下面有work/test目录(全路径是G:\SVN\repos2\work/test):

svnadmin  load  G:\SVN\repos2   --parent-dir  work/test < D:\repos1.dump

--parent-dir:指定导入repos2版本库的哪个目录下


这样就完成了repos1版本库和repos2版本的的合并,最终所有的数据都存在repos2上。

0 0
原创粉丝点击