赞
踩
一. 场景说明
公司有很多项目,我把它们都放在本地同一个磁盘目录下,使用bat脚本,批量git pull拉取每一个项目的最新代码。
二. git_pull.bat脚本
@echo off
start cmd /K
for /D %%i in (F:\zzxypm\Cloud\dmp,F:\zzxypm\Cloud\pass,F:\zzxypm\Cloud\server,F:\zzxypm\Cloud\web,F:\zzxypm\Credit\react,F:\zzxypm\Credit\server,F:\zzxypm\Credit\server-web,F:\zzxypm\csci\csci,F:\zzxypm\lbmp\csci-activiti,F:\zzxypm\lbmp\react,F:\zzxypm\lbmp\server,F:\zzxypm\lbmp\vue,F:\zzxypm\maven-lib\maven-lib,F:\zzxypm\MSME\amalgam7,F:\zzxypm\MSME\inox,F:\zzxypm\MSME\invar,F:\zzxypm\MSME\tial,F:\zzxypm\Sign\console_server,F:\zzxypm\Sign\console_web,F:\zzxypm\Sign\sign_server,F:\zzxypm\Sign\sign_wx,F:\zzxypm\zzxypm,F:\zzxypm\zzxypm\db\zzxypm-db
) do cd %%i & git pull
cd F:\zzxypm
ECHO %date% %time% >>update.txt
pause
我这边for循环是直接定位到每一个项目的 .git所在目录中。
可以通过下面的代码获取所有 .git 所在目录全路径。
/** * 递归查找含有 .git 的目录 */ @Test public void recursionDiskDirectory(){ List<File> fileList = new ArrayList<>(); fileList = getAllFilePaths(new File("F:\\zzxypm"),fileList); StringBuilder sb = new StringBuilder(); for(File f:fileList){ if (".git".equals(f.getName())){ sb.append(f.getParent()).append(","); } } sb.deleteCharAt(sb.length()-1); System.out.println(sb); } private static List<File> getAllFilePaths(File filePath, List<File> fileList){ File[] files = filePath.listFiles(); if(files == null){ return fileList; } for(File f:files){ if(f.isDirectory()){ fileList.add(f); getAllFilePaths(f,fileList); } } return fileList; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。