Проблема с несколькими ветвями - предварительная очистка хуков Git с помощью Husky

Моя проблема довольно проста:

  • Я использую Husky для работы с хуками git
  • Я настроил перехватчики предварительной подготовки, которые запускают 2 сценария:

    "предварительный отжим": "npm-run-all --parallel lint test"

  • Работает правильно при одиночном нажатии

  • Но когда я пытаюсь протолкнуть 2 или более ветки, он не обнаруживает сбойных скриптов.

Например, предположим, что я создал 2 ветки:

1) особенность / ветка-1

2) особенность / ветка-2

  • ветка-1 содержит проблему с ворсом, ветка-2 чистая (нет ошибок теста / нет проблем с ворсом)
  • Я оформляю заказ на ветку-2 и нажимаю обе ветки (в моем случае с помощью SourceTree).

Вызывается сценарий Husky prePush, но сценарий lint не завершается неудачно (Haven, если он терпит неудачу, когда я нажимаю только эту ветку).

Я использую Husky 0.14.3


person Frix G    schedule 05.04.2018    source источник
comment
Что не обнаруживает? Можете ли вы поделиться минимальным воспроизводимым примером?   -  person evolutionxbox    schedule 05.04.2018
comment
@evolutionxbox вы правы, обновил вопрос.   -  person Frix G    schedule 05.04.2018
comment
Похоже на проблему с хаски или линтером. В случае сбоя он должен вернуть ненулевое значение. Какой линтер вы используете?   -  person evolutionxbox    schedule 05.04.2018
comment
Я использую eslint 4.8.0. Я думал решить проблему с ворсом, но он работает с одним нажатием.   -  person Frix G    schedule 05.04.2018


Ответы (1)


Вы не можете запускать тесты в ветке, в которой вы в данный момент не находитесь.
Если вы находитесь в feature/branch-2 и нажимаете feature/branch-1, githook сработает нормально и запустится. Но текущее состояние вашего приложения в файловой системе - feature/branch-2, поэтому тесты пройдут.
Вам нужно будет проверить ветку, которую вы хотите отправить, перед тем, как нажать.

Альтернативой может быть запуск тестов на pre-commit, чтобы вы всегда были в правильной ветке.
Или выполните сценарий, который проверяет правильную ветку, запускает тесты, нажимает и возвращает вас в ветку, которую вы было раньше. Хотя возможно, но, вероятно, немного переосмысленно.

person lukas-reineke    schedule 05.04.2018
comment
Вы совершенно правы, мне интересно, почему я не подумал об этом в первом случае ... Спасибо за ответ! - person Frix G; 06.04.2018