`
ictch
  • 浏览: 135346 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

怎样才能把svn版本库中的某一个文件或目录永久的删除

阅读更多

如何彻底删除一个目录或者文件
[案例一]
例如:当前库的最新版本是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 版本信息的两种途径

    在使用Subversion(SVN)进行版本控制时,有时我们需要删除文件或目录中的版本信息,以便将它们从SVN的版本控制中解脱出来。本文将详细介绍两种删除SVN版本信息的方法,分别是通过修改注册表和使用批处理脚本。 ###...

    删除SVN版本控制文件批处理

    1. `.svn` 目录:每个SVN工作副本的子目录中都有一个隐藏的`.svn`目录,它包含了版本库信息、工作副本的状态以及用于执行各种SVN操作的临时文件。 2. 版本化的文件:这些文件带有版本信息,可以通过查看文件属性...

    完美删除.svn批处理文件

    "完美删除.svn批处理文件"的主题就是解决这个问题,它提供了一个便捷的方法来批量删除文件夹中的.svn子目录,从而切断文件与SVN的链接。 .svn文件是SVN在本地工作副本中存储元数据的地方,包括版本信息、临时文件和...

    删除svn目录内.svn目录及内容的方法汇总

    - `Delete SVN Folders.reg` 文件可能是一个Windows注册表脚本,用于添加一个右键菜单项,方便用户一键删除 `.svn` 目录。双击导入该脚本后,用户在文件资源管理器中右键点击目录,可能会看到一个新的选项来删除 `....

    svn 删除工具 删除关联.svn

    "Delete SVN Folders.reg"文件就是一个注册表脚本,它可以添加一个右键菜单项,使用户能方便地从文件资源管理器中直接删除`.svn`目录。 双击运行"Delete SVN Folders.reg"文件,会弹出确认提示,点击“是”后,该...

    svn操作手册 svn版本控制

    `svn co` 命令用于检出版本库中的某个目录或文件到本地工作副本。 **3.2 `svn up`** `svn up` 命令用于更新工作副本,获取版本库中的最新更改。 **3.3 `svn ci`** `svn ci` 命令用于将工作副本的更改提交到版本库...

    SVN版本控制清除工具

    - 提供的"RemoveSvnControl"可能是这样的一个小工具,它可以批量删除指定目录下的所有.SVN子目录,方便快捷,尤其适用于处理大量文件的情况。 5. 注意事项: - 在删除.SVN前,请确认不再需要版本控制信息,因为这...

    批量删除.svn脚本

    5. **SVN Delete**:在版本库中删除文件或目录,通常需要先`svn delete`,再`svn commit`。 6. **忽略文件**:如果不想让某些文件或目录受SVN控制,可以在`.svnignore`文件中添加相应的模式。 在实际工作中,我们...

    删除.svn脚本

    标题"删除.svn脚本"指出,我们需要创建一个脚本来自动定位并删除项目中的`.svn`子目录。这个脚本通常会用到命令行工具,如在Unix/Linux系统中的Bash shell或者在Windows系统中的PowerShell。以下是一个基本的Bash...

    递归删除.svn

    标题中的“递归删除.svn”指的是在编程或文件管理操作中,如何使用递归方法来删除一个项目或目录下的所有.SVN子目录。.SVN是Subversion版本控制系统的一个隐藏目录,它存储了版本控制的相关信息。在某些情况下,用户...

    删除所有的.svn文件夹

    在Subversion中,每个项目的工作副本都会包含一个或多个`.svn`目录,它们位于项目的各个层级下。这些目录对正常使用SVN进行版本控制至关重要,因为它们存储了关于文件状态、提交信息以及与其他用户同步所需的所有...

    windows 下一键清空SVN目录

    这个脚本首先切换到指定的目录(`%1`代表批处理脚本的第一个参数,即你要清空的SVN目录),然后递归地删除所有子目录(`for /D %%i in (*) do rmdir /s /q "%%i"`),最后删除所有文件(`del /s /q *`)。...

    svn循环删除文件夹

    可以利用SVN的版本历史功能,通过`svn log`查看历史提交,然后用`svn update --revision`命令将某个历史版本的文件或文件夹恢复到当前工作副本。 总的来说,掌握“svn循环删除文件夹”的技巧,可以帮助开发者更高效...

    删除文件夹中.svn

    1. **存储版本信息**:每个`.svn`文件夹包含版本库URL、修订版号以及每个文件的检查状态。 2. **记录更改**:它保存了对文件的修改,以便于执行`svn commit`时将这些更改上传到服务器。 3. **缓存远程信息**:`.svn`...

    去掉.svn信息工具_xq.zip

    需要注意的是,虽然这种方法可以快速删除`.svn`目录,但它不会从版本库中删除这些文件,如果其他开发者从版本库检出代码,`.svn`目录仍然会出现。因此,这种做法更适合个人本地开发环境,或者在共享代码之前进行...

    eclipse插件svn图标详细含义

    - **操作建议**:如果确定不再需要这些文件,应该通过 SVN 提交这些更改,以便将这些文件从版本库中永久删除。 #### 没有任何改动的文件 - **图标含义**:表示文件没有进行过任何修改。 - **应用场景**:文件处于...

    批量清空SVN信息

    2. **隐藏的SVN文件和文件夹**:在SVN版本控制下的项目中,通常会包含一些隐藏的SVN元数据文件和文件夹,如`.svn`目录。这些文件包含了关于文件的状态、提交历史等信息,是版本控制的基础。 3. **为何要批量清空SVN...

    SVN清除工具

    总之,"SVN清除工具"是一个实用的辅助程序,能够帮助开发者高效地从项目中移除SVN版本控制痕迹,特别是对于那些不再需要版本控制或者需要转换到其他版本控制系统的情况。通过自定义扩展名配置,工具可以适应不同的...

    清理svn标记快速方案

    标题中的“清理svn标记快速方案”指的是在使用Subversion(简称svn)版本控制系统时,如何高效地清理不再需要的本地工作副本中的svn标记,如版本库的旧版本、未提交的更改、临时文件等。这通常是为了释放磁盘空间、...

    SVN使用大全

    在 SVN 中,删除文件应谨慎操作,因为默认是永久删除。如果确实需要删除,右键点击文件,选择 "Delete",然后提交更改。如果不小心删除,可以使用 "Revert" 撤销删除。 **3.4. 修改文件** 当本地文件更改后,需要...

Global site tag (gtag.js) - Google Analytics