现在很多公司采用SVN开发,其版本管理的确很不错.
但是有一点很让人郁闷,就是源代码的.svn文件会很多,而且当Java源码代或者配置文件改变多次时,会生成很多版本,svn的大小可能是源代码的N倍.
如果想把某个目录的svn文件去掉,可以自己写个程序去删除.svn目录下的所有文件.方便又时用,我这里采用的是commons-io.jar 里的 DirectoryWalker,看到名称就能理解“目录散步”。
废话不说了,代码如下:
package com.ycl.filter.FileCleaner;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.apache.commons.io.DirectoryWalker;
public class FileCleaner extends DirectoryWalker {
public FileCleaner() {
super();
}
public List<File> clean(File startDirectory) throws IOException {
List<File> results = new ArrayList<File>();
walk(startDirectory, results);
return results;
}
@Override
protected void handleStart(File startDirectory, Collection results)
throws IOException {
System.out.println("-------开始清除-------");
}
@Override
protected void handleEnd(Collection results) throws IOException {
System.out.println("-------结束清除-------");
}
@Override
protected void handleCancelled(File startDirectory, Collection results,
CancelException cancel) throws IOException {
System.out.println("-------清除异常-------");
super.handleCancelled(startDirectory, results, cancel);
}
@Override
protected boolean handleIsCancelled(File file, int depth, Collection results)
throws IOException {
//这里可以设置断点,比如当你找到某个类的时候,停止遍历,默认继续
return false;
}
@Override
protected void handleDirectoryStart(File directory, int depth,
Collection results) throws IOException {
// System.out.println("****开始处理:"+directory.getName()+"deep:"+depth+"results:"+results.toString());
}
@Override
protected void handleDirectoryEnd(File directory, int depth,
Collection results) throws IOException {
// System.out.println("****结束处理:"+directory.getName()+"deep:"+depth+"results:"+results.toString());
}
@Override
protected void handleRestricted(File directory, int depth,
Collection results) throws IOException {
System.out.println("****受限制目录:"+directory.getName()+"deep:"+depth+"results:"+results.toString());
}
/**
* 是否处理某个目录.返回false 不处理
*
* @see 这里直接删除.svn.然后不处理.
*/
@Override
protected boolean handleDirectory(File directory, int depth,
Collection results) {
// delete svn directories and then skip
if (".svn".equals(directory.getName())) {
deleteDirectory(directory,results);
return false;
} else {
results.add(directory);//删除.svn,还有哪些文件夹
return true;
}
}
/**
* 删除文件,并把文件加到删除列表中
*/
@Override
protected void handleFile(File file, int depth, Collection results) {
// delete file and add to list of deleted
//file.delete();
//results.add(file);
//删除.svn文件后,还有哪些文件
}
/**
* 删除目录及目录下的文件夹和文件
* @param directory
* @param results
*/
private void deleteDirectory(File directory,Collection results){
if(directory.isDirectory()){
File[] list = directory.listFiles();
for(File file:list){
deleteDirectory(file,results);
}
}
Log(directory.delete(),directory);
results.add(directory);//删除文件
}
/**
* 删除文件或者目录失败日志
* @param flag
*/
private void Log(boolean flag,File directory){
if(!flag){
System.err.println("删除文件失败:"+directory.getAbsolutePath());
}else{
System.out.println("delete:"+directory.getAbsolutePath());
}
}
}
测试代码如下:
package com.ycl.filter.FileCleaner;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class TestFileCleaner {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileCleaner cleaner = new FileCleaner();
File startDirectory = new File("D:\\workspace\\branches\\pamirsshop_branches_8-30");
List<File> list = cleaner.clean(startDirectory);
for(File file:list){
// System.out.println("file:"+file.getAbsolutePath());
}
System.out.println("共处理"+list.size()+"个文件");
}
}
测试结果如下:
...
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\.svn
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn\text-base\assembly.xml.svn-base
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn\text-base
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn\prop-base
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn\props
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn\tmp\text-base
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn\tmp\prop-base
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn\tmp\props
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn\tmp
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn\all-wcprops
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn\entries
delete:D:\workspace\branches\pamirsshop_branches_8-30\deploy\src\main\assembly\.svn
-------结束清除-------
共处理3331个文件
记得我刚碰到svn的这个问题的时候,也是到处找工具,有没有啥工具可以去掉.svn的,现在想想,自己是程序员,遇到问题,自己开发一个不就完了嘛,实用又方便.
分享到:
相关推荐
用来删除SVN文件用来删除SVN文件用来删除SVN文件用来删除SVN文件
可以快速的清除所有的.SVN文件 可以快速的清除所有的.SVN文件
用java代码下载svn上的项目,包含svnkit的jar包,可以根据版本号下载项目,同路径下会删除原来下载过的项目。
更新svn地址需要删除项目中svn版本文件 。代码删除项目中的.svn文件
### 删除SVN文件的Java代码知识点解析 #### 一、代码功能概述 本文将深入解析一个用于删除Subversion(简称SVN)版本控制系统中的`.svn`文件夹的Java程序。该程序通过递归的方式遍历指定目录下的所有子目录与文件,...
Subversion是一个开源的版本控制系统,用于管理文件和目录的不同版本,而Java则是一种广泛使用的编程语言,提供了丰富的库来实现对SVN的操作。 在Java中,我们通常会使用第三方库如SVNKit来实现对SVN仓库的访问和...
这个压缩包提供的"svnkit-1.10.6"是SVNKit的一个版本,包含了支持Java开发的SVN插件所需的jar文件。 一、SVNKit基础 SVNKit提供了丰富的API,覆盖了SVN的大多数功能,包括但不限于创建、检查、更新、提交、合并、...
例如,Java代码可能需要处理import语句的变化,而XML文件则需要关注标签的增删。 3. **处理合并冲突**:在多人协作的环境中,可能会有合并冲突的情况,此时需要正确处理这些特殊情况。 4. **性能优化**:如果SVN仓库...
3. **每日变更统计**:程序会定期检查SVN仓库,收集自上一次检查以来的所有提交记录,包括修改、添加、删除的文件或目录,以及每个提交的作者和时间戳。 4. **锁定管理**:除了提交记录,程序还会关注文件和目录的...
java源代码,用于删除svn目录下的所有svn文件名包含svn的文件。可以让工程恢复到没有加入到svn时的状态。 支持命令行删除,也可在修改程序自己删除
标题 "DelSVN 删除svn" 暗示我们要讨论的是如何在计算机系统中删除Subversion(简称SVN)的相关配置和文件。Subversion是一个广泛使用的版本控制系统,用于管理软件项目中的源代码和其他文件的变更。然而,有时用户...
总之,`FileCleaner.java`和`TestFileCleaner.java`共同构成了一个用于清除项目中SVN文件的Java工具,帮助开发者高效地维护代码仓库,确保项目发布时不包含不必要的版本控制信息。在使用时,需谨慎操作,避免误删...
它的主要任务是删除Java源代码文件中的SVN元数据,使得文件可以在不引发冲突的情况下进行替换。 在Java类文件中,SVN的元数据通常隐藏在`.svn`目录下,这个目录包含了关于文件历史、版本信息等。当我们在进行版本...
//如果删除svn或者cvs文件夹则将第二个参数改为SVN或者CVS,第一个参数是项目路径 //如果项目叫 EXTDemo放在D盘 workspaces文件夹下, //new RemoveFolder("D:\\workspace\\EXTDemo","CVS"); new Remove...
SVNKit是一个纯Java实现的SVN客户端库,提供了丰富的API,可以实现对SVN的各种操作,如添加、删除、提交、更新等。 - 首先,需要在项目中引入SVNKit依赖,然后创建SVNClientManager实例,这是所有SVN操作的基础。 ...
例如,它可能会删除与SVN相关的文件扩展名关联,如`.java`、`.cpp`等。 3. **运行注册表脚本**:双击`DeleteSVN.reg`文件,会弹出确认对话框,点击“是”以导入脚本内容。注册表编辑器会根据脚本中的指令进行修改。...
5. **查看差异**: `svn diff`用于查看文件的修改差异,`svn status`则可以查看文件的状态(如已修改、新增、删除等)。 6. **解决冲突**: 当多人同时修改同一份文件时,可能会出现冲突。SVN会标记出冲突的文件,...
在Java编程环境中,删除SVN...总的来说,删除SVN信息的Java实现主要涉及文件系统操作,特别是文件和目录的删除。在实际应用中,应谨慎处理这类操作,避免误删重要文件,并考虑异常处理和权限检查,以提高代码的健壮性。
windows下批量删除.svn文件,cmd下面一条语句就搞定!
根据给定文件内容,下面是关于Java Web版SVN配置管理工具相关知识点的详细阐述。 ### 1. SVNAdmin概念及优势 - **SVNAdmin是什么**:SVNAdmin是一个基于Java开发的Web应用工具,用于管理SVN服务器上的项目用户。...