svn如何提取文件更新列表
2013-08-06 19:17
176 查看
eclipse svn插件site-1.10.1
Slik-Subversion-1.8.0-x64.msi ---可以使用svn命令,如svn status 显示修改过的本地文件,如下示例:
I:\workspace70\ahdx_lcbmi70_chaxun>svn status
? .settings
? classes\SocketClient.class
? classes\SocketClientShortlink.class
? classes\com
M config\businessconfig.xml
M readme.txt
M src\com\xxx\lcbmi\sockets\SocketMultiServer.java
M src\com\xxx\lcbmi\sockets\SocketServer.java
M src\com\xxx\lcbmk\business\Customer.java
? src\com\xxx\lcbmk\business\Peap.java
M src\com\xxx\lcbmk\business\Rule.java
M src\com\xxx\lcbmk\common\ServiceList.java
M src\com\xxx\lcbmk\core\SpecialValueProc.java
? upline
可以使用java代码获取此列表,制作成shell脚本,用来进行代码的批量更新。
shell脚本:
updateFile.sh
Slik-Subversion-1.8.0-x64.msi ---可以使用svn命令,如svn status 显示修改过的本地文件,如下示例:
I:\workspace70\ahdx_lcbmi70_chaxun>svn status
? .settings
? classes\SocketClient.class
? classes\SocketClientShortlink.class
? classes\com
M config\businessconfig.xml
M readme.txt
M src\com\xxx\lcbmi\sockets\SocketMultiServer.java
M src\com\xxx\lcbmi\sockets\SocketServer.java
M src\com\xxx\lcbmk\business\Customer.java
? src\com\xxx\lcbmk\business\Peap.java
M src\com\xxx\lcbmk\business\Rule.java
M src\com\xxx\lcbmk\common\ServiceList.java
M src\com\xxx\lcbmk\core\SpecialValueProc.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("\n\n"); 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] + "\t $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) + "\t $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
。。。。。。
相关文章推荐
- svn如何提取文件更新列表
- SVN(TortoiseSVN)详细教程(三)--SVN更新及如何解决冲突文件
- PowerShell提取TFS更新记录中的文件列表
- git文件更新列表中,出现了不是自己更改的文件,如何处理
- PHP运行SVN命令显示某用户的文件更新记录的代码
- 如何从OAT文件中提取dex文件
- Android Studio如何将so文件添加到svn中
- 如何实现xslt文件中节点属性的自动更新
- 从music.xidu.net网站提取mp3文件列表的小程序
- 如何在windows下提取某个文件夹下面所有文件的文件名
- 如何用cmd对SVN进行更新,并且将文件压缩解压
- 【Android开发经验】如何获取媒体库中所有音频文件信息,并在文件增删后及时更新媒体库
- [Python]如何获取目录下,最后更新的文件
- [Erlang_Question27]如何监控指定目录下的*.beam文件,如果有改动就更新到指定的节点?
- 如何上传Xcode生成的“.a”静态库文件到svn服务器上。
- 解决eclipse中svn部分文件更新不到的问题
- SVN之文件同步更新
- Linux下SVN服务器自动更新文件到Web目录的方法
- mac系统如何显示和隐藏文件 和 删除SVN隐藏文件
- 如何只svn add一个目录而不自动add下面的文件