如何彻底删除一个目录或者文件
[案例一]
例如:当前库的最新版本是46,我在第46个版本上,更加了一个5M的文件,名字为FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
现在我要把这个新增加的5M文件彻底的删除,不想让它存在库中占用空间
(1)用svn log -v命令查看添加文件时的Path。或者使用tortoisesvn之类的客户端工具查看也可以
C:\myhouse\SCM_Home\SVN_HOME\localtest\docs\general>svn log -v "FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf"
------------------------------------------------------------------------
r46 | zhangjia | 2007-09-23 10:40:34 +0800 | 3 lines
Changed paths:
A /docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
delete for ever
------------------------------------------------------------------------
(2)结果得到添加的路径为/docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
(3)把整个库先lock住,防止在此过程中有人继续修改
当然如果不lock也是可以了,只不过当你把所有的内容导入到新库中之后,还要用dumpfilter把旧库中
新增部分也导入到新库中。为了避免不必要的麻烦,所以我们需要lock
(4)导出旧库中的所有版本
svnadmin dump C:/myhouse/external/SVNRepos/svn > svns.dmp
(5)对导出的旧库中的文件做过滤,剔除我们不用的那个文件的PATH
type svns.dmp | svndumpfilter exclude "docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf" > filter.dmp
(6)重新创建一个新的库,版本最好和以前的相同。而且不要做任何的修改
svnadmin create C:/myhouse/external/SVNRepos/svndump
(7)把我们过滤后的那个导出文件,导入到新的库中
svnadmin load C:/myhouse/external/SVNRepos/svndump < filter.dmp
(8)检查新库中的文件和版本状态
[案例二]
当前库的最新版本是48,我在第46个版本上,更加了一个5M的文件,名字为FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
现在我要把在第46个版本上新增加的5M文件彻底的删除,不想让它存在库中占用空间
(1)用svn log -v命令查看添加文件时的Path。或者使用tortoisesvn之类的客户端工具查看也可以
C:\myhouse\SCM_Home\SVN_HOME\localtest\docs\general>svn log -v "FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf"
------------------------------------------------------------------------
r46 | zhangjia | 2007-09-23 10:40:34 +0800 | 3 lines
Changed paths:
A /docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
delete for ever
------------------------------------------------------------------------
(2)结果得到添加的路径为/docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
(3)把整个库先lock住,防止在此过程中有人继续修改
(4)导出旧库中的所有版本
svnadmin dump C:/myhouse/external/SVNRepos/svn > svns2.dmp
(5)对导出的旧库中的文件做过滤,剔除我们不用的那个文件的PATH
type svns2.dmp | svndumpfilter exclude "docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf" > filter2.dmp
(6)重新创建一个新的库,版本最好和以前的相同。而且不要做任何的修改
svnadmin create C:/myhouse/external/SVNRepos/svndump2
(7)把我们过滤后的那个导出文件,导入到新的库中
导入过程中出现提示:
...
<<< Started new transaction, based on original revision 46
------- Committed revision 46 >>>
<<< Started new transaction, based on original revision 47
* editing path : src/build/build.xml ... done.
------- Committed revision 47 >>>
<<< Started new transaction, based on original revision 48
* editing path : src/build/scmbuild.xml ... done.
------- Committed revision 48 >>>
显然46号版本已经保留了,但是我们要删除的那个文件也同样被删除了
(8)检查新库中的文件和版本状态
[案例三]
当前库的最新版本是60,我在第50个版本上,更加了一个5M的文件,名字为FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf;
同时修改了10个源代码文件;删除了2个源代码文件
现在我要把在第46个版本上新增加的5M文件彻底的删除,不想让它存在库中占用空间
考虑一下,如果按照我们案例中提供的方法是否能够做到保留历史,而删除物理文件?
并说明理由?
[总结]
删除文件确实能够通过我们上述的提供的方法解决,但是我们也看到如果当库中的版本很多,容量很大的时候
每次当我们导出和导入的时候,花费的时间比较长,而且使用的空间也比较大。我们建议,
所有的导入和导出以及过滤的操作尽量在同一块磁盘或者扇区上执行,这样速度比较快;当然你要保证你的
扇区的容量能够容纳原来仓库至少2倍(2~4倍)的大小((1)原始的库,(2)导出的dump,(3)导出的filter dump,(4)导入的库)
当然你也可以copy到别的扇区,磁盘或者机器上运行,只要保证环境一致就可以
分享到:
相关推荐
使用本图形化工具帮助你将这些文件彻底地从svn中删除。 先导出svn仓库 svnadmin dump /home/svn/xx > svn.dump 使用本工具过滤掉需要删除的文件 重新创建仓库并导入 svnadmin create /home/svn/xx_new svnadmin...
1、 全局备份 svnadmin dump /data/svn/repository > /data/repository-backup.dump #全局备份...使用工具上传备份文件至新服务器本地,这里假设上传至根目录。 svnadmin load /data/svn/repos/newproject 导入备份文件
双击文件加入注册表,然后右键选中想删除版本控制文件的目录,弹出的菜单中会多一个Delete SVN folders选项,选中即可删除当前选中文件下所有版本控制文件(.svn)
这个批处理工具放到当前目录下,双击就会删除当前目录以及子目录下的所有svn 版本控制信息。
用例子简述svn版本库布局,更好的管理版本控制
删除svn 版本信息的两种途径,一个是导入注册表中,然后右键菜单触发;一个是bat文件,直接考在目标文件根目录下运行
SVN删除版本_瘦身SVN删除版本_瘦身SVN删除版本_瘦身SVN删除版本_瘦身
SVN项目版本库模板
svn 删除文件后 一update又出来了 怎么回事
当svn版本库的服务器坏掉时,依据此文档,可以把你的版本库迁移到另一个版本库上。
删除SVN目录下面的SVN文件 放到SVN的目录下执行
通过SVN提交过的代码,都会产生SVN文件,如果不想麻烦的重新导出文件,只需把本地SVN保存目录复制到其他地方(为了数据安全),就可批量删除使用过SVN后遗留下的文件,不会删除其他文件 使用方便,第一次注册后,鼠标...
利用svnkit操作svn,实现对版本修改文件的导出,可以导出多个版本,.java文件将会在本地取出.class文件,导出后压缩成压缩包,主要用于服务器上的资源更新,不需要开发人员去找到对应的.class文件或其他文件压缩然后...
用来删除SVN文件用来删除SVN文件用来删除SVN文件用来删除SVN文件
批量删除.svn文件夹、.svn文件使用svn进行版本控制,每个文件夹下都有.svn文件夹,有些项目在脱离svn版本控制之后,想删除项目中所有的.svn文件夹,可用下面的方法进行快速删除: 1、打开要删除.svn文件的最外层...
用于svn版本控制的用户能够轻松删除svn文件的标志。
自动更新SVN版本库
svn新建版本库步骤,详细步骤,能够按照此步骤配置换成svn版本库
在项目中使用SVN进行版本控制总是会让项目文件中存在.svn文件,对于项目文件的copy有很大的困扰,因此就写了一个简单的删除.svn文件的小程序。
SVN_Deleter用于删除指定目录下的.svn目录。该工具采用PHP开发,可方便删除一些svn版本信息