ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я автор gitchangelog, о котором я буду говорить в следующем.
TL; DR: Вы можете проверить собственный журнал изменений gitchangelog или вывод ascii , сгенерировавший предыдущий.
Если вы хотите сгенерировать журнал изменений из вашей истории git, вам, вероятно, придется рассмотреть:
- выходной формат . (Чистый пользовательский ASCII, тип журнала изменений Debian, Markdow, ReST ...)
- некоторая фильтрация коммитов (вы, вероятно, не хотите, чтобы все опечатки или косметические изменения попадали в ваш список изменений)
- некоторые передают текстовый спор перед включением в список изменений. (Обеспечение нормализации сообщений с использованием заглавных букв в первой букве или конечной точки, но это также может привести к удалению некоторой специальной разметки в сводке)
- совместима ли ваша история с git ? Слияние, тегирование не всегда так легко поддерживается большинством инструментов. Это зависит от того, как вы управляете своей историей.
По желанию вам может потребоваться некоторая категоризация (новые вещи, изменения, исправления) ...
Имея все это в виду, я создал и использую gitchangelog . Он предназначен для использования соглашения о сообщениях git commit для достижения всех предыдущих целей.
Наличие соглашения о коммитах обязательно для создания хорошего журнала изменений (с использованием или без использования gitchangelog
).
принятие сообщения
Ниже приведены предложения о том, что может быть полезно подумать о добавлении в ваши сообщения фиксации.
Возможно, вы захотите разделить ваши коммиты на большие разделы:
- по намерению (например: новое, исправление, изменение ...)
- по объектам (например: документ, упаковка, код ...)
- по аудитории (например: dev, tester, users ...)
Кроме того, вы можете пометить некоторые коммиты:
- как "второстепенные" коммиты, которые не должны отражаться в вашем списке изменений (косметические изменения, небольшая опечатка в комментариях ...)
- как «рефакторинг», если у вас нет каких-либо существенных изменений функций. Таким образом, это также не должно быть частью журнала изменений, отображаемого конечным пользователем, например, но может представлять интерес, если у вас есть журнал изменений разработчика.
- Вы также можете пометить «api», чтобы пометить изменения API или новые вещи API ...
- ...и т.д...
Попробуйте написать сообщение о коммите, ориентируясь на пользователей (функциональность) как можно чаще.
пример
Это стандарт, git log --oneline
чтобы показать, как эта информация может храниться:
* 5a39f73 fix: encoding issues with non-ascii chars.
* a60d77a new: pkg: added ``.travis.yml`` for automated tests.
* 57129ba new: much greater performance on big repository by issuing only one shell command for all the commits. (fixes #7)
* 6b4b267 chg: dev: refactored out the formatting characters from GIT.
* 197b069 new: dev: reverse ``natural`` order to get reverse chronological order by default. !refactor
* 6b891bc new: add utf-8 encoding declaration !minor
Итак, если вы заметили, я выбрал формат:
{new|chg|fix}: [{dev|pkg}:] COMMIT_MESSAGE [!{minor|refactor} ... ]
Чтобы увидеть фактический результат вывода, вы можете заглянуть в конец страницы PyPI gitchangelog
Чтобы увидеть полную документацию моего соглашения о коммитах, вы можете увидеть справочный файл gitchangelog.rc.reference
Как создать из этого изысканный журнал изменений
Тогда довольно легко сделать полный список изменений. Вы можете сделать свой собственный сценарий довольно быстро, или использовать gitchangelog
.
gitchangelog
сгенерирует полный журнал изменений (с поддержкой секционирования как New
, Fix
...) и будет разумно настраиваться в соответствии с вашими собственными соглашениями о фиксации. Он поддерживает любой тип вывод , благодаря шаблонированию через Mustache
, Mako templating
и имеет устаревшую систему по умолчанию письменного в сыре питона; все 3 современных движка имеют примеры того, как их использовать, и могут выводить журнал изменений, как тот, который отображается на странице PyPI в gitchangelog.
Я уверен , что вы знаете , что есть много других git log
для changelog
инструментов там также.
--graph
, который наглядно показывает, в каких ветвях находятся коммиты.