Почему мой условный оператор post-commit hook не работает, когда я проверяю, зафиксирована ли конкретная ветка?

я запускаю Subvbersion через VisualSVN Server на сервере Windows, и мой репозиторий настроен со стволом и тремя ветвями. Ветви dev, test и prod. У меня есть ловушка после фиксации, которую я хочу запустить, которая обновляет рабочую копию после запуска фиксации, но я хочу, чтобы она обновляла эту рабочую копию, только если фиксация была сделана в ветви dev.

Это код, который у меня есть сейчас ...

@setlocal enableextensions enabledelayedexpansion
@echo off
SET str1=%1
IF NOT x%str1:dev=%==x%str1%  (
pushd 
svn update --username  --password 
echo update complete
)
endlocal

Если я снимаю условное выражение, обновление запускается при каждом коммите, поэтому я знаю, что код внутри условного кода работает. Я также протестировал условный файл как обычный пакетный файл, отправив в нем строки вродефилиалы / DEV» а также "филиалы / тест» и он вел себя правильно в этих тестах. Однако, когда я сохраняю это как свой скрипт ловушки после фиксации, он никогда не запускается, независимо от того, находится ли коммит в ветке dev или нет.

РЕДАКТИРОВАТЬ: Основываясь на обратной связи, что этот вопрос уже был дан ответ, я попробовал подход, рекомендованный в другом вопросе, но этот подход тоже не работает. Вот моя версия кода, предложенная там:

REM The command checks whether the committed revision changes any data under '/dev'
"%VISUALSVN_SERVER%bin\svnlook.exe" dirs-changed %1 --revision %2 | findstr /b "[Dd]ev"

REM If 'findstr' returns error code 0, it means that the commit involves the '/dev' directory.
REM So if the the returned code is 0 the command runs external batch 'post-commit-actions.bat'
If %ERRORLEVEL% EQU 0 call %~dp0post-commit-actions.bat %*

Для того, чтобы это работало, я создал файл в каталоге ловушек с именем post-commit-actions.bat для выполнения обновления svn. Тем не менее, это не запуск пост-фиксации. Если я'Я опускаю любую соответствующую информацию, пожалуйста, дайте мне знать.

РЕДАКТИРОВАТЬ: Спасибо за всехс помощью. Благодаря этому я смог собрать рабочее решение. Для тех, кто ищет ответ на похожую проблему, он работает так:

svnlook dirs-changed %1 -r %2 | findstr /b /i "branches/dev"

IF %ERRORLEVEL% EQU 0 (
    pushd 
    svn update --username  --password 
)

Ответы на вопрос(2)

Ваш ответ на вопрос