Я пытаюсь проанализировать файлы в git-ревизиях и предпринять действия по их статусу
По какой-то причине после моего 'if then goto' цикл больше не продолжается, пока он не обходится без теста ветвления
весь скрипт:
@ECHO OFF
setlocal enabledelayedexpansion
SET max=10
set "TAB= "
REM parse N revision
FOR /f "delims=" %%a IN ('git rev-list --max-count=%max% HEAD') DO (
REM parse all modifs in this revision
ECHO Checking revision %%a
FOR /f "delims=" %%b IN ('git diff-tree --no-commit-id --name-status -r %%a') do (
rem echo b %%b
set string=%%b
rem echo string !string!
set status=!string:~0,1!
set filename=!string:~2!
echo %TAB%Filename: '!filename!'
echo %TAB%Status: !status!
IF "!status!"=="A" GOTO :CASE_A
IF "!status!"=="M" GOTO :CASE_M
IF "!status!"=="D" GOTO :CASE_D
:CASE_A
echo added
:CASE_M
echo modified
:CASE_D
echo deleted
############## LOOPS STOPS HERE ###############
)
)
объяснения:
git rev-list --max-count=%max% HEAD
возвращает 2 строки, содержащие хэш ревизий
git diff-tree --no-commit-id --name-status -r %%a
проверяет все файлы вэта ревизия
например:
A New Text Document.txt
M test.bat
Я бьюсь головой об эту, если кто-нибудь знает, как это исправить, спасибо