면책 조항 : 나는 gitchangelog 의 저자이며 다음에서 이야기 할 것입니다.
TL; DR : gitchangelog 자체의 변경 로그 또는 이전을 생성 한 ASCII 출력 을 점검 할 수 있습니다 .
git history에서 변경 로그를 생성하려면 다음을 고려해야합니다.
- 출력 형식 . (순수한 사용자 정의 ASCII, 데비안 변경 로그 유형, Markdow, ReST ...)
- 일부 커밋 필터링 (아마도 변경 내용에 오타 또는 외형 변경 사항이 모두 표시되는 것을 원하지 않습니다)
- 일부는 텍스트 논쟁을 커밋 변경 로그에 포함되기 전에. (첫 글자 대문자 또는 마지막 점이있는 메시지를 정규화하지만 요약에서 일부 특수 마크 업을 제거 할 수 있음)
- 당신입니다 자식 역사는 호환 ?. 대부분의 도구에서 병합, 태그 지정이 항상 그렇게 쉽게 지원되는 것은 아닙니다. 당신의 역사를 어떻게 관리 하느냐에 달려 있습니다.
선택적으로 일부 분류 (새로운 것, 변경 사항, 버그 수정)를 원할 수 있습니다 ...
이 모든 것을 염두에두고 gitchangelog를 만들고 사용 했습니다 . 이전 목표를 모두 달성하기 위해 자식 커밋 메시지 규칙 을 활용 하기위한 것입니다.
커밋 메시지 규칙이 있어야 멋진 변경 로그를 만들 수 있습니다 (사용 여부에 관계없이 gitchangelog
).
메시지 컨벤션 커밋
다음은 커밋 메시지 추가에 대해 생각할 때 유용한 제안입니다.
대략 커밋을 큰 섹션으로 분리하고 싶을 수도 있습니다.
- 의도적으로 (예 : 신규, 수정, 변경 ...)
- 개체 별 (예 : 문서, 패키징, 코드 ...)
- 잠재 고객 별 (예 : 개발자, 테스터, 사용자 ...)
또한 일부 커밋에 태그를 지정할 수 있습니다.
- "사소한"커밋으로 변경 로그에 출력해서는 안됩니다 (화장품 변경, 의견의 작은 오타 ...)
- 중요한 기능 변경 사항이없는 경우 '리 팩터'로 따라서 이것은 예를 들어 최종 사용자에게 표시되는 변경 로그의 일부가 아니어야하지만 개발자 변경 로그가있는 경우 관심이있을 수 있습니다.
- 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} ... ]
실제 출력 결과를 보려면 gitchangelog 의 PyPI 페이지 끝을 볼 수 있습니다
커밋 메시지 규칙에 대한 전체 문서를 보려면 참조 파일 gitchangelog.rc.reference를 볼 수 있습니다.
이것으로부터 절묘한 변경 로그를 생성하는 방법
그런 다음 완전한 변경 로그를 작성하는 것은 매우 쉽습니다. 직접 스크립트를 만들거나을 사용할 수 있습니다 gitchangelog
.
gitchangelog
전체 변경 로그를 생성하고 (섹션 지원 New
, Fix
...) 자신의 커밋 규칙으로 합리적으로 구성 할 수 있습니다. Mustache
,를 통한 템플릿 화 덕분에 모든 유형의 출력을 지원하며 Mako templating
원시 파이썬으로 작성된 기본 레거시 엔진이 있습니다. 현재 3 개의 모든 엔진에는 사용 방법에 대한 예제가 있으며 gitchangelog의 PyPI 페이지에 표시된 것과 같이 변경 로그를 출력 할 수 있습니다.
나는 거기 git log
에 changelog
도구 가 많이 있다는 것을 알고 있다고 확신합니다 .
--graph
커밋이 어느 분기에 있는지 시각적으로 보여줍니다.