Использование git add внутри хука перед фиксацией

TL; DR: Использование eslint --fix && git add в ловушке перед фиксацией работает, но оставляет поэтапные, а не поэтапные файлы! Использование ловушки после фиксации для git reset <staged-files>, похоже, работает, но есть ли решение для этого?

Чтобы дать некоторую предысторию, я начал использовать lint-staged и husky для автоматического исправления ошибок lint JavaScript на git commit. Это работает очень хорошо, если вы сначала разместили свои изменения, а затем зафиксировали, например:

git add index.js
git commit -m "Some Message"

IntelliJ IDEA, похоже, фиксирует файлы напрямую (например, git commit -m "Some Message" index.js), что по-прежнему работает, автоматически фиксированные файлы фиксируются. К сожалению, при этом также остаются поэтапный файл (исправляется автоматически) и непостоянный файл (исходные ошибки lint), и это проблема, которую я хочу решить.

Не зная, с чего начать, я открыл выпуск 151. с lint-staged, но после некоторого расследования проблема, похоже, связана с Git, а не lint-staged.

У меня есть только базовые навыки работы с Git, поэтому, чтобы свести к минимуму отвлекающие факторы, я создал проект без lint-staged или husky и вручную добавил ловушку перед фиксацией. Затем я провел те же тесты (например, git commit -m "Some Message" index.js), и неудивительно, что возникла та же проблема. Пытаясь решить эту проблему, я также добавил ловушку после фиксации, которая запускает git reset <staged-files>, который, похоже, работает хорошо, но я не уверен, правильное ли это решение.

Если у вас есть опыт работы с этим или вы являетесь гуру Git, взгляните на демонстрационное репо и сообщите нам, если есть лучший способ. Любая помощь будет оценена.


person Samuel Sharpe    schedule 29.04.2017    source источник
comment
У вас точно такая же проблема. Вы что-нибудь нашли, Самуэль?   -  person Kushagra Gour    schedule 03.07.2017
comment
Нет, не похоже :(   -  person Samuel Sharpe    schedule 05.07.2017


Ответы (1)


См. https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FIDEA-135454

Обходной путь: добавьте git update-index -g в качестве обработчика postcommit.

person Jonas Gröger    schedule 26.06.2018