Вопрос

Джефф Этвуд писал о пробел и предложил создать фиксатор фиксации, который удаляет завершающие пробелы в концах строк и файлов.

Я искал, но я не нашел четкого примера использования pre-commit подключитесь, чтобы изменить файлы, подобные этому.У вас есть сценарий, которым вы хотели бы поделиться?

Это было полезно?

Решение

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

Другие советы

На самом деле вы не можете использовать перехватчики фиксации для выполнения этого в subversion, потому что, если файл будет изменен сервером, он не будет соответствовать версии на клиенте.Перехватчики фиксации предназначены для событий, доступных только для чтения, таких как генерация уведомлений или проверка файлов на предмет того, следует ли блокировать фиксацию.

Видишь документация по перехватам фиксации:

Перехват - это программа, запускаемая каким-либо событием репозитория, таким как создание новой редакции или модификация неверсированного свойства.Некоторые перехваты (так называемые “предварительные перехваты”) запускаются перед операцией с репозиторием и предоставляют средства, с помощью которых оба сообщайте о том, что вот-вот произойдет, и не допускайте, чтобы это вообще произошло.Другие перехватчики (“post hooks”) запускаются после завершения события репозитория и полезны для выполнение задач, которые проверяют — но не изменяют — репозиторий.Каждому перехвату передается достаточно информации, чтобы сообщить, что это за событие (или было), какие конкретные изменения в репозитории предложены (или завершены) и имя пользователя, запустившего событие.

Не уверен, на какой платформе вы находитесь, но вы можете сделать это с TortoiseSVN Черепаха, используя свой крючки на стороне клиента.

По сути, вы бы написали скрипт, который изменял бы файлы с помощью перехвата предварительной фиксации.Я думаю, что это более корректно сделано в скрипте сборки, хотя:вы же на самом деле не хотите фиксировать код, который вы даже не компилировали и не запускали!Ваш скрипт, который удаляет пробелы, потенциально может что-то сломать, в зависимости от контекста / языка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top