Вы не должны изменять транзакцию во время ловушечного скрипта. Вы можете либо отклонить коммит с сообщением ( stderr будет отправлено клиенту ), либо сделать это в отдельном коммите в пост-фиксации.
[править]
Я хочу уточнить , почему модификация транзакций - плохая идея (svn-технически):
Клиент ничего не знает об этом.
За исключением «OK», «FAILED» и вывода stderr, во время фиксации нет обратного канала от сервера к клиенту.
Когда клиент фиксирует свои изменения и сообщается, что фиксация прошла успешно, он помечает свой локальный статус файла и папки как синхронизированный с версией репозитория [xyz]. Когда вы позже что-то изменяете, например, добавляете файл локально, он хочет зафиксировать эти изменения, но потом ... Что ж, вы можете попытаться узнать, что происходит, я ожидаю что-то вроде "ошибка контрольной суммы" или "файл уже добавлен" , В зависимости от типа изменений у вас, вероятно, не будет больше шансов получить рабочий туалет, чем путем удаления папки и повторного извлечения поврежденной детали.
Это была техническая часть. Теперь на стороне разработчика: во-первых, автоматическое исправление изменений кажется разумным, но это не удастся из-за того простого факта, что если исходный код будет предварительно вычисляемым, нам не придется разрешать его писать разработчикам. Вы хотите, чтобы ваши разработчики поступали правильно.
Это лучше всего работает через образование: они должны знать , что правильно. Хорошие меры, чтобы заставить их что-то узнать, дополняют старые добрые тренировки любого рода, давая им обратную связь.
Хорошим образовательным инструментом может служить также сообщение об ошибке от сервера svn, автоматическая почта после сбойных сборок или юнит-тестов, результаты статического анализа исходного кода и т. Д.
Я бы порекомендовал использовать продолжение интеграции и проверить там дерево исходных текстов. Преимущества этого заключаются в том, что разработчик не будет заблокирован для принятия своих изменений после долгого рабочего дня, но вы все еще знаете этот статус дерева исходных текстов.
И теперь я просто догадываюсь, чего вы хотите достичь: дерево исходных текстов на стороне сервера всегда должно быть «функциональным». Тогда проблема в том, что даже с автоматическим исправлением файлов, модульным тестированием перед фиксацией, проверкой стиля и чем угодно, вам, наконец, все равно придется проверять, действительно ли программа работает, путем системного тестирования старого стиля. В общем, вы ничего не получаете.
Технология может поддерживать процессы, а продуманные инструменты поддерживают ее настолько хорошо, что последующие процессы действительно помогают разработчикам экономить время и упрощают рабочий процесс. Но технология обычно не может заменить процессы, и она не может заменить человеческий интеллект (по крайней мере, на данный момент).
[/ Править]