판정 명령의 계약

git bisect run에 전달한 명령은 정상이면 0, 회귀면 1~`127125가 아닌 값을 반환합니다. 현재 커밋을 검사할 수 없을 때만 125`를 사용합니다.

스크립트와 실행

#!/bin/sh
npm ci || exit 125
npm test -- --runInBand
git bisect start
git bisect bad HEAD
git bisect good v1.4.0
git bisect run ../verify-regression.sh
git bisect reset

스크립트를 저장소 밖에 두면 후보 커밋을 이동할 때 판정 코드가 함께 바뀌는 일을 피할 수 있습니다.

흔들리는 테스트 다루기

성능 회귀는 warm-up과 반복 측정을 포함하고 정상 구간의 noise보다 큰 기준을 사용합니다. 외부 API 상태로 판정하거나 test 실패와 build 불가를 같은 종료 코드로 처리하지 않으며, 생성 파일과 dependency cache가 다음 후보에 남지 않게 합니다.

공식 문서