프로젝트 소개
go-whatchanged는 Go 모듈의 두 버전 사이에서 공개 API가 무엇이 바뀌었는지 검사하는 명령줄 도구입니다. 베이스와 헤드 양쪽을 비교하며, 각 측은 작업 트리, 로컬 체크아웃, git 리비전, 브랜치, 태그 또는 github.com/x/m@v1.2.0과 같은 게시된 모듈 버전일 수 있습니다. 기본 동작 경로는 읽기 전용으로 설계되어 있습니다. 임시 디렉터리, git 클론, 워크트리, 저장소 쓰기를 피하고, 원격 패키지가 아직 캐시되지 않은 경우에만 go 명령을 사용합니다. --fsreadonly 플래그는 모듈 캐시 다운로드 경로까지 비활성화하여 완전한 비쓰기 동작을 보장합니다.
이 도구는 패키지별로 추가, 제거, 변경된 내보낸 심볼을 보고하고, 호환되는 변경과 호환되지 않는 변경을 요약합니다. 또한 MAJOR, MINOR, PATCH와 같이 필요한 시맨틱 버전 범프를 제안하며, --exit-fail=major, minor, patch를 통해 종료 코드로 호환성 게이트를 강제할 수 있습니다. 필터를 사용하면 호환성을 깨는 변경, 공개 패키지, 내부 패키지, main 패키지, import 변경, go.mod 변경 또는 테스트 변경으로 출력 범위를 좁힐 수 있습니다. 대규모 모듈과 모노레포를 위해 패키지 포함 및 제외 패턴도 지원합니다.
워크플로 통합을 위해 go-whatchanged는 텍스트, Markdown, JSON 출력 형식을 지원합니다. Markdown 출력은 풀 리퀘스트 댓글과 작업 요약을 위한 것이고, JSON 출력은 스크립트와 봇을 위한 것입니다. API 차이를 풀 리퀘스트 댓글과 작업 요약으로 게시하는 GitHub Action이 제공됩니다. README에는 실행당 하나의 플랫폼만 지원, go.work/vendor/GOPATH 미지원, go 1.16 이하를 선언한 모듈 비교 불가, 의존성이 아닌 메인 모듈만 비교 등의 제한 사항이 문서화되어 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.