`
78425665
  • 浏览: 125689 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

根据svn的ChangeLog打出更新包

    博客分类:
  • java
svn 
阅读更多
ChangeLog.txt
r628 | zhoulz | 2013-08-18 22:27:18 CST
Changed paths:
	M /trunk/config/case_task.xml
	M /trunk/src/com/paic/rsms_case/web/TaskController.java
	M /trunk/webroot/task/taskList.jsp
	M /trunk/webroot/task/taskServiceList.jsp

修改问题查询列表SQL
----------------------------------------------------------------------------


package com.paic;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class ChangeLogUtils {
	static String[] SRC = new String[] { "src", "config" };
	static String WEB = "WebContent";
	static String WEBAPPS = "D:/Tomcat7.0.8/webapps/";
	static String PROJECT = "knows";
	static String DEPLOY_DIR = "/WEB-INF/classes";
	static String CHANGE_LOG_PREFIX = "/trunk/";
	static String CHANGE_LOG_FILE_NAME = "changelog.txt";
	static String TARGET = "D:/Users/ex-zhoulingzhou002/Desktop/changelog/";
	static{
		WEBAPPS += PROJECT;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		TARGET = TARGET+sdf.format(new Date())+"/"+PROJECT;
		File f = new File(TARGET);
		if(f.exists()){
			try {
				del(TARGET);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		f.mkdirs();
	}
	
	public static void main(String[] args) throws Exception {
		String root = ChangeLogUtils.class.getResource("/").getPath();
		File file = new File(root + CHANGE_LOG_FILE_NAME);
		BufferedReader br = new BufferedReader(new FileReader(file));
		String line = null;
		List<String> files = new ArrayList<String>();
		while ((line = br.readLine()) != null) {
			if(line.contains(CHANGE_LOG_PREFIX)){
				String filePath = line.replaceAll(
						".*?" + CHANGE_LOG_PREFIX + "(.*?)", "$1").replaceAll(
						"\\.java", ".class");
				String source = "",target = "";
				if(filePath.startsWith(WEB)){
					filePath = filePath.replaceFirst(WEB, "");
					source = WEBAPPS+filePath;
					target = TARGET + filePath;
				}else{
					for (String src : SRC) {
						if (filePath.startsWith(src)) {
							filePath = filePath.replaceFirst(src, "");
							source = WEBAPPS+DEPLOY_DIR+filePath;
							target = TARGET + DEPLOY_DIR + filePath;
						}
					}
				}
				copyFile(new File(source), new File(target));
			}
		}
		br.close();

	}
	
    // 复制文件
    public static void copyFile(File sourceFile, File targetFile) throws Exception {
        BufferedInputStream inBuff = null;
        BufferedOutputStream outBuff = null;
        try {
            // 新建文件输入流并对它进行缓冲
            inBuff = new BufferedInputStream(new FileInputStream(sourceFile));
            
            if(!targetFile.exists()){
            	try{
            		targetFile.getParentFile().mkdirs();
            		targetFile.createNewFile();
            	}catch(Exception e){
            		System.out.println(targetFile.getAbsolutePath());
            		throw e;
            	}
            }
            // 新建文件输出流并对它进行缓冲
            outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));

            // 缓冲数组
            byte[] b = new byte[256];
            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();
        }
    }
    /**
     * 
     * @param filepath
     * @throws IOException
     */
    public static void del(String filepath) throws IOException {
        File f = new File(filepath);// 定义文件路径
        if (f.exists() && f.isDirectory()) {// 判断是文件还是目录
            if (f.listFiles().length == 0) {// 若目录下没有文件则直接删除
                f.delete();
            } else {// 若有则把文件放进数组,并判断是否有下级目录
                File delFile[] = f.listFiles();
                int i = f.listFiles().length;
                for (int j = 0; j < i; j++) {
                    if (delFile[j].isDirectory()) {
                        del(delFile[j].getAbsolutePath());// 递归调用del方法并取得子目录路径
                    }
                    delFile[j].delete();// 删除文件
                }
            }
        }
    }
}
分享到:
评论

相关推荐

    svnlog2excel.jar

    java -jar svnlog2excel.jar changelog.xml changelog.xls svnlog2excel.sh 将指定SVN路径的版本记录导出为xml格式,去掉第一个版本(一般为初始化代码且数量太大无需处理),并且调用svnlog2excel.jar 生成excel...

    Windows svnlog 转Excel

    方法一:双击WINsvnlog2excel.bat,即可在当前文件夹下生成SVNLog的excel文件,默认导出bat文件第二行中SVNPATH所定义的SVN路径的LOG。可以修改bat文件中第二行的SVNPATH,导出指定SVN路径的log 方法二:在CMD...

    根据svn打更新包

    本篇文章将深入探讨如何根据SVN打更新包,特别是如何从检出的Java源代码中生成项目的Class文件。 首先,理解SVN的基本概念至关重要。SVN是一种分布式版本控制系统,用于跟踪和管理软件开发过程中的文件更改。它允许...

    svn to ChangeLog-开源

    使用此脚本,开发者可以轻松地从svn日志中整理出清晰、有序的ChangeLog,这对于开源项目的管理和维护来说是非常有价值的。 具体到压缩包内的文件"svncl-0.4.0",这可能是该Perl脚本的某个版本,可能包含了源代码、...

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

    标题中的“根据SVN信息自动生成升级补丁包”指的是在软件开发过程中,利用版本控制系统Subversion(SVN)的数据,自动化地创建一个包含了代码差异的补丁包。这个过程通常用于将软件的新功能或修复的bug推送给用户,...

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

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

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

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

    用python脚本处理和分析svn log xml

    本代码实现了用python处理svn log数据(xml格式),把Log的数据转化为一个python的数据结构,方便作更进一步数据挖掘!

    svn各个版本最全面汉化包

    ### SVN各个版本最全面汉化包 #### 一、简介 在软件开发过程中,版本控制系统是必不可少的工具之一。...希望每位开发者都能够根据自己的需求选择合适的汉化包,更好地利用SVN这款优秀的版本控制工具。

    SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包

    SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包...

    SVN中如何打基线SVN中如何打基线SVN中如何打基线

    步骤 2:在界面左边部分的“SVN 资源库”中选择要打基线的项目的根目录,右击鼠标,在弹出的菜单中选择“分支/标记”。 步骤 3:在“到 URL”中填写你要把其基线打在什么目录,一般要改成其它目录,然后点击确定...

    svn强制写日志和可修改log功能

    在版本控制系统Subversion(简称svn)中,日志(log)功能是用于记录每一次提交更改的详细信息,包括更改的原因、涉及的文件等。对于团队协作来说,规范的日志信息有助于理解代码变更历史,便于问题排查和代码审查。...

    SVN-1.11.1安装包+汉化包

    它集成了Windows资源管理器,使得用户可以通过直观的界面操作来执行SVN的各种命令,如检出、提交、更新、解决冲突等。TortoiseSVN 1.11.1版是该客户端的对应版本,支持最新的SVN服务器协议和功能。 安装SVN-1.11.1...

    SVN1.14.1安装包 语言包

    SVN1.14.1安装包 语言包 SVN1.14.1安装包 语言包 SVN1.14.1安装包 语言包

    svn1.14.5中文包64x

    svn1.14.5中文包64x

    svn1.8版本以及汉化包

    本文将详细介绍SVN 1.8版本及其汉化包的相关知识。 1. SVN 1.8版本的主要改进: SVN 1.8版本是SVN的一个重大更新,它引入了许多新特性和性能优化。其中,最重要的改进包括: - **增强的文件属性(Props)**:1.8...

    SVN小乌龟直接安装包语言包

    SVN小乌龟直接安装包语言包

    SVN客户端 64位 包含中文包

    在描述中提到的"包含中文包"意味着这个SVN客户端已经集成了中文语言支持,这对于中国用户或者需要中文界面的团队来说非常方便。它消除了语言障碍,使得用户可以更容易理解和操作SVN的各种功能,包括版本控制、提交、...

    svn安装及语言包下载

    在本文中,我们将深入探讨如何安装SVN以及如何下载对应的语言包,特别是针对1.8.2和1.14.5这两个版本。 首先,我们需要了解安装SVN的基本步骤。对于Windows用户,可以下载VisualSVN Server或CollabNet Subversion ...

    svn安装包1.9.4(包含中文包)

    - `svn co &lt;URL&gt;`:检出指定URL的版本库。 - `svn ci -m "提交信息"`:提交工作副本的所有更改。 - `svn up`:更新工作副本至最新版本。 - `svn diff`:查看工作副本与版本库之间的差异。 - `svn merge &lt;URL&gt;`...

Global site tag (gtag.js) - Google Analytics