저의 동료는 CI 서버가 빌드에 실패한 커밋을 되돌릴 것을 생각하고 있다고 말합니다. 그래서 HEAD
in master
은 항상 안정적입니다 (적어도 빌드를 통과하는 것처럼).
이것이 최선의 방법 master
입니까, 아니면 개발자가 고칠 때까지 깨지는 것보다 더 문제가 될 수 있습니까?
내 생각은 커밋을 되 돌리면 커밋 및 수정을 읽는 작업이 더 복잡해질 것입니다 (개발자는 되돌리기를 되 돌린 다음 수정을 커밋 git log
해야합니다. 고치다. 내가 master
안정 을 갖는 데에는 몇 가지 장점이 있지만 , 실패한 커밋을 되돌려 놓아도 설득력이 없다
편집 : 그것이 master
아니면 다른 개발 지점인지 는 중요하지 않지만 질문은 동일하게 유지됩니다. CI 시스템이 빌드에 실패한 커밋을 되돌려 야합니까?
다른 (길이) 편집 : 좋아, 우리는 git
이상한 방식으로 사용 하고 있습니다. 브랜치에 대한 커밋은 다른 개발자 및 변경 사항을 차단하고 브랜치를 다시 통합하고 가능한 충돌을 처리해야 할 때 시간을 추가하기 때문에 브랜치 개념은 실제 CI와 반대되는 것으로 생각합니다. 모든 사람 master
이이 충돌에 대한 커밋을 최소화하면 모든 커밋이 모든 테스트를 통과합니다.
물론, 이것은 새로운 기능을 도입 할 때 이전 버전과의 호환성을 손상 시키거나 기능 전환을하지 않도록보다 안정적이고 (또는 빌드를 중단) 프로그램을 더주의해서 강요합니다.
CI를 이런 식으로 또는 그런 식으로 수행 할 때 장단점이 있지만 문제의 범위를 벗어납니다 ( 관련 질문 참조 ). 원한다면 소규모 개발자 팀이 기능 브랜치에서 함께 작업합니다. 한 개발자가 해당 분기의 빌드를 중단시키는 무언가를 커밋하면 CI 시스템이 커밋을 되돌려 야합니까?
master
시작에 도달해서는 안됩니다 . 바로 개발 및 기능 분기가 사용되는 것입니다. 그런 다음 이러한 변경 사항은 통합 지점과 같은 방식으로 진행되어 여러 개발자의 모든 새로운 기능이 함께 작동하는지 테스트 할 수 있으며 테스트 된 경우에만 마스터로 들어갈 수 있습니다. 아니면 적어도 하나의 가능한 워크 플로입니다.