`

根据svn生成的补丁包文件挑选修改的文件

    博客分类:
  • java
阅读更多



 1.使用svn 生成 补丁包文件

选择要生成补丁包的项目,右键-》 选择term -> 创建补丁包,

补丁包文件名为:2015-04-18-safe-patch.txt

 

 

 

 

2.解析补丁包文件,生成更新文件。

 

public class FreePatchUtil {
 // 2015-02-26patch.txt
 
 public static String patchFile = "E:/tjisoftstone/beijing_update/cbe_merchant_api/2015-04-18-safe-patch.txt";// 补丁文件,由eclipse
                             // svn
                             // plugin生成

 public static String projectPath = "E:/tjisoftstone/tianjin_pay_new/cbe_merchant_api";// 项目文件夹路径

 public static String webContent = "WebContent";// web应用文件夹名

 public static String classPath = projectPath
   + "/WebContent/WEB-INF/classes";// class存放路径

 public static String desPath = "E:/tjisoftstone/beijing_update/cbe_merchant_api";// 补丁文件包存放路径

 public static String version = "2015-04-18-safe-patch";// 2015-04-1-chinapay-patch
               // "2015-03-27-chinapay";//补丁版本

 /**
  * @param args
  * @throws Exception
  */
 public static void main(String[] args) throws Exception {
  copyFiles(getPatchFileList());
  // getPatchFileList();

 }

 public static List<String> getPatchFileList() throws Exception {
  List<String> fileList = new ArrayList<String>();
  FileInputStream f = new FileInputStream(patchFile);
  BufferedReader dr = new BufferedReader(new InputStreamReader(f));
  String line;
  while ((line = dr.readLine()) != null) {
   if (line.indexOf("Index:") != -1) {
    line = line.replaceAll(" ", "");
    line = line.substring(line.indexOf(":") + 1, line.length());
    fileList.add(line);
   }
  }
  return fileList;
 }

 public static void copyFiles(List<String> list) {

  for (String fullFileName : list) {
   if (fullFileName.indexOf("src/") != -1) {// 对源文件目录下的文件处理
    // E:/tjisoftstone/dianpiao/dp_3_0/DraftManage-ebank/src/test/patch/FreePatchUtil.java
    // String fileName=fullFileName.replace("src","");
    int classStart = fullFileName.lastIndexOf("src");
    String fileName = fullFileName.substring(classStart,
      fullFileName.length()).replace("src", "");

    fullFileName = classPath + fileName;
    if (fileName.endsWith(".java")) {
     fileName = fileName.replace(".java", ".class");
     fullFileName = fullFileName.replace(".java", ".class");
    }
    String tempDesPath = fileName.substring(0, fileName
      .lastIndexOf("/"));
    String desFilePathStr = desPath + "/" + version
      + "/WebContent/WEB-INF/classes" + tempDesPath;
    String desFileNameStr = desPath + "/" + version
      + "/WebContent/WEB-INF/classes" + fileName;
    File desFilePath = new File(desFilePathStr);
    if (!desFilePath.exists()) {
     desFilePath.mkdirs();
    }
    System.out.print("fullFileName:" + fullFileName);
    System.out.println("desFileNameStr:" + desFileNameStr);
    copyFile(fullFileName, desFileNameStr);
    System.out.println(fullFileName + "复制完成");
   } else if (fullFileName.indexOf(".jsp") != -1) {// 对普通目录的处理
    // jsp 页面复制
    fullFileName = projectPath + "/" + fullFileName;
    int start = fullFileName.lastIndexOf("WebContent");

    String desFileName = fullFileName.substring(start, fullFileName
      .length());
    // String desFileName=fullFileName.replaceAll(webContent,"");
    // fullFileName=projectPath+"/"+fullFileName;//将要复制的文件全路径
    String fullDesFileNameStr = desPath + "/" + version + "/"
      + desFileName;
    String desFilePathStr = fullDesFileNameStr.substring(0,
      fullDesFileNameStr.lastIndexOf("/"));
    File desFilePath = new File(desFilePathStr);
    if (!desFilePath.exists()) {
     desFilePath.mkdirs();
    }
    copyFile(fullFileName, fullDesFileNameStr);
    System.out.println(fullDesFileNameStr + "复制完成");
   } else {
    System.out.println("无法解析:" + fullFileName);
    int start = fullFileName.lastIndexOf("WebContent");
    String desFileName = fullFileName.substring(start, fullFileName
      .length());
    fullFileName = projectPath + "/" + fullFileName;
    System.out.println("无法解析:" + fullFileName);

    String fullDesFileNameStr = desPath + "/" + version + "/"
      + desFileName;
    String desFilePathStr = fullDesFileNameStr.substring(0,
      fullDesFileNameStr.lastIndexOf("/"));
    File desFilePath = new File(desFilePathStr);
    if (!desFilePath.exists()) {
     desFilePath.mkdirs();
    }
    copyFile(fullFileName, fullDesFileNameStr);
    System.out.println("源地址:" + fullFileName + "----"
      + fullDesFileNameStr + "复制完成");
   }

  }

 }

 private static void copyFile(String sourceFileNameStr, String desFileNameStr) {
  File srcFile = new File(sourceFileNameStr);
  File desFile = new File(desFileNameStr);
  try {
   copyFile(srcFile, desFile);
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 public static void copyFile(File sourceFile, File targetFile)
   throws IOException {
  BufferedInputStream inBuff = null;
  BufferedOutputStream outBuff = null;
  try {
   // 新建文件输入流并对它进行缓冲
   inBuff = new BufferedInputStream(new FileInputStream(sourceFile));

   // 新建文件输出流并对它进行缓冲
   outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));

   // 缓冲数组
   byte[] b = new byte[1024 * 5];
   int len;
   while ((len = inBuff.read(b)) != -1) {
    outBuff.write(b, 0, len);
   }
   // 刷新此缓冲的输出流
   outBuff.flush();
  } finally {
   // 关闭流
   if (inBuff != null)
    inBuff.close();
   if (outBuff != null)
    outBuff.close();
  }
 }

}

 

 

  • 大小: 162.4 KB
分享到:
评论

相关推荐

    JAVA项目根据SVN日志自动生成补丁包

    为了解决这个问题,我们可以利用版本控制系统如SVN的日志信息,结合自动化脚本来自动生成补丁包。本文将详细介绍如何基于SVN日志使用Python脚本实现这一目标,特别是针对JAVAWEB项目。 首先,理解SVN日志的作用至关...

    基于Svn补丁日志自动生成Java项目补丁包[python]

    这些信息对于生成补丁至关重要,因为它们指明了哪些文件在何时进行了修改。 2. **Python脚本**:Python是一种强大的脚本语言,拥有丰富的库和工具,适合处理文本数据和自动化任务。在这个场景下,脚本会读取Svn日志...

    根据SVN信息自动生成升级补丁包

    标题中的“根据SVN信息自动...总结起来,这个主题涉及到了SVN版本控制系统的使用,特别是如何利用其生成补丁包,以便于软件的维护和升级。通过自动化这个过程,开发者可以更高效地分发更新,同时降低用户的升级成本。

    svn结果生成补丁

    标题中的“svn结果生成补丁”指的是在使用版本控制系统Subversion(简称svn)时,如何将两个不同版本之间的差异制作成补丁文件的过程。补丁文件通常是一个文本文件,包含了两个版本之间代码或文件的不同之处,可以...

    svn 日志导出 增量补丁工具

    通过这个工具,我们可以从svn的日志中筛选出特定的修改,然后生成只包含这些修改的增量补丁包。 首先,让我们了解什么是svn日志。svn日志记录了项目历史上的每一次提交,包括提交者、提交时间、提交消息等信息。...

    根据SVN日志自动生成补丁

    标题 "根据SVN日志自动生成补丁" 描述了一个基于SVNKit的自动化工具,该工具能够分析SVN(Subversion)的日志,找出在版本控制中的改动,然后将这些改动打包成升级补丁,并生成相应的更新日志。这个过程在软件开发中...

    SVN安装文件及SVN中文补丁

    在本资源包中,您将找到SVN的安装文件以及对应的中文补丁,这对于在中国使用SVN的团队来说尤其重要,因为它可以方便地解决语言障碍,提高工作效率。 首先,让我们详细了解一下SVN安装文件。通常,SVN的安装文件分为...

    自动生成SVN发布包

    代码都是用svn来管理的,但是web项目基本上是...逼急了,自已用access写了一个管理,自动提取两个SVN版本之间的差异,并挑选需要发布的文件,按照目录结构生成patch包,到时将patch包直接拷到测试环境或生成环境即可。

    java 写的根据svn信息生成的增量打包

    java 写的根据svn信息生成的增量打包工具类,有部分路径和判断条件需要修改,修改正确后可直接执行main方法运行。

    svn修改密码的补丁包

    描述中的“根据文档描述下载该包,根据描述一步一步进行操作即可”意味着这个补丁包提供了一个解决方案,允许用户在线修改svn密码,而无需通过复杂的服务器配置或者用户手动修改配置文件。这大大简化了过程,提高了...

    svn patch 小工具 (自动提取改动文件)

    标题 "svn patch 小工具 (自动提取改动文件)" 暗示了这是一个关于版本控制系统Subversion(简称svn)和patch文件处理的工具。Subversion是广泛使用的版本控制软件,用于跟踪和管理代码库中的更改。patch文件则通常...

    清楚svn目录下生成的.svn文件夹

    在使用Subversion(SVN)版本控制系统管理代码时,`.svn`文件夹是SVN用于存储元数据的地方,包括版本信息、工作副本配置等。这些文件夹对于SVN的正常运行至关重要,但有时它们可能会占用大量的磁盘空间,或者在不...

    SVN1.4汉化补丁

    svn1.4.0.7501版本的中文补丁,安装svn1.4后运行该补丁,在svn settings 选项里选择语言为简体中文即可,因为文件上传限制,svn1.4单独上传,需要的查找我的其他资源

    根据SVN的更新日志导出部署目录结构的更新文件

    根据SVN更新日志,结合eclispse/或其他IDE工具导出war包解压出来就是部署的目录结构了;再把开发的工具和解压的全量更新文件以及导出的SVN更新日志放在同级目录,利用插件把SVN更新日志的增量更新文件提取生成同部署...

    svn简体中文补丁包1.7.2.22327-x64-zh_CN

    补丁包的版本号1.7.2.22327表明它是基于SVN 1.7系列的一个特定更新,该系列在2012年发布,支持多种操作系统,包括Windows、Linux和Mac OS。x64表示这个补丁包是为64位操作系统设计的,这意味着它可以与64位版本的...

    SVN中文语言包64.zip

    SVN,全称为Subversion,是一款广泛应用于软件版本控制系统中的开源工具,主要用于管理源代码、文档等文件的版本。TortoiseSVN是基于Windows平台的SVN客户端,以其直观的图形用户界面和与Windows资源管理器的深度...

    svn 删除文件 update 又出来了 怎么回事

    在使用版本控制系统Subversion(简称svn)时,可能会遇到一些操作上的困扰,比如在尝试删除文件后,通过`svn update`命令更新代码时,已经删除的文件却又重新出现了。这通常是由svn的工作方式引起的,我们需要理解其...

    SVN自主修改密码工具

    用于修改SVN密码的工具,利用PHP方式实现密码修改,它适用于VisualSVN v3.9.x 64bit版本(实测3.9.1),...你唯一需要修改的是,htdocs文件里的pwd.php文件第3行和第4行,根据你安装路径和库文件路径修改,请放心使用,

    SVN生成版本号

    2. **利用SVN插件的特性**:某些SVN插件,如AnkhSVN,提供直接在VS中修改AssemblyInfo文件的功能,自动插入或更新版本号。这些插件会检测到代码的变更,并在构建前自动提交。 一旦版本号被自动获取并更新,它们通常...

    SVN仓库彻底删除文件工具

    是否遇到过公司里的sx向svn提交了不该提交的文件?.sdf debug release 等等,是否对此感到崩溃?!是否svn仓库已经占用了大量的磁盘空间? 使用本图形化工具帮助你将这些文件彻底地从svn中删除。 先导出svn仓库 ...

Global site tag (gtag.js) - Google Analytics