
여러 변경이 같은 CHANGELOG.md를 동시에 수정해도 changelog-merge는 Keep a Changelog 형식의 독립적인 항목을 자동으로 병합한다. devenv 연동 또는 일반 Git 설정으로 사용할 수 있으며, 같은 항목을 서로 다르게 고친 경우에는 충돌 표시를 남긴다.
changelog-merge는 릴리스, 범주, 항목을 이해해 독립적인 추가 사항을 함께 유지한다. 예를 들어 두 브랜치가 각각 S3 지원과 SSH 지원을 기록하면 두 항목을 모두 병합한다. 도구는 Keep a Changelog 형식의 변경 기록 파일을 대상으로 한다.
devenv를 사용하는 프로젝트는 devenv.nix에서 연동을 켠 뒤 환경에 들어가 평소처럼 병합하면 된다.
devenv.nix`{ changelog-merge.enable = true;}`
devenv shellgit merge ssh-support
변경 기록 파일 이름이 다르면 git.attributes에 경로를 추가한다. 다른 기여자도 같은 설정을 사용하도록 devenv 설정을 저장소에 커밋해야 한다. 자세한 설정은 연동 문서에서 확인할 수 있다.
devenv.nix`{ changelog-merge.enable = true; git.attributes = [ "docs/CHANGES.md merge=changelog-merge" ];}`
devenv나 Nix 없이 사용하려면 Rust 1.88 이상이 설치된 상태에서 도구를 설치하고 기존 변경 기록을 확인한다.
cargo install changelog-merge --version 0.1.0 --locked
changelog-merge check CHANGELOG.md
저장소의 .gitattributes에 병합 드라이버를 지정하고, 저장소 안에서 Git 설정 세 가지를 등록한다.
.gitattributes`CHANGELOG.md merge=changelog-merge`
git config --local merge.changelog-merge.name 'Keep a Changelog semantic merger'git config --local merge.changelog-merge.driver 'changelog-merge merge %O %A %B --marker-size %L --path %P'git config --local merge.changelog-merge.recursive binary
.gitattributes는 커밋해 공유할 수 있지만, Git 로컬 설정은 저장소를 복제한 각 기여자가 실행해야 한다. 설치 프로그램이 PATH에 있는지도 확인해야 한다. 설정 확인에는 다음 명령을 쓴다.
git check-attr merge -- CHANGELOG.mdgit config --get merge.changelog-merge.driver
같은 항목을 양쪽 브랜치가 양립할 수 없게 수정했거나 도구가 변경 사항을 확신 있게 대응시키지 못하면 충돌 표시를 남긴다. 따라서 독립적인 추가는 자동으로 합칠 수 있지만, 서로 경쟁하는 수정은 사람이 판단해야 한다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요