How to generate CHANGELOG from git log?

How to generate CHANGELOG from git log?

image

In dev team, we are using commitlint as git commiting convention. So that, this blog will introduce git-chglog to generate CHANGELOG automatically.

Installation

Following this link, you can setup it for any environment (include Windows)

Setup for new repo

Following steps below:

Run this command:

git-chglog --init

After that, git-chglog will ask you some questions to config.

? What is the URL of your repository?
? What is your favorite style?
❯ github
  gitlab
  bitbucket
  none
? Choose the format of your favorite commit message
❯ <type>(<scope>): <subject> -- feat(core): Add new feature
  <type>: <subject>          -- feat: Add new feature
  <<type> subject>           -- Add new feature
  <subject>                  -- Add new feature (Not detect `type` field)
? What is your favorite template style?
  keep-a-changelog -- https://github.com/git-chglog/example-type-scope-subject/blob/master/CHANGELOG.kac.md
❯ standard         -- https://github.com/git-chglog/example-type-scope-subject/blob/master/CHANGELOG.standard.md
  cool             -- https://github.com/git-chglog/example-type-scope-subject/blob/master/CHANGELOG.cool.md
? Do you include Merge Commit in CHANGELOG? (Y/n)
? Do you include Revert Commit in CHANGELOG?
? In which directory do you output configuration files and templates? (.chglog)
   Configuration file and template generation completed!
  ✔ .chglog/config.yml
  ✔ .chglog/CHANGELOG.tpl.md

Check in your repo the .chglog/ folder. If it existed, wow you setup for your repo successfully.

Generate CHANGELOG.md

git-chglog --output CHANGELOG.md
⌚️  Generating changelog ...
✨  Generate of "CHANGELOG.md" is completed! (579.082591ms)

After generating, below is the file CHANGELOG.md result:

<a name="3.7.0"></a>
## [3.7.0](https://git.jkhas.com/jkhas/jkhas-react/jkhas-frontend-react/compare/3.6.2...3.7.0) (2019-05-06)

### Chore

* fix styling
* Request Fulfillment All
* remove paylist cost
* remove notification
* remove prepaid
* remove Seller Request Quotation List
* remove intercom

### Fix

* **orderList:** turn off edit shipping address


<a name="3.6.2"></a>
## [3.6.2](https://git.jkhas.com/jkhas/jkhas-react/jkhas-frontend-react/compare/3.6.1...3.6.2) (2019-04-27)

### Chore

* remove Jetfri from Jkhas
2 Likes

Cái này mình đã áp dụng vào project nhiều người làm cùng nhau chưa ? có điểm mạnh và điểm yếu gì không bạn @Darius nhỉ?

Em đã từng áp dụng cho project có khoảng 10+ người rồi, hiện cũng đang áp dụng ở một project của Assisty. Về điểm mạnh và yếu thì em thấy như sau:

Điểm mạnh:

  • Mọi người đều sẽ có một format chung trong việc commit message. Như vậy việc review cũng sẽ biết sơ qua người khác làm gì, có quan trọng hay không thông qua ngày phần đầu của message như chore, feat, … Ngoài ra cũng sẽ dễ tìm lại nếu như đoạn code có vấn đề, do mọi người sẽ đầu tư vào việc viết nội dung message commit hơn, thay vì có thể chỉ là fix bug.
  • Nếu mình dùng semantic để đánh version thì đây cũng là một điểm mạnh để đảm bảo không bị đánh sai version. Thông thường theo semantic thì a.b.c, vậy nếu có feat trong bất cứ commit nào thì mình sẽ tăng b, còn không thì chỉ là bản vá thì mình tăng c.

Điểm yếu:

  • Phải thay đổi thói quen của cả team, ban đầu thì sẽ tương đối khó chịu và phải mất thời giản review cả commit message cho nhau thay vì chỉ review mỗi code.
  • Nếu team commit quá lẻ tẻ và nhỏ nhặt thì việc tạo Changelog thông qua cách này sẽ như đống rác :smiley:
1 Like

Lân ra rủ rê vô team dev ops học hành k0 nè @walter @oliver