• svn如何提取文件更新列表


    eclipse svn插件site-1.10.1

    Slik-Subversion-1.8.0-x64.msi  ---可以使用svn命令,如svn status 显示修改过的本地文件,如下示例:

    I:workspace70ahdx_lcbmi70_chaxun>svn status
    ?       .settings
    ?       classesSocketClient.class
    ?       classesSocketClientShortlink.class
    ?       classescom
    M       configusinessconfig.xml
    M       readme.txt
    M       srccomxxxlcbmisocketsSocketMultiServer.java
    M       srccomxxxlcbmisocketsSocketServer.java
    M       srccomxxxlcbmkusinessCustomer.java
    ?       srccomxxxlcbmkusinessPeap.java
    M       srccomxxxlcbmkusinessRule.java
    M       srccomxxxlcbmkcommonServiceList.java
    M       srccomxxxlcbmkcoreSpecialValueProc.java
    ?       upline


    可以使用java代码获取此列表,制作成shell脚本,用来进行代码的批量更新。

    package svnkitDemo;
    
    import java.io.BufferedReader;
    
    public class SvnExportModfileList {
    	public static void main(String[] args) {
    		callShell();
    	}
    
    	/**
    	 * 
    	 * 执行命令行命令,返回该命令的返回值
    	 * 
    	 * @param command
    	 *            命令行命令
    	 * 
    	 * */
    	private static void callShell() {
    		String workDir = "i:/workspace70/gzdx_lcbmi80/";
    		System.out.println("workDir: " + workDir);
    		ProcessBuilder pb = null;
    		InputStream is = null;
    		InputStreamReader isr = null;
    		BufferedReader br = null;
    		try {
    			// 创建一个进程示例
    			List<String> list = new ArrayList<String>();
    			list.add("cmd.exe");
    			list.add("/C");
    			list.add("svn status");
    			pb = new ProcessBuilder(list);
    			// 设置工作目录
    			pb.directory(new File(workDir));
    			pb.redirectErrorStream(true);
    			Process p = pb.start();
    			// // 将执行结果打印显示
    			is = p.getInputStream();
    			isr = new InputStreamReader(is, "GBK");
    			br = new BufferedReader(isr);
    			String line;
    			File file = null;
    			List<String> listFile = new ArrayList<String>(3);
    			while ((line = br.readLine()) != null) {
    				String[] str = line.split("\s+");// STAUTS PATH
    				file = new File(workDir + str[1]);
    				// 过滤目录和不需要的文件
    				if (file.isDirectory() || file.getName().endsWith(".class")
    						|| file.getName().startsWith(".")
    						|| str[1].startsWith("classes")) {
    					continue;
    				}
    				System.out.println(line);
    
    				listFile.add(line.replace("\", "/")
    						.replace("src/", "classes/")
    						.replace(".java", ".class"));
    			}
    			System.out.println("=========符合条件的文件数:" + listFile.size());
    			createBackupShell(listFile, workDir);
    			System.out.println("
    
    ");
    			createUpdateShell(listFile, workDir);
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (br != null) {
    					br.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    			try {
    				if (isr != null) {
    					isr.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    			try {
    				if (is != null) {
    					is.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    	public static void createBackupShell(List<String> list, String workDir) {
    		int size = list.size();
    		String line = "";
    		int num = 0;
    		for (int i = 0; i < size; i++) {
    			line = list.get(i);
    			String[] str = line.split("\s+");// STAUTS PATH
    			String print = "cp $workDir/" + str[1] + "	 $workDir/" + str[1]
    					+ "$time";
    			System.out.println(print);
    			num++;
    		}
    		System.out.println("-------" + num);
    
    	}
    
    	public static void createUpdateShell(List<String> list, String workDir) {
    		int size = list.size();
    		String line = "";
    		int num = 0;
    		for (int i = 0; i < size; i++) {
    			line = list.get(i);
    			String[] str = line.split("\s+");// STAUTS PATH
    			int index = str[1].lastIndexOf("/");
    			String print = "";
    			if (index >= 0) {
    				print = "cp $sourceFileDir" + str[1].substring(index)
    						+ "	 $workDir/" + str[1];
    			} else {
    				continue;
    			}
    			System.out.println(print);
    			num++;
    		}
    		System.out.println("-------" + num);
    	}
    }
    


    shell脚本:

    backupFile.sh
    sourceFileDir=/codedir
    workDir=/gzdx_lcbmi80
    time=20130717
    
    cp $workDir/RUN/start.sh     $workDir/RUN/start.sh$time
    cp $workDir/config/businessobject.xml    $workDir/config/businessobject.xml$time
    cp $workDir/config/datacheck.xsd     $workDir/config/datacheck.xsd$time
    。。。。。。


    updateFile.sh

    sourceFileDir=/codedir
    workDir=/gzdx_lcbmi80
    time=20130717
    
    cp $sourceFileDir/start.sh   $workDir/RUN/start.sh
    cp $sourceFileDir/businessobject.xml     $workDir/config/businessobject.xml
    cp $sourceFileDir/datacheck.xsd  $workDir/config/datacheck.xsd
    。。。。。。



  • 相关阅读:
    JavaBean 之Hello World(入门实例)
    Velocity之Hello World(入门实例)
    URL, URI 和 URN 之间的区别
    Windows平台的Windbg/x64dbg/OllyDbg调试器简介以及符号文件*.pdb总结(★firecat推荐★)
    VC++内存泄漏检测方法(5):使用强大的Windbg工具,重点是Symbols Path设置
    安装与配置windbg 的符号文件(转自一片文章的回复,回复者RegKiller)
    WinDbg下载符号文件(内核层、用户层)
    Windbg下载微软符号表
    windbg符号表问题
    WinDBG加载符号表的一点心得体会
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3241526.html
Copyright © 2020-2023  润新知