Почему мой условный оператор 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 <path to working copy>
svn update --username <svn_username> --password <svn_password>
echo update complete
)
endlocal

Если я снимаю условное выражение, обновление запускается при каждом коммите, поэтому я знаю, что код внутри условного кода работает. Я также проверил условное выражение как обычный пакетный файл, отправив ему строки, такие как "branch / dev" и "branch / test", и в этих тестах он работал правильно. Однако, когда я сохраняю это как свой скрипт ловушки после фиксации, он никогда не запускается, независимо от того, находится ли коммит в ветке 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 <path-to-working-copy>
    svn update --username <repo-username> --password <repo-password>
)

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

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