svn如何提取文件更新列表
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如何提取文件更新列表的更多相关文章
- SVN设置忽略文件列表以及丢失了预定增加的文件解决方法
设置svn忽略列表 Linux下svn命令行配置 1. 修改版本库的相关属性 2. svn 客户端的配置 Windows下 Tortoise SVN 设置 1. Tortoise SVN 上修改版本库 ...
- SVN上传文件自动更新到发布站点
源码安装svn, version 1.9.5 ###########服务端源码安装############# IP:192.168.1.13 安装依赖: # yum -y i ...
- Linux下搭建SVN服务器及自动更新项目文件到web目录(www)的方法
首先搭建SVN服务器 1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) sudo apt-get install subversion ...
- SVN上传文件注意事项-------------------养成良好的项目文件上传习惯
项目组的学弟经常把一些.obj文件和debug目录上传到svn,这个习惯很不好,我说了很多次他总改不了,还是写个文档说清楚吧,以后查起来也方便. svn是一种版本控制工具,主要目的是用来管理代 ...
- 关于Android SDK Manager无法获取更新列表的正确设置
1.以"管理员身份运行"SDK Manager. 2.Android SDK Manager"=>"Tools"=>"Optio ...
- 本地和svn都删除文件导致版本不同的问题
想要删除一个项目中的文件,同是要删除svn上的文件. 自己操作 1.直接右键删除了本地项目中的一个目录的模块 2.右键删除了库中svn中的这个目录 3.同步本地和svn上的代码 4.问题出现了,本地和 ...
- CS程序自动更新实现原理及代码(支持多版本多文件更新)
公司主要项目为CS端,经常遇到客户需求变更及bug处理,在没有引用自动更新之前每次更新程序,必须手动对每个客户端进行更新,这样导致技术支持工作量特别大,也给客户不好的印象,因此我需要一个自动更新程序! ...
- 文件访问控制列表facl
[root@bogon code]# getfacl a.c //获取文件a.c的文件访问控制列表 # file: a.c # owner: root # group: root user::rw- ...
- MVC之Ajax.BeginForm使用详解之更新列表 mvc验证jquery.unobtrusive-ajax
MVC之Ajax.BeginForm使用详解之更新列表 1.首先,请在配置文件设置如下:(该项默认都存在且为true) <add key="UnobtrusiveJavaScrip ...
随机推荐
- JS实现全选、反选、不选
JS实现全选.反选.不选 效果图: 代码如下,复制即可使用: <!DOCTYPE html> <html> <head> <meta charset=&quo ...
- JS实现逼真的雪花飘落特效
逼真的雪花飘落特效 效果图: 图片素材 : --> ParticleSmoke.png 代码如下,复制即可使用: <!doctype html> <html> <h ...
- javaweb笔记二
web服务器:实现服务器的开启,监听端口,接收客户端请求,产生响应.响应信息只能是静态的HTML,缺乏灵活性.web容器:是辅助应用的一种方式,是为了解决web服务器缺陷而产生的.可以将请求信息处理完 ...
- LeetCode517. Super Washing Machines
You have n super washing machines on a line. Initially, each washing machine has some dresses or is ...
- Linux 相关
一.WCHAN的含义 WCHAN 进程正在睡眠的内核函数名称:该函数的名称是从/root/system.map文件中获得的. 参考:解析ANDROID ps命令执行后各项参数的含义 二.查看线程 ps ...
- Bootstrap Paginator分页插件使用示例
最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有分页插件呢,或者说是基于jquery支持的分页功能,这样整体 ...
- React.js学习之环境搭建
1 工欲善其事必先利其器:前端开发工具 1.1 WebStorm和Sublime Text Sublime Text:作为代码编辑器,Sublime Text的优点如下: 主流前端开发编辑器 体积较小 ...
- 【AtCoder】ARC095 C-F题解
我居然每道题都能想出来 虽然不是每道题都能写对,debug了很久/facepalm C - Many Medians 排序后前N/2个数的中位数时排序后第N/2 + 1的数 其余的中位数都是排序后第N ...
- win划分磁盘
我的电脑-->管理 磁盘管理: 右键压缩卷 输入压缩空间量,进行压缩 右键未分配的磁盘-->新建逻辑卷 选取需要的格式
- C#基础语法补充
[学习笔记]前接:https://www.cnblogs.com/aland-1415/p/7360509.html 一.异常处理 1.格式 try{ } catch{ } catch{ } ... ...