[Git] CHANGELOG.md Generate

지난 포스트에서 AngularJS Commit Convention에 대해 정리했습니다.

이번에는 정리한 내용 중에서 CHANGELOG.md를 직접 생성해보려 합니다.

 

 📌 CHANGELOG.md

생성하기에 앞서 CHANGELOG.md가 뭔지 설명해 보겠습니다.

CHANGELOG.md는 Release 시점에 Commit Message를 <type> 및 <scope> 별로 정리해 놓은

Markdown 형식의 파일입니다.

 

따라서, 프로젝트의 feature, bug fix, refactor 등으로부터 변경된 변화를 한눈에 파악할 수 있습니다.

 

 📌 간단한 생성 방법

이전 글에서도 소개해드렸는데 Git 명령어를 통해 생성하는 방법입니다.

git log --pretty="- %s" > CHANGELOG.md

위와 같이 명령어를 입력 후 실행하면 --pretty 설정에 맞춰 CHANGELOG.md가 생성됩니다.

%s 는 요약이라는 의미입니다.

아래 이미지는 위 명령어로 생성한 CHANGELOG입니다.

 

pretty 확장 옵션

아래는 pretty의 확장 옵션 종류 및 설명입니다.

  • %H: 커밋 해시
  • %h: 축약된 커밋 해시
  • %T: 트리 해쉬
  • %t: 축약된 트리 해시
  • %P: 부모 해시들
  • %p: 축약된 부모 해시들
  • %an: 저자 이름
  • %aN: 저자 이름 (존칭)
  • %ae: 저자 이메일
  • %aE: 저자 이메일 (존칭)
  • %al: 저자 이메일 local-part (the part before the @ sign)
  • %aL: 저자 local-part (see %al) respecting .mailmap, see git-shortlog[1] or git-blame[1])
  • %ad: 저자 날짜 (format respects --date= option)
  • %aD: 저자 날짜, RFC2822 style
  • %ar: 저자 날짜, 상대적인
  • %at: 저자 날짜, UNIX timestamp
  • %ai: 저자 날짜, ISO 8601-like format
  • %aI: 저자 날짜, strict ISO 8601 format
  • %as: 저자 날짜, short format (YYYY-MM-DD)
  • %ah: 저자 날짜, human style (like the --date=human option of git-rev-list[1])
  • %cn: 커미터 이름
  • %cN: 커미터 이름 (존칭)
  • %ce: 커미터 이메일
  • %cE: 커미터 이메일 (존칭)
  • %cl: 커미터 이메일 local-part (the part before the @ sign)
  • %cL: 커미터 local-part (see %cl) 존칭
  • %cd: 커미터 날짜 (format respects --date= option)
  • %cD: 커미터 날짜, RFC2822 style
  • %cr: 커미터 날짜, relative
  • %ct: 커미터 날짜, UNIX timestamp
  • %ci: 커미터 날짜, ISO 8601-like format
  • %cI: 커미터 날짜, strict ISO 8601 format
  • %cs: 커미터 날짜, short format (YYYY-MM-DD)
  • %ch: 커미터 날짜, human style
  • %d: 참조 이름
  • %D: " (", ")"처럼 래핑 없는 참조 이름
  • %S: 커맨드 라인상에서 제공하는 참조이름 (= git log --source), git log에서만 동작
  • %e: 인코딩
  • %s: 주제
  • %f: 파일 이름에 적합한 정리된 제목 줄
  • %b: 바디
  • %B: raw body (unwrapped subject and body)
  • %N: commit notes
  • %GG: 서명된 커밋에 대한 GPG의 raw verification message
  • %G?: 좋은 (유효한) 서명을 위해 "G"표시
  • %GS: 서명된 커밋의 서명자 이름 표시
  • %GK: 서명된 커밋에 서명하는 데 사용되는 키 표시
  • %GF: show the fingerprint of the key used to sign a signed commit
  • %GP: 서명된 커밋에 서명하는 데 사용된 키의 지문 표시
  • %GT: 서명된 커밋에 서명하는 데 사용되는 키의 신뢰 수준을 표시
  • %gD: reflog selector
  • %gd: shortened reflog selector; %gD와 동일, 하지만 참조 이름 부분은 사람의 가독성을 위해 단축되었습니다. (그래서 refs/heads/master는 master가 됨)
  • %gn: 신분 이름을 reflog
  • %gN: 신분 이름을 reflog (존칭)
  • %ge: 신원 이메일 거부
  • %gE: 신원 이메일 거부 (존칭)
  • %gs: 주제를 reflog

 

 📌 라이브러리를 활용한 생성 방법

저는 generate-changelog라는 라이브러리를 통해 CHANGELOG.md를 생성해보려고 합니다.

 

1. Node.js 설치

 

Node.js — Download Node.js®

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

2. generate-changelog 설치

# 글로벌
npm i generate-changelog -g

# 특정 프로젝트에서만
npm i generate-changelog -D

저는 다른 프로젝트에서도 사용할 수 있도록 Global로 설치했습니다.

 

3. package.json 생성

해당 라이브러리는 Node.js 기반이기 때문에 package.json이 없으면 정상적으로 실행되지 않습니다.

때문에 Project Root에 package.json을 생성해 주세요.

Intellij IEDA의 경우 New > package.json을 선택하면 생성할 수 있습니다.

 

4. 생성 명령어 실행

changelog generate

위 명령어를 실행하면 CHANGELOG.md가 생성된 것을 확인할 수 있습니다.