현재 프로젝트가 개발 중 어느 날 엔지니어에 의해 버그가 발생하여 시스템에 동시에 액세스할 수 없으며 데이터베이스 연결이 직접 잠겼습니다. 이 프로젝트는 Java 플랫폼을 사용하고 svn에서 버전 관리를 수행합니다. 버전을 하나씩 코드 검토하는 것이 싫어서 가장 폭력적인 반 버전 검색 방법을 생각했습니다. 물론 svn에서 한다는 것은 이렇게 큰 프로젝트의 경우 버전을 하나씩 확인한다는 의미이기도 합니다. 시간이 많이 걸립니다. 현재로서는 git-bisect가 유일한 선택입니다.
먼저 svn 라이브러리를 git 라이브러리로 내보냅니다.
$ git svn clone -s http://svn.xxx.com/svn/xxxxx
그런 다음 git bisect를 시작합니다.
$ git bisect start
현재 버전을 잘못된 것으로 표시:
$ git bisect bad
이전 버전을 찾아 태그를 만듭니다(tag20090106). 테스트가 올바른 것으로 표시합니다.
$ git bisect good tag20090106
이때 git은 중간 버전이 선택되었음을 알려줍니다. 그런 다음 컴파일 및 테스트를 시작합니다.
$ git bisect bad
Git은 절반을 사용합니다. 중간 버전을 찾고, 컴파일을 시작하고, 테스트를 통과하면 다음을 실행합니다:
$ git bisect good
Git은 최종적으로 오류가 발생한 버전을 찾을 때까지 계속해서 개정판을 찾습니다. 시간이 지나면 원인을 분석하고 문제를 다시 찾아냅니다. PK가 완료된 후 돌아와서 하루를 기다리세요.
$ git bisect Reset
git은 현재 HEAD로 돌아갑니다.