hell0w0rd
@hell0w0rd
Просто разработчик

Гайд по именованию коммитов?

Есть куча гайдов/стилей ведения репозитория разработки с использованием git, но большая часть правил относится к ветвлению.

Может есть статьи/собственные правила по именованию коммитов?

Только что закомитил вот такой участок кода
if (null !== $currentCharset = $this->getCharset()) {
-            $content = iconv($this->getCharset(), $charset, $this->content);
+            $content = iconv($currentCharset, $charset, $this->content);
         } else {
             $content = $this->content;
         }


Назвав его «fix CurlResult::fetch charset logic»

Но ведь на самом деле я поправил только опечатку и предыдущий код работал нормально, просто лишний раз дергал метод.
  • Вопрос задан
  • 8997 просмотров
Пригласить эксперта
Ответы на вопрос 8
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
В чем смысл писать в название коммита метод / строку / переменные, которые вы заменили? Это итак видно из коммита. А вот логику, которую поменял ваш коммит, описывать надо. Например, «fix charset encoding on HTTP requests».
Ответ написан
AmdY
@AmdY
PHP и прочие вебштучки
В коммит кодируется информация о номере таска и его название. Ваш пример хорошо подходит на commit ---amend, для этого и нужны ветки, чтобы опечатки не фиксить отдельным коммитом. Я в целом стараюсь придерживаться по возможности правило — один таск, одна ветка, один коммит и amend позволяет не размазывать логику по коммитам.
Ответ написан
@m-haritonov
Как мне кажется, многое зависит от того, кто именно будет пользоваться комментариями (разработчики программы, пользователи и т.п.) и как именно, отчего и будет зависеть уровень абстрактности комментария и его содержание.

Оптимальным, на мой взгляд, является написание комментария как краткого описания изменений с позиции собственного видения смысла вносимых изменений, руководствуясь при этом фактически произведёнными изменениями (т.е. не «улетать» слишком высоко в абстракции при описании изменений) и исходить из того, что комментарии предназначены для разработчиков. Если исправляется орфографическая ошибка, то в комментарии следует указать, что «исправлена орфографическая ошибка», если изменены несколько участков кода ради общей логики, то следует описать что именно за логика подразумевается (т.е. дать именно описание общей, абстрактной логики, а не перечислять изменённые методы, классы и т.п.).

В случае Вашего примера, думаю, следовало написать что-то вроде «Убран лишний вызов функции getCharset в CurlResult::fetch» (чтобы были ясны Ваши намерения; Вы же убрали вызов так как он лишний (о чём потом даже написали в своём посте — «просто лишний раз дергал метод»), а не ради исправления какой-то ошибки).

Что касается использования в комментарии названий сущностей из программного кода (имён методов, классов, пространств имён и т.п.), которые были изменены, то, на мой взгляд, следует пытаться находить баланс между желанием конкретизировать область изменений и размером комментария (т.е. я за присутствие в комментарии указания на область изменений, просто конкретизация будет варьироваться от названия конкретных сущностей из программного кода до обобщённых названий). Так, например, вместо комментария «добавлена поддержка рекурсивного удаления файлов» я бы предпочёл комментарий «добавлена поддержка рекурсивного удаления файлов в функции removeDirectory»), а вместо комментария «добавлена поддержка событий в классах Plugin1, Plugin2, Plugin3» предпочёл бы «добавлена поддержка событий в плагинах».

Ещё можно попробовать настроить программу просмотра таким образом, чтобы она в начале комментария выводила общий для всех изменённых файлов путь (поможет, если в программе соблюдается соответствие между именем файла и программной сущности, содержащейся в нём).
Ответ написан
Комментировать
afiskon
@afiskon
Мы обычно делаем так.

Как правило, одна задача (фича или бага) — один коммит с комментарием «номер задачи: название задачи». Задача пишется в отдельной ветке с кучей коммитов типа fix-fix-fix. Перед pull request коммиты объединяются в один с помощью git rebase. Такой подход позволяет легко откатывать фиксы.

Если задача очень большая, можно разбить ее на подзадачи или чеклист, тогда каждой подзадаче может соответствовать один коммит. Если нужно сделать небольшое изменение, пишем, например, «0000: minor changes» или «0000: typo fixed».
Ответ написан
Комментировать
Комментировать
paceholder
@paceholder
Ответ написан
Комментировать
paceholder
@paceholder
Извиняюсь, опубликовал здесь ссылку, которая не имеет смысла.
Ответ написан
Комментировать
Есть вариант помечать такие места TODO-ками (когда заметили), с пометкой что надо исправить и что это рефакторинг и через какие-то периоды времени устраивать рефакторинг кода по этим местам с ответвлением в отдельную ветку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы