v0.77.5
git-ctx v0.77.5
이번 릴리스는 캐럿(^)·틸드(~) 범위가 이미 답을 정해 놓은 권고를 "판정 불가"로 돌려주던 문제를 고칩니다. 범위가 하한만 있는 것처럼 읽혔기 때문에, npm·Cargo·PEP 440 매니페스트가 실제로 가장 많이 쓰는 두 표기가 통째로 결정에서 빠져 있었습니다. 기본 서비스 포트는 계속 4747이며 기존 API·MCP 호환성을 유지합니다.
권고가 올 때마다 운영자가 저장소를 하나씩 손으로 확인하고 있었다면, 이 릴리스가 그 목록을 줄입니다. 저장된 내용이 아니라 판정 방식이 바뀐 것이라 재색인 없이 답이 달라집니다.
수정
~2.14.0은 2.17.1에 닿을 수 없는데도 "판정 불가"였습니다
- 캐럿과 틸드는 하한과 상한을 함께 말합니다. 그런데 판정은 하한만 읽고 둘 다 열린 범위로 취급했습니다.
- 그래서
~2.14.0(2.15.0 미만)을 선언한 저장소는 수정 버전이 2.17.1인 권고에 대해,^1.2.3(2.0.0 미만)을 선언한 저장소는 수정 버전이 2.0.0인 권고에 대해 **"매니페스트만으로는 결정할 수 없다"**고 답했습니다. 어느 범위도 수정본을 담은 릴리스에 도달할 수 없는데도 그랬습니다. - 이제 선언은 도달할 수 없는 첫 릴리스를 함께 돌려줍니다. 하한이 수정 버전 아래이고 그 상한이 수정 버전 이하이면 영향입니다.
상한을 읽는 규칙
- 캐럿은 맨 왼쪽 0이 아닌 자리를 올립니다 —
^1.2.3→2.0.0,^0.2.3→0.3.0,^0.0.3→0.0.4. - 틸드는 major·minor를 유지합니다 —
~1.2.3·~=1.2.3→1.3.0. - 자릿수가 모자라 생태계마다 해석이 갈리는
~1.2·^0.2는 넓은 쪽을 택합니다(npm은~1.2를 1.3.0에서, PEP 440은~=1.2를 2.0.0에서 멈춥니다). 상한은 "영향" 판정만 만들 수 있기 때문에, 너무 좁게 잡으면 없는 영향을 지어냅니다.
열린 하한은 종전 그대로입니다
>=2.14.1처럼 상한이 없는 선언은 수정 버전 아래에서 여전히 아무것도 결정하지 않습니다. 그런 범위는 수정본을 담은 릴리스에 도달할 수 있고, 매니페스트는 어느 쪽인지 말하지 않습니다.
검증
- 새 표
TestBoundedRangeBelowTheFixIsAffected— 상한이 결정하는 영향 10건, 상한이 수정 버전을 넘어 여전히 판정 불가 6건, 열린 하한이 안전으로 남는 4건 - 기존
TestRangeBelowTheFixIsUndecided의 틸드 사례는 이제 실제로 결정 가능하므로, 수정 버전이 범위 안에 드는 사례(~2.14.0대 2.14.5)로 교체 gofmt -l,go vet ./..., FTS5 빌드·전체 테스트 통과, manifest·search는-race도 통과- FTS5 빌드·태그 없는 빌드·PostgreSQL 3가지 조합 전체 단위·통합·race 테스트, 빌드 모드 교차 시험, 릴리스 데이터베이스 업그레이드 시험, 콘솔 시험
업그레이드 참고
- 마이그레이션은 필요하지 않습니다.
- 재색인은 필요하지 않습니다. 인벤토리에 저장된 선언은 그대로이고, 그 선언을 읽는 방식만 달라집니다.
- 이전에 "판정 불가"로 돌아오던 저장소 일부가 이제 **"영향"**으로 돌아옵니다. 그것이 이번 수정의 목적입니다.
오프라인 Docker 이미지
릴리스 자산은 아키텍처 접미사가 없는 다음 두 파일입니다.
git-ctx-v0.77.5.tar.gzgit-ctx-v0.77.5.tar.gz.sha256
sha256sum -c git-ctx-v0.77.5.tar.gz.sha256
gzip -dc git-ctx-v0.77.5.tar.gz | docker load
docker image inspect git-ctx:v0.77.5 --format '{{.Os}}/{{.Architecture}} {{.Config.User}}'기대 결과는 linux/amd64 10001입니다. 아카이브에는 git-ctx:v0.77.5과 git-ctx:0.77.5 태그가 포함됩니다.
전체 변경 내역: v0.77.4...v0.77.5