2016-04-21 14 views
3

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

Моя проблема: Когда я делаю полку, Mercurial запускает крюк предварительной фиксации. Проверка синтаксиса занимает 4-5 минут.

Как я могу избежать запуска крючка на полке?

Моей .hrgc линия крюка:

precommit = python ~/tools/check_syntax.py $($HG root) 

Я могу добавить параметр в моем check_syntax.py, чтобы избежать проверок, если это требуется.

+1

Я не верю, что вы в состоянии сделать это. Поскольку это похоже на меркурий, он активирует их вместе с крючками фиксации в соответствии с [этим ответом] (http://stackoverflow.com/a/30661561/6061947). Одна вещь, которую вы, возможно, можете сделать, - это запустить ее на «исходящей», которая была бы только до нажатия на изменения в репо. –

+0

Я уже прочитал ответ по ссылке. Я надеялся, что есть способ отличить ** hg commit ** и ** hg shelve ** в ** pre-commit ** hook. Но вы правы, я должен сделать свое подтверждение исходящим. Благодарю. – jedema

+0

Проверка исходящего слишком поздно - фиксация завершена и, возможно, это не последняя фиксация, а первая из серии, которая вызывает проблему. Таким образом, либо вы получите «синтаксис исправления» в любом случае, либо много изменений. – planetmaker

ответ

3

Вы можете просто переопределить конфигурации для данного конкретного вызова команды:

hg shelve --config hooks.precommit= --name abcd

+0

Благодарим вас за ответ. Можно ли добавить строку в **. Hgrc **, чтобы определить это по умолчанию? EDIT: Нет, это невозможно. Я должен запустить эту конфигурацию args только с командой shelve. Спасибо за трюк :) Я думаю, что это лучший способ. – jedema

+2

Вы можете определить псевдоним оболочки для 'hg shelve --config ....';) – ikostia

+0

Да, я уже это сделал. Спасибо. – jedema