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
。。。。。。



原文地址:https://www.cnblogs.com/javawebsoa/p/3241526.html