快速从git上提取一段时间内提交文件部署清单:
此文章目的是为了快速找出一段时间内所有修改且需要发布的文件清单步骤:
1、从git上导出一段时间内所有提交文件 2、文件去重 3、 文件排序示例:
1、 控制台打印出本次修改文件,如果需要新增的话 将for循环里面的判断去掉,控制台打印就好了
public static void main(String[] args){
File file = new File("D:\\cms.t3\\log20210911.txt");
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
System.out.println("读取git提交日志开始......");
System.out.println();
List<String> list = new ArrayList<String>();
String tempStr;
while ((tempStr = reader.readLine()) != null) {
if(tempStr.trim().equals("commit 8b79f9a1fc2db757c5cce425304fc36e1a3aacc3")) {
System.out.println("提交记录读取到7月8日截至,总共行数:" + list.size());
System.out.println();
break;
}
list.add(tempStr);
}
reader.close();
System.out.println("开始对提交的记录去重.....");
System.out.println();
Map<String, Boolean> map = new HashMap<String, Boolean>();
for(String item : list) {
map.put(item, true);
}
System.out.println("去重完成,去重之后总行数为:"+ map.size());
System.out.println();
System.out.println("开始提取WebRoot和src下面的文件");
System.out.println();
List<String> list2 = new ArrayList<String>();
for(String item :map.keySet()) {
if(item.indexOf("WebRoot")>-1 || item.indexOf("src")>-1) {
list2.add(item);
}
}
System.out.println("提取WebRoot和src下面的文件数量:" + list2.size());
System.out.println("开始打印提取到的文件");
int index=1;
for(String item : list2) {
System.out.println(index + "." +item);
index++;
}
System.out.println("打印提取文件结束....");
System.out.println();
System.out.println("忽略票据文件夹中的内容...");
System.out.println("忽略WebRoot/invoice");
System.out.println("忽略WebRoot/page/invoice");
System.out.println("忽略src/com/invoice");
System.out.println("忽略src/config/msgTemplates");
System.out.println("忽略src/config/invoice");
List<String> list3 = new ArrayList<String>();
for(String item : list2) {
if(item.indexOf("WebRoot/invoice")>-1) {
continue;
}
if(item.indexOf("src/com/invoice")>-1) {
continue;
}
if(item.indexOf("src/config/msgTemplates")>-1) {
continue;
}
if(item.indexOf("src/config/invoice")>-1) {
continue;
}
if(item.indexOf("WebRoot/page/invoice")>-1) {
continue;
}
list3.add(item);
}
System.out.println("忽略之后文件剩余:" + list3.size());
System.out.println();
System.out.println("打印剩余文件.....");
Collections.sort(list3, new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
for(int i=0,j=list3.size();i<j;i++) {
System.out.println((i+1) + "." +list3.get(i));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
2、 除了去重其它和上面类似
public static void main(String[] args) throws IOException {
File file = new File("D:\\git\\T3\\20210901\\log20210910001.txt");
BufferedReader reader = null;
reader = new BufferedReader(new FileReader(file));
Map<String, Boolean> map = new HashMap<String, Boolean>();
String tempStr;
while ((tempStr = reader.readLine()) != null) {
if(tempStr.indexOf("src")>-1 || tempStr.indexOf("WebRoot")>-1)
map.put(tempStr, true);
}
reader.close();
List<String> com = new ArrayList<>();
List<String> uncom = new ArrayList<>();
List<String> page = new ArrayList<>();
for(String item : map.keySet()) {
// 忽略部分目录,如本次新增
if(item.contains("src/com/invoice")||item.contains("#")
||item.contains("WebRoot/page/invoice")||item.contains("src/config/invoice")
){
continue;
}
if(item.contains("com")){
com.add(item);
}else if(item.contains("page")){
page.add(item);
}else {
uncom.add(item);
}
}
System.out.println(com.toString());
System.out.println(page.toString());
System.out.println(uncom.toString());
}