Я хочу запустить JSLint перед фиксацией в репозитории Mercurial или Git.
Я хочу, чтобы это был автоматический шаг, который был настроен вместо того, чтобы полагаться на разработчика (в основном на меня), не забывая запускать JSLint раньше. Я обычно запускаю JSLint во время разработки, но хочу указать контракт на JS файлах, которые они передают JSLint, прежде чем быть привязанным к репо.
Для Mercurial эта страница описывает синтаксис precommit, но единственными переменными, которые кажутся доступными, являются идентификаторы parent1 и parent2 changeset в фиксации. Я действительно хочу, это список имен файлов, которые связаны с фиксацией, поэтому я могу выбрать файл .js и запустить jslint над ними.
Аналогичная проблема для GIT, информация по умолчанию, доступная как часть precommit script, кажется ограниченной.
Что может быть связано с вызовом статуса hg status/ git как части precommit script, проанализируйте этот вывод, чтобы найти файлы JS, затем выполните эту работу. Я надеялся на что-то более легкое, хотя, и я не уверен, что если статус вызова как часть крючка precommit отражает правильную информацию. Например, в Git, если файлы изменений еще не добавлены, но фиксация Git использует -a, будут ли файлы отображаться в правильном разделе вывода состояния Git как часть набора фиксации?
Обновление: у меня что-то работает, оно видно здесь: http://github.com/jrburke/dvcs_jslint/