Subversion ловушка для удаления пробелов - PullRequest
2 голосов
/ 09 ноября 2009

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

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

Ответы [ 3 ]

5 голосов
/ 09 ноября 2009

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

4 голосов
/ 09 ноября 2009

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

См. документацию по хукам фиксации :

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

2 голосов
/ 09 ноября 2009

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

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

...