Можете ли вы порекомендовать хороший шаблон сообщения / рекомендации для обеспечения соблюдения в компании? [закрыто]


38

В Git можно установить и применить хороший шаблон коммита.

Можете ли вы порекомендовать (желательно с аргументацией) хороший шаблон фиксации / руководящие принципы для применения в компании?

Ответы:


42

я использую

[Abc]: Message.

С помощью Add, Mod (ify), Ref (actoring), Fix, Rem (ove) и Rea (dability) легко извлечь лог-файл.

Пример :

Add: New function to rule the world.  
Mod: Add women factor in Domination.ruleTheWorld().  
Ref: Extract empathy stuff to an abstract class.  
Fix: RUL-42 or #42 Starvation need to be initialised before Energy to avoid the nullpointer in People.  
Rem: freeSpeech is not used anymore.  
Rea: Removed old TODO and extra space in header.  

Если у меня больше строки, сначала я сортирую их по наиболее важным.


1
+1 Это хороший способ справиться с этим, и вы можете легко найти изменения.
Сардатрион - Восстановить Монику

12
EEk! Вы забрали свободу слова!
CaffGeek

1
Не могли бы вы объяснить разницу между Modи Ref? Иногда я просто делаю небольшие исправления, что является своего рода рефакторингом.
Yegle

2
@yegle Mod- это что-то для добавления или изменения поведения, для Refизменения внутренних вещей, которые не добавляют никакой функциональности, добавления API и т. д. Пример: если у меня есть add(Object)функция и я реализую add(List<Object>)функцию, я буду комментировать Mod. Позже я устранить дублирование и использовать непосредственно add(Object)в add(List<Object>)то я буду использовать Ref.
Рангзен

14

Мы используем следующее:

[Идентификатор билета в JIRA]: [Сообщение: что было сделано] Например - ABC-123: добавлена ​​возможность настройки презентации для региона.

В этом случае при правильной интеграции вы сможете получить измененные / удаленные / добавленные файлы в вашем трекере. Тем не менее, имейте в виду, что вы должны предотвратить что-то вроде ABC-123: Done или ABC-123: Исправлено с фильтрами, если это возможно.


+1 для исправления ошибок, но как насчет новых функций? Если только новые функции не созданы и в JIRA ...
Сардатрион - Восстановить Монику

3
@Sardathrion - Лично я бы создал трекеры для новой функциональности в JIRA. Мы делаем это с Bugzilla, и это дает группе тестирования (и всем остальным) хорошую видимость всего, что помещается в релиз, и сводит к минимуму события, когда они не были протестированы / проверены кодом / чем-либо еще.
Джон Хопкинс

@JonHopkins: хотя трекер ошибок можно использовать для новых функций, он не может быть идеальным инструментом. Конечно, ваш пробег будет варьироваться ^ _ ~
Сардатрион - Восстановить Монику

3
Мне понравился тикет, назначаемый для каждого коммита (конечно, в некоторых тикетах может быть несколько коммитов): это очень простой способ получить дополнительную справочную информацию при последующей проверке кода. "Почему они это сделали ?" гораздо легче ответить, когда у вас есть комментарий коммита и запись отслеживания проблемы.
Иоахим Зауэр

Не лучше ли оформить билет на отдельную ветку?
Тамас Селеи

11

Существует одно простое правило - соглашение, которому следуют многие (если не все) SCM и большинство инструментов, работающих с SCM:

Первая строка сообщения фиксации представляет собой краткую сводку, а остальная часть сообщения содержит подробности.

Таким образом, большинство инструментов отображают только первую строку и отображают все сообщение по запросу.

Типичное неправильное использование сообщения фиксации - это список изменений (будет показан только первый). Еще одно неправильное использование - написать подробное сообщение в одну строку.

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


Я никогда не видел причины написать длинное подробное сообщение о коммите в Git. Подробная информация поступает в систему отслеживания проблем, и поэтому мои сообщения о коммитах - это всего лишь одно предложение описания (небольшого) изменения, которое я внес в этот коммит.
Марнен Лайбоу-Козер

9

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

Информация о том, что было совершено, не должна быть включена, это может быть определено системой scm. Больше информации об ошибках / функциях относится к тем местам, где отслеживаются ошибки и функции.

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

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


4
Многие инструменты ошибок позволяют вам напрямую ссылаться на ревизию в вашем инструменте SCM, если вы введете детали в правильном формате. Точно так же многие инструменты SCM будут напрямую ссылаться на базу данных ошибок, если вы введете подробности ошибки в правильном формате. ИМО, пока ты это делаешь, значит ты золотой.
Дин Хардинг

4

В Git можно использовать почти все с помощью хитов Git . Проверьте примеры в .git / hooks для идей.

Что касается сообщения, в очень общем случае вы хотите включить достаточно информации о проблеме, которую вы решали, и само решение, чтобы иметь возможность найти и идентифицировать этот коммит позже. В большинстве случаев в проблеме будет указан номер ошибки (при правильной интеграции с вашей системой отслеживания ошибок). Если у вас есть другие системы, с которыми интегрируется ваш процесс (например, система отслеживания проверки кода), включите также соответствующие биты:

Extracted checking foobar range from bar() into foo(min, max) to re-use
in yadda() and blah(). foo() returns true if foobar is in the
specified range and false otherwise.

BugID: 123456
ReviewedBy: mabuddy
AutomergeTo: none

НО ты хочешь быть простым. В противном случае люди найдут способ обмануть систему и создать бесполезные сообщения о коммитах.


0

Мы используем шаблон, содержащий

  • Идентификационный номер ошибки / функции / исправления
  • Да / нет, описывающий, проверен ли код или нет
  • И подробный раздел для краткого описания намерения совершить

Однако первые два опускаются в большинстве случаев (иногда все три), поэтому это не имеет большого значения.


0

У меня обычно есть идентификатор в системе отслеживания билетов, которую я использую, или обзор высокого уровня в качестве первой строки. Тогда у меня есть пункты "маркера" позиции определенного изменения в коммите. Так что я мог что-то вроде:

MyVideoGameProject-123 OR Inventory System Improvements
Made inventory GUI drap and drap
Added ability to have multiple bag slots to expand inventory capacity

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


0

[ticketId] [ABC] [topicId] [WIP] Сообщение, где:

  • ticketId - идентификатор элемента в хранилище задач
  • ABC - добавить (функция), исправить (ошибка), str (структура), dep (зависимость) rem (обратная несовместимость / удалить), rea (читабельность), ref (рефакторинг)
  • topicId - может быть селектором работы для jenkins и / или имени ветви и / или имени темы для gerrit
  • WIP - работа в процессе / или нет (т. Е. Для этого может потребоваться непрерывная интеграция)
  • сообщение - деталь модификации

Примеры:
[# 452567] [добавить] [menu_item] новый элемент - гостевая книга
[# 452363] [fix] [banner_top] [WIP] 1024x300 можно использовать сейчас
[# 452363] [fix] [banner_top] 500x200 можно использовать сейчас
[ # 452713] [rem] [page] левое среднее объявление


Ваш ответ был бы сильнее, если бы вы объяснили, почему вы чувствуете, что это такой хороший формат. Хотя ценность этого формата может быть очевидна для вас, его ценность не так очевидна для других.

спасибо за комментарий - да, я объясню более подробно в ближайшее время - я просто хотел бы начать с фактов - было бы хорошей функцией стека, что вы могли бы подписать ответ с WIP :)
laplasz

Для «Работа в прогрессе» - это записка для вас, что вы вернетесь и внесете поправки, или вы намерены справиться с этим? Если так, то почему?
Дж.Б. Уилкинсон,

Рабочий процесс CI может потребовать этого - поэтому вы стремитесь освоить незавершенные изменения, чтобы как можно скорее интегрировать их
laplasz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.