新的环境下 又回旧的svn 一直都是移动的各种定制版本小批量更新 每次都是一个个文件的找 真麻烦
svn增量的更新 先获取svn提交过的文件日志记录
项目下svn工具 右键 show log 可以查看多个版本 复制出来更新的记录信息到记事本上
可以选择多个提交的版本 右键 copy to clipboard (复制到粘贴板) -->Full Data (所有数据)
再通过程序过滤 并复制对应的路径 到指定的文件目录下
package cssp;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileSvnTest {
//svn生成的历史修改文件记录
static String CHANGE_LOG_FILE_NAME = "d:/6.txt";
//changeLog文件中 多余的路径前缀
static String CHANGE_LOG_PREFIX = "Modified : /trunk/code/xxxxx/";
//classes 文件夹本地路径
static String CLASS_SOURCE_PREFIX = "D:/hdl/xxxxx/WebContent/WEB-INF/classes/";
//webroot 文件夹本地路径
static String JSP_SOURCE_PREFIX = "D:/hdl/xxxxx/WebContent/";
//生成 增量包目标文件夹
static String TARGET_PREFIX = "d:/svnupdate/";
//增量包生成 主名称--后面会加上生成时间 年月日时分秒
static String PACKAGE_NAME = "network";
//项目WebRoot 文件夹
static String WEBROOT = "WebContent";
//项目Classes 文件夹
static String WEB_INF = "WEB-INF/classes/";
//项目 src 文件夹
static String SRC = "src";
//项目配置文件 文件夹
static String ROURCE = "resources";
static {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
String dateStr = sdf.format(date);
PACKAGE_NAME = PACKAGE_NAME + "_" + dateStr;
File file = new File(TARGET_PREFIX + PACKAGE_NAME);
if (file.exists()) {
try {
del(TARGET_PREFIX + PACKAGE_NAME);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
file.mkdirs();
}
}
/**
*
* @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();// 删除文件
}
}
}
}
/**
* 复制文件
* @param sourceFile
* @param targetFile
* @throws Exception
*/
public static void copyFile(File sourceFile, File targetFile) throws Exception {
BufferedInputStream inBuff = null;
BufferedOutputStream outBuff = null;
if (sourceFile.isFile()) {
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();
}
}
}
public static void main(String[] args) throws Exception {
File file = new File(CHANGE_LOG_FILE_NAME);
BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
System.err.println(PACKAGE_NAME);
try {
while ((line = br.readLine())!= null) {
line = line.trim();
System.out.println(line);
System.out.println(CHANGE_LOG_PREFIX);
if (line.indexOf(CHANGE_LOG_PREFIX) > -1) {
String[] relativePaths = line.split(CHANGE_LOG_PREFIX);
String relativePath = relativePaths[1];
if (relativePath.startsWith(SRC+"/")) {
if (relativePath.contains(".java")) {
relativePath = relativePath.replaceAll(".java", ".class");
}
relativePath = relativePath.replaceAll(SRC+"/", "");
String sourcePath = CLASS_SOURCE_PREFIX + relativePath;
String targetPath = TARGET_PREFIX + PACKAGE_NAME + "/" + WEB_INF + relativePath;
copyFile(new File(sourcePath), new File(targetPath));
} else if (relativePath.startsWith(WEBROOT+"/")) {
relativePath = relativePath.replaceAll(WEBROOT+"/", "");
String sourcePath = JSP_SOURCE_PREFIX + relativePath;
String targetPath = TARGET_PREFIX + PACKAGE_NAME + "/" + relativePath;
copyFile(new File(sourcePath), new File(targetPath));
} else if (relativePath.startsWith(ROURCE+"/")) {
relativePath = relativePath.replaceAll(ROURCE+"/", "");
String sourcePath = CLASS_SOURCE_PREFIX + relativePath;
String targetPath = TARGET_PREFIX + PACKAGE_NAME + "/" + WEB_INF + relativePath;
copyFile(new File(sourcePath), new File(targetPath));
}
System.err.println(relativePath);
}
// if(line) {
//
// }
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
br.close();
}
}
}