SVN环境下快速导出增量包(未提交的情况下)
来源:互联网 发布:软件层次结构图 编辑:程序博客网 时间:2024/06/11 18:57
在很多情况下,由于服务器不在开发人员这边,需要开发人员快速将更新的文件打包以增量包的形式发给运维人员或客户那边,但是在更改文件很多的情况下,如何快速将更改的文件打包成增量包?下面我根据自己的解决方法记录一下,希望对大家有所帮助。
1.在SVN未提交代码的情况下,选择项目—>team–>与资源同步(或直接创建补丁)
直接点Finish(完成)
点击完成后,根据选择生成的打包文件存放位置查看是否已生成增量包记录(补丁)文件
文件生成后,整理代码:
2.根据生产的增量包记录((补丁))文件,读取信息,生成相对应的更新文件,相关代码如下
package com.legendshop.business.controller;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.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;public class FreePatchUtil { public static String patchFile="F:/patch.txt";//生成的补丁文件,由eclipse svn plugin生成 public static String projectPath="D:/yunjike_workSpace";//项目所在文件夹路径(生成与项目匹配的目录) public static String webContent="WebContent";//web应用文件夹名 public static String desPath="F:/zengliangbao";//补丁文件包存放路径 (SVN创建补丁的时候选择的位置) //public static String version="20140711";//补丁版本 /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { Map<String,List<String>> map = getPatchFileListMap(); Set<String> keySet = map.keySet(); for (String key : keySet) { List<String> fileList = map.get(key); copyFiles(fileList,key); } } public static Map<String,List<String>> getPatchFileListMap() throws Exception{ //List<String> fileList=new ArrayList<String>(); FileInputStream f = new FileInputStream(patchFile); BufferedReader dr=new BufferedReader(new InputStreamReader(f,"utf-8")); String line; Map<String,List<String>> map = new HashMap<String,List<String>>(); String webName = ""; while((line=dr.readLine())!=null){ if(line.indexOf("#P")!=-1){ line=line.replaceAll(" ",""); line=line.substring(line.indexOf("#P")+2,line.length()); webName = line; } if(line.indexOf("Index:")!=-1){ line=line.replaceAll(" ",""); line=line.substring(line.indexOf(":")+1,line.length()); List<String> fileList = map.get(webName); if(fileList==null){ fileList = new ArrayList<String>(); } fileList.add(line); map.put(webName, fileList); } } return map; } public static void copyFiles(List<String> list, String webName){ for(String fileName:list){ String fullFileName=projectPath+"/"+webName+"/"+fileName;//将要复制的文件全路径 String fullDesFileNameStr=desPath+"/"+webName+"/"+fileName; String desFilePathStr=fullDesFileNameStr.substring(0,fullDesFileNameStr.lastIndexOf("/")); File desFilePath=new File(desFilePathStr); if(!desFilePath.exists()){ desFilePath.mkdirs(); } copyFile(fullFileName, fullDesFileNameStr); System.out.println(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(); } } }
设置好补丁文件的位置,以及要生成更新文件的位置等配置,运行该类main方法:
已跟据补丁文件生成相关已更改的目录和文件,根据输出的目录,去该目录查看
直接将该文件压缩发给运维或客户即可
0 0
- SVN环境下快速导出增量包(未提交的情况下)
- SVN导出增量包
- Mac OS 在终端未启动的情况下,快速调出终端
- mysql恢复(在增量备份的情况下)
- windows环境下svn本地提交后自动更新提交到服务器的项目根目录
- Python 扩展包 win环境下的快速安装
- eclipse如何在使用了外部包的情况下如何正确导出
- 【未搭建好】Linux环境下使用图形化界面的SVN客户端软件-RabbitVCS
- linux环境下批量删除SVN未加入版本控制的文件
- SVN导出增量包 ,并获取本地编译的class文件
- spring和mybatis的整合使用,未使用整合包的情况下maven用5可实现
- 从svn下导出文件的注意事项
- Mac下Jenkins+SVN+Xcode构建持续导出环境
- Mac下Jenkins+SVN+Xcode构建持续导出环境
- 如何快速从Ubuntu系统的eclipse下导出jar包(MapReduce程序)
- 动态调用Dll(未注册的情况下)
- Linux 下定时提交SVN
- AS环境下freeline增量编译配置
- FWT 模板
- 题目1117:整数奇偶排序
- ZOJ3767-Elevator
- 获取ApplicationContext的方法及手动控制事务提交
- OracleDB的数据库名,实例名,服务名,数据库域名,全局数据库名的简单介绍
- SVN环境下快速导出增量包(未提交的情况下)
- Unity基础UI--Image
- 数据结构图之五(拓扑排序)
- POJ 1276 Cash Machine(?)
- 【测试】软件测试的流程图&&软件测试基本概念
- TensorFlow函数——tf.variable( )
- R-CNN论文详解
- 浅析shared_ptr 和weak_ptr、定制删除器
- AndroidStudio MVPPlugin