У меня есть SVN-репозиторий (версия 1.9.2), и я использую клиент TortoiseSVN (версия 1.9.2) на компьютере с Windows 7 (x64). Существуют скриптовые скрипты на стороне клиента (start-commit, pre-commit и post-commit), которые хранятся в репозитории и, конечно, доступны в локальной рабочей копии. Эти сценарии устанавливаются с использованием специальных свойств tsvn:startcommithook
, tsvn:precommithook
и tsvn:postcommithook
, каждый из которых указывает на соответствующий файл сценария с помощью переменной %REPOROOT%
чтобы избежать необходимости указывать абсолютный путь рабочей копии.
Когда я фиксирую изменения в репозитории, все скрипты хуков (командные файлы, .bat
) работают нормально.
Однако, когда я пытаюсь зафиксировать изменения в файлах по коммутируемому пути, появляется следующая ошибка:
И фиксация не может быть выполнена после подтверждения сообщения, диалог фиксации не появляется.
Я полагаю, что эта ошибка не вызывается скриптами ловушек (потому что нет изменений, когда я пишу exit 0
или exit 1
в скрипты как единственную команду), но TortoiseSVN при попытке их выполнить, что, по некоторым причинам, кажется чтобы больше не было возможности найти соответствующий скрипт.
Итак, как я могу использовать подключаемые скрипты, которые находятся в репозитории и, следовательно, в рабочей копии?
Замена переменной %REPOROOT%
полными абсолютными путями не меняет поведение вообще.
Когда я заменяю переменную %REPOROOT%
на %REPOROOT+%
в tsvn:*commithook
, для переключаемых путей ничего не меняется (поэтому появляется вышеупомянутое сообщение об ошибке), но для стандартных путей не выполняется сценарий подключения и после сообщения об ошибке не возникает все.
Как примечание: чтобы проверить, выполняется ли попытка запуска сценария перехвата, я полагаюсь на появление диалогового окна TortoiseSVN для утверждения / отклонения: