2016-09-10 6 views
6

checks the commit messages of pull requests 인 Travis-CI 스크립트가 있습니다. GitHub는 커밋 범위를 지정하고 git log --format=online "<lastref>..<firstref>"을 사용하여 확인할 SHA 목록을 작성합니다.Travis git ref가 내 풀 요청을 때때로 일치시키지 않는 이유는 무엇입니까?

이 대부분의 시간을 잘 작동하지만, 가끔 이런 일이 발생 :

pull request (병합 지점 2.X에 2.2 여러 커밋) 트래비스에서이 명령 산출 : 로컬

git log --format=oneline b5d12909dacd80d21c4e4f4ca6d5683d6e547f9e..b349be9418371c1f694dabeccbce0e946fde3a0a 

을, 이 예상대로 작동합니다. 나는 PR에서 커밋을 얻는다. Travis에서는 b5d129 커밋이 나타나지 않으므로 every commit back to the beginning of the project을 덤프합니다.

여기 무슨 일 이니?

업데이트 : 이번에는 Travis의 기본 git clone depth가 50이고 이번에는 2.x에 대한 새로운 커밋을 포함하지 않은 또 다른 병합 PR을 만들었습니다. 어쨌든이 새로운 PR worked correctly에 대한 빌드. 나는 아직도 곤란하다. 클론 깊이 은 필요한 커밋이없는 경우 체크 아웃에 실패하므로이 효과가 없어야합니다.

답변

0

필요한 커밋이없는 경우 체크 아웃에 실패하므로 복제 깊이가 영향을 미치지 않습니다. 문제가 클론 깊이 인 경우

, 당신은 최신이 전에 온 모든 커밋에 의존하지 않습니다 를 저지 것을 깨닫게해야합니다. 각 커밋은 저장소의 완벽한 "스냅 샷"이며 독립적으로 작업 할 수 있습니다. 깊이 1로 복제 한 경우에도 커밋이 지점의 HEAD가 가리키는 커밋 인 한, 커밋은 체크 아웃/빌드/배포/기타에 필요한 모든 정보를 갖습니다. GitHub에서 볼 수있는 작은 델타 또는 git show은 이전에 온 커밋 (커밋 상위)과 커밋간에 차이가 있습니다.

이러한 끌어 오기 요청에 커밋 수가 50 회를 초과하면 내가 보는 동작이 다소 예상됩니다. Travis가 클론 깊이를 50 이상으로 설정하게 할 지 확신하지 못하지만, 문제를 해결할 수있는 느낌이 들었습니다.