Никогда больше не писать сообщение коммита (с помощью GPT-3)

GPT-3 зарекомендовал себя как ценный инструмент для решения технических задач, таких как создание сценариев и операции с командной строкой. С gptcommit вам больше не нужно тратить время на написание сообщений о фиксации. Установите gptcommit и позвольте GPT-3 написать за вас.

Сообщения о коммитах — это ключевой канал, с помощью которого разработчики могут сообщать о своей работе другим, особенно в ходе проверки кода. При внесении сложных изменений в код может быть утомительно тщательно документировать содержимое каждого изменения. Я часто чувствовал порыв просто назвать свой коммит «исправить ошибку» и двигаться дальше. Этим однострочным сообщениям часто не хватает полного контекста, необходимого для проверки, чтобы понять изменение. Хуже того, в кажущемся безобидным описании коммита, например «исправить опечатку», могут быть пропущены ключевые изменения, сделанные где-то еще в кодовой базе. Обнаружение этих изменений с помощью gptcommit помогает автору и рецензенту привлечь внимание к этим дополнительным изменениям.

Получите настройку за считанные минуты

Предварительные требования: чтобы использовать gptcommit, вам необходимо иметь

Cargo, менеджер пакетов Rust, установил ключ API от OpenAI.

1) Установите бинарник gptcommit из груза

cargo install  – locked gptcommit

2) В локальном репозитории git выполните следующее, чтобы настроить githooks gptcommit. Обратите внимание, что эту команду необходимо запускать для каждой локальной проверки git, которая у вас есть.

gptcommit install

3) В ваших dotfiles или вашей червячной оболочке установите OPENAI_API_KEY на ваш ключ.

export OPENAI_API_KEY=”sk-…”

Рассмотрите возможность добавления приведенной выше строки в ваш файл ~/.bashrc, ~/.zshrc или эквивалентный dotfile.

Если вы нашли убедительные сводки коммитов с помощью gptcommit, я буду признателен за ваши отзывы.

Опираясь на предыдущую работу

gptcommit: этот инструмент был вдохновлен предыдущими инструментами для обобщения коммитов, включая:

https://github.com/RomanHotsiy/commitgpt

Этот инструмент в настоящее время не работает, так как он использовал неофициальный API для запроса ChatGPT. gptcommit использует официальный API завершения от OpenAI и требует, чтобы пользователи принесли свой ключ API OpenAI. gptcommit интегрируется как гитхук, поэтому он может беспрепятственно работать как часть рабочего процесса git. Наконец, gptcommit использует Rust, что позволяет сократить время выполнения.

https://github.com/KanHarI/gpt-commit-summarizer

Этот инструмент интегрируется через действия GitHub, а не в рабочий процесс git. Обобщение происходит на уровне PR, а не для каждого коммита. Действие уже запускается после того, как запрос на включение уже был обобщен и опубликован непосредственно в запросах на вытягивание без проверки человеком. Многие аспекты дизайна подсказки были заимствованы из этого проекта. gptcommit фокусируется на рабочем процессе git commit, чтобы автор фиксации мог утвердить или отредактировать любой вывод из GPT.

За кулисами

Прием коммита git происходит в два этапа.

Во-первых, каждый файл обобщается независимо и параллельно для создания списка маркеров из моделей OpenAI.

Затем суммарные изменения файла суммируются двумя способами. Во-первых, модели предписывается сгенерировать короткий однострочный заголовок для коммита. Кроме того, модель обобщала маркированные пункты более высокого уровня, которые должны быть включены в текст сообщения о коммите.

Окончательный вывод, предоставляемый сообщению фиксации, состоит из:

[title]

- [summary point 1]
- [summary point 2...]

[/changed/file A]
- [file summary point 1]
- [file summary point 2...]
[/changed/file B...]
- [file summary point 1...]
...

Попробуйте сами

- Бегать

 cargo install  – locked gptcommit

или проверьте репо для более подробной информации. Вам понадобится ключ API OpenAI (модель по умолчанию — GPT-3), и вам нужно будет установить githook в каждом репозитории, в котором вы работаете.

GitHub: https://github.com/zurawiki/gptcommit

Наконец, если вы столкнулись с какими-либо ошибками или у вас есть какие-либо предложения по улучшению, пожалуйста, откройте вопрос в репозитории.