背景思路codeTODO
背景思路领导任务,过年了,删除已经三个月没有使用的git分支,让项目轻装上阵。手动一个个看,太累了,还是代码来的香
- 查询所有的远程分支
git branch -a
- 遍历查询每个分支最近一次的提交
git log -1 --date=short
- 将分支名称-最后提交时间放入Map,然后过滤符合的分支名称
import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.RuntimeUtil; import cn.hutool.core.util.StrUtil; import java.io.IOException; import java.io.InputStream; import java.time.LocalDate; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class GitTool { public static void main(String[] args) { String projectDir = "D:\workProject\javabasedemo\JavaBeseStudy"; String gitDir = " --git-dir="+projectDir+"\.git"; String workTree = " --work-tree="+projectDir; String gitDit = gitDir + workTree; String cmd = "git" + gitDir + workTree + " branch -a"; String str = RuntimeUtil.execForStr(cmd); String[] split = str.split("n"); Mapbran = new HashMap (); for (String s : split) { if (s.contains("remotes")) { String cmd2 = "git" + gitDit + " log -1 --date=short " + s; List strings = RuntimeUtil.execForLines(cmd2); if(strings.size() > 2){ String s1 = strings.get(2); String group0 = ReUtil.getGroup0("[0-9]{4}-[0-9]{2}-[0-9]{2}", s1); bran.put(s,group0); } } } List branches = getLastMonth(bran); System.out.println(bran); System.out.println(branches); } private static List getLastMonth(Map bran) { List list = new ArrayList(); bran.forEach((k,v)->{ LocalDate localDate = LocalDate.parse(v).plusMonths(3); if (localDate.isBefore(LocalDate.now())) { list.add(k); } }); return list; } }
最后根据打印出来结果,然后进行delete 分支
TODO后续用shell命令完成这个功能
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)