Хук предварительной фиксации используется, когда вы хотите по какой-то причине потерпеть неудачу при фиксации. Вы действительно хотите завершить фиксацию, потому что ваш FTP-сайт не работает или диск заполнен?
Вы должны использовать сценарии предварительной фиксации только для того, чтобы завершить работу с вещами, находящимися под контролем разработчика, такими как файлы, в которых отсутствуют обязательные свойства и т. Д. Это дает разработчику возможность исправить проблему, а затем повторно отправить коммит.
Скрипт после фиксации все еще связывает пользовательский терминал, пока они ждут его завершения, но скрипт может завершиться ошибкой и уведомить пользователя о том, что что-то не так, но фиксация происходит в любом случае. Если вы хотите сделать это с хуками, вы должны делать это с хуком после фиксации, а не с хуком перед фиксацией.
Для того, что вы хотите сделать, крючки - не лучший способ. Что делать, если пользователь фиксирует много файлов? Должны ли они сидеть в течение десяти минут или около того, пока выполняется скрипт хука?
Лучшая идея - использовать систему непрерывной сборки, такую как Hudson . Хадсон будет наблюдать за вашим хранилищем Subversion и может выполнять задание FTP, которое вы хотите, каждый раз, когда пользователь делает коммит. С Hudson вы не связываете разработчика, поскольку он ожидает завершения ловушки, и у вас есть полный журнал того, что происходило с каждым коммитом.
Фактически, каждый сайт должен использовать сервер непрерывной сборки. Даже если вы не скомпилируете код, вы все равно хотите запускать тесты для каждого коммита.
У Hudson даже есть плагины FTP и SFTP, которые могут облегчить вашу задачу. Кроме того, вы можете вызывать сценарии до и после сборки в Hudson, чтобы иметь возможность делать практически все, что душе угодно.
Hudson работает на серверах Windows и Unix. Это процесс Java.
Если вы работаете в Windows, и у вас нет PowerShell , вам нужно скачать какой-нибудь язык сценариев, который вы используете, и использовать его для написания своих хуков. Стандартный язык программирования batch в процессоре Windows command.exe не очень гибкий и мощный. Поскольку перехваты запускаются на сервере, вам нужно только беспокоиться о том, работают ли перехваты на одном компьютере. Некоторые программы используют хуки на стороне клиента, и если вы пишете хук, он должен быть способен работать на каждой отдельной системе, которую может использовать клиент.