Precommit не выполняется в VS Code

Вопрос или проблема

У меня возникла проблема, связанная с линтерами перед коммитом и VS Code (Mac) при использовании Go. Перед последним обновлением VS Code мой файл pre-commit-config.yaml выглядел так:

repos:
  # Websec хуки обязательны, не комментируйте их.
  - repo: [email protected]:*****/*****
    rev: v2.0.0
    hooks:
      - id: pre_commit_hook
        stages: [commit]
      - id: post_commit_hook
        stages: [post-commit]

  # Datasec хуки обязательны, не комментируйте их.
  - repo: [email protected]:*****/*****
    rev: 1.2.0
    hooks:
      - id: pre_commit_hook
        stages: [commit]
        verbose: true
      - id: post_commit_hook
        stages: [post-commit]

  # Следующие хуки - это хуки качества кода. 
  # Если вы хотите, чтобы они запускались при каждом коммите, раскомментируйте их.
  # Они ОПЦИОНАЛЬНЫ.

  - repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
    rev: v2.14.0
    hooks:
      - id: pretty-format-golang
        args:
          - --autofix
  - repo: https://github.com/golangci/golangci-lint
    rev: v1.61.0
    hooks:
      - id: golangci-lint
        entry: golangci-lint run
        args:
          - --max-issues-per-linter=0
          - --max-same-issues=0
          - --config=.code_quality/.unused.yaml
          - --new-from-rev=HEAD~1 # закомментируйте этот аргумент, если хотите запустить pre-commit run --all-files
      - id: golangci-lint
        entry: golangci-lint run
        args:
          - --max-issues-per-linter=0
          - --max-same-issues=0
          - --config=.code_quality/.custom_golangci.yml
          - --new-from-rev=HEAD~1 # закомментируйте этот аргумент, если хотите запустить pre-commit run --all-files
  - repo: https://github.com/*****/****-lint
    rev: v1.1.0
    hooks:
      - id: go-****-lint
        stages: [commit]

И когда я сделал git коммит, всё работало. После последнего обновления VS Code, когда я выполняю коммит, он останавливается на одном из опциональных линтеров в YAML файле, вот так:

логи консоли в vs code

Что я сделал:

  • Выполнил тот же коммит из другой IDE (Goland) или используя iterm, всё работает нормально.
  • Попробовал использовать только обязательные линтеры в YAML файле, и это сработало.
  • Удалил и заново установил VS Code с нуля, и это сработало, но после нескольких коммитов снова происходит сбой.

Есть идеи, что я могу проверить или что я упустил?

Ответ или решение

Проблема с предварительными коммитами (pre-commit) в Visual Studio Code, которая проявляется после обновления, может быть вызвана несколькими факторами. Вот несколько шагов, которые помогут вам разобраться с этой ситуацией:

1. Проверка конфигурации pre-commit

Ваш файл pre-commit-config.yaml выглядит корректно, однако убедитесь, что все репозитории и версии правильные. После обновления VS Code какие-либо зависимости могли измениться. Убедитесь, что вы используете последние версии хуков, и попробуйте обновить их:

pre-commit autoupdate

2. Логирование и отладка

Проверьте, какие сообщения выводятся в консоли при выполнении коммита. Обратите внимание на сообщения об ошибках, связанные с хуками. Логи могут предоставлять важную информацию о том, что именно идет не так. Используйте флаг -v для детального вывода информации:

pre-commit run --all-files -v

3. Использование встроенного терминала

Поскольку вы недавно проверяли коммиты в других IDE и через терминал, попробуйте выполнить коммиты из встроенного терминала VS Code. Это позволит проверить, не связана ли проблема с графическим интерфейсом.

4. Отключение сторонних расширений

Некоторые расширения в VS Code могут конфликтовать с процессом выполнения pre-commit. Попробуйте временно отключить расширения, не относящиеся к Git, и проверить, будет ли проблема сохраняться.

5. Настройка Git

Убедитесь, что ваша конфигурация Git не была изменена. Выполните команду, чтобы проверить текущие настройки:

git config --list

Если у вас есть какие-либо специфические настройки, касающиеся хуков или скриптов, это может повлиять на поведение VS Code.

6. Проверка системных ресурсов

Иногда проблемы могут возникать из-за нехватки ресурсов системы. Проверьте использование ЦП и памяти, а также закройте ненужные приложения, чтобы удостовериться, что у VS Code достаточно ресурсов для выполнения хуков.

7. Переустановка расширений

Как вы уже пробовали переустанавливать VS Code, убедитесь, что дополнения, которые вы используете для работы с Go и Git, также обновлены или переустановлены.

8. Проверка прав доступа

Убедитесь, что у вас есть необходимые права для выполнения хуков. В некоторых случаях, особенно если вы работаете с несколькими пользователями или на общей системе, права могут ограничивать выполнение определённых команд.

Заключение

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

Если решение не удастся найти, вы также можете использовать альтернативные инструменты для линтинга, такие как другие CI/CD интеграции, пока проблема не будет разрешена.

Оцените материал
Добавить комментарий

Капча загружается...