2013-04-23 8 views
1

몇 가지 하위 프로젝트가 있고 하위 트리 또는 하위 모듈이없는 단일 리포지토리가 있습니다. 지금 프로젝트 C. C에서 고쳐야 새로운 기능에 버그가 프로젝트 A를 따라 작업의 기능에 대한 B.저장소의 일부에서 git bisect를 사용할 수 있습니까?

이, 내가 프로젝트 A. 프로젝트

어딘가의 최신 버전이 필요 B, 버그가 도입되었습니다. 그래서 내 질문은 :

내가 git bisect를 실행하고 A와 C를 최신 버전으로 유지하면서 프로젝트 B의 소스 트리에서만 작동하도록 말할 수 있습니까?

답변

3

아니요, git bisect가 지원하지 않습니다. 같은 프로젝트에 다른 프로젝트를 사용해서는 안됩니다. 힘내는 그것을 좋아하지 않거나지지하지 않는다. 그럼에도 불구하고 다음과 같이 할 수 있습니다.

git bisect에는 기본적으로 두 가지 모드가 있습니다. 일반 모드와 --no-checkout 모드입니다.

  1. 일반 : 실행 git bisect을하고 테스트하기 전에 모든 단계에서, 당신은 git checkout master -- sub/project/folder와 작업 트리에서 하위 프로젝트의 올바른 버전을 넣어 서로 다른 방법으로 목표를 달성하기 위해 둘 중 하나를 사용할 수 있습니다. 테스트를 마치면 양분을 처리 할 수 ​​있습니다.
  2. --no-checkout : 실행 git bisect start --no-checkout. 이제 BISECT_HEAD 참조 설정과 별도로 단계가 리포에 아무런 영향을 미치지 않습니다. 이 참조를 사용하여 projectB 만 확인하십시오 (git checkout BISECT_HEAD path/to/projectB). 이제 시험 해봐.

나는 --no-checkout 방법을 권하고 싶습니다. 그리고 3lectrologos의 팁은 효과가 없지만 여전히 유용합니다. ProjectB의 경로를 git bisect으로 지정하면 ProjectB의 변경 내용이 포함 된 수정에만 오류가 발생할 수 있다는 사실을 활용할 수 있습니다.

+0

감사합니다. 나는 이것을 함께 해킹 한 다음 스크립트와 함께 사용했다 : http://pastebin.com/Kqt7rr3N. 전체 명령은 이제 다음과 같습니다 : git bisect start --no-checkout -/path/to/projectB && git bisect && git bisect & git bisect run ./bisect_tree.sh (스크립트는 작업 할 저장소와 동일한 폴더에 있어야합니다. – Carl

1

나는 git bisect start -- path/to/projectB이 트릭을해야한다고 생각합니다.

참고 : 아래의 주석에서 지적했듯이 이것은 나머지 repo를 가장 최근의 상태로 유지하지는 않지만 지정된 경로를 변경 한 커밋 만 고려하면 양분합니다.

+1

nope - 여전히 전체 트리를 체크 아웃합니다. – Chronial

+0

예. @ 크로니칼이 옳다. 방금 테스트 레포에서 시도했습니다. – Carl

+0

예, 죄송합니다. 실제로 나머지를 최신 버전으로 유지하려고합니다. (나는 여전히 다른 시청자에게 유용 할 수 있기 때문에 대답을 삭제하지 않을 것입니다.) – 3lectrologos