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脚本,用来进行代码的批量更新。

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如何提取文件更新列表的更多相关文章

  1. SVN设置忽略文件列表以及丢失了预定增加的文件解决方法

    设置svn忽略列表 Linux下svn命令行配置 1. 修改版本库的相关属性 2. svn 客户端的配置 Windows下 Tortoise SVN 设置 1. Tortoise SVN 上修改版本库 ...

  2. SVN上传文件自动更新到发布站点

    源码安装svn, version 1.9.5 ###########服务端源码安装############# IP:192.168.1.13 安装依赖:              # yum -y i ...

  3. Linux下搭建SVN服务器及自动更新项目文件到web目录(www)的方法

    首先搭建SVN服务器 1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) sudo apt-get install subversion   ...

  4. SVN上传文件注意事项-------------------养成良好的项目文件上传习惯

    项目组的学弟经常把一些.obj文件和debug目录上传到svn,这个习惯很不好,我说了很多次他总改不了,还是写个文档说清楚吧,以后查起来也方便.     svn是一种版本控制工具,主要目的是用来管理代 ...

  5. 关于Android SDK Manager无法获取更新列表的正确设置

    1.以"管理员身份运行"SDK Manager. 2.Android SDK Manager"=>"Tools"=>"Optio ...

  6. 本地和svn都删除文件导致版本不同的问题

    想要删除一个项目中的文件,同是要删除svn上的文件. 自己操作 1.直接右键删除了本地项目中的一个目录的模块 2.右键删除了库中svn中的这个目录 3.同步本地和svn上的代码 4.问题出现了,本地和 ...

  7. CS程序自动更新实现原理及代码(支持多版本多文件更新)

    公司主要项目为CS端,经常遇到客户需求变更及bug处理,在没有引用自动更新之前每次更新程序,必须手动对每个客户端进行更新,这样导致技术支持工作量特别大,也给客户不好的印象,因此我需要一个自动更新程序! ...

  8. 文件访问控制列表facl

    [root@bogon code]# getfacl a.c //获取文件a.c的文件访问控制列表 # file: a.c # owner: root # group: root user::rw- ...

  9. MVC之Ajax.BeginForm使用详解之更新列表 mvc验证jquery.unobtrusive-ajax

    MVC之Ajax.BeginForm使用详解之更新列表   1.首先,请在配置文件设置如下:(该项默认都存在且为true) <add key="UnobtrusiveJavaScrip ...

随机推荐

  1. KVM和远程管理工具virt-manager

    kvm在server端的部署(针对rhel6系统,可以构建本地更新源) 注意:如果只是安装管理工具,可以试试直接执行8步骤 1.对服务器实行kvm虚拟化首先需要确认服务器的物理硬件是否支持 cat / ...

  2. java基础32 List集合下的ArrayList集合

    单例集合体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合 ...

  3. HDU 2874 Connections between cities(LCA(离线、在线)求树上距离+森林)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2874 题目大意:给出n个点,m条边,q个询问,每次询问(u,v)的最短距离,若(u,v)不连通即不在同 ...

  4. Introduction to MWB Minor Mode

    Introduction to MWB Minor Mode */--> Table of Contents 1. Introduction 2. Usage 1 Introduction MW ...

  5. hdu 4788 (2013成都现场赛 H题)

    100MB=10^5KB=10^8B 100MB=100*2^10KB=100*2^20B Sample Input2100[MB]1[B] Sample OutputCase #1: 4.63%Ca ...

  6. Spark-Streaming总结

    文章出处:http://www.cnblogs.com/haozhengfei/p/e353daff460b01a5be13688fe1f8c952.html Spark_总结五 1.Storm 和 ...

  7. 【转】Android开启网络调试的方法

    方法是偶然看到的: Android 终端adbd服务需要开启5555号端口来建立于adb的连接,如果未开启5555端口,则不能通过网络调试 查看是否可以网络调试: # netstat Android ...

  8. 使用scss + react + webpack + es6实现幻灯片

    写在前面: 刚学习完慕课网里的一个幻灯片案例,自己加了刚学的react,两者结合.首先让大家看看效果 点击此处 你可以先用纯js实现上面的效果:我的github上的 JS代码 或者 观看慕课提供的课程 ...

  9. 异常类Exception(String message, Throwable cause)中的cause理解

    这个在构造函数里面竟然有一个Throwable,感觉有些奇怪. 1. Throwable cause 这里cause要传一个Throwable的子类异常进去么? 是引起这个异常的异常,如果这个值是空值 ...

  10. 2017-2018-1 20179202《Linux内核原理与分析》第八周作业

    一 .可执行程序的装载 1. 预处理.编译.链接 gcc –e –o hello.cpp hello.c //预处理 gcc -x cpp-output -S -o hello.s hello.cpp ...