답변:
다음 상황을 상상해보십시오.
내부 개발자는 회사에 해를 끼치고 싶어합니다 (상사는 아내와 함께 자고 있기 때문에 임금이 낮다고 생각하기 때문에 이유는 중요하지 않습니다). 지 웁니다. 다음 커밋에서 놀랍게도 프로젝트의 모든 소스 코드가 손실됩니다 (그러나 백업을 수행하고 테스트 했습니까?)
또는 동일한 개발자가 저장소의 백업이 동일한 머신에 구성되어 있음을 알 수 있습니다. 그는 단위 테스트를 통해이 구성을 변경하여 백업에 다른 저장소가 포함되고 백업이 유지되는 1 개월 동안 대기합니다. 이제 모든 백업이 손상되었으므로 서버에서 소스 코드를 지우는 단위 테스트를 수행 할 수 있습니다.
또는 인턴은 소스 코드를 경쟁 업체에 판매하려고합니다. 액세스를 신중하게 구성하여 작업에 필요한 것만으로 제한했습니다. 동시에, 그는 단위 테스트를 통해 저장소 자체에 무제한 액세스 할 수 있으며 완전한 덤프를 수행 할 수 있습니다.
단위 테스트가 제한된 권한의 컨텍스트에서 실행되고 테스트에 필요한 디렉토리 및 파일 이외의 항목에 액세스 할 수없는 경우 CI 서버와 서버를 혼합하여 저장소를 유지하는 것은 실제로 위험합니다.
또 다른 문제는 버전 제어 서버가 빠르다는 것입니다. 동일한 시스템에 설치된 CI 서버는 커밋을 느리게 할 수 있습니다.
git에 대한 "알고있는"중앙 서버가 없기 때문에 다른 소스 코드 제어 시스템과 마찬가지로 나쁘지 않습니다.
외부의 git 서버에 대한 git 서버의 자동 syk가있는 경우 (테스트 된) 소규모 회사 의이 설정에 대해서는 걱정하지 않을 것입니다.
이상적으로 개발자가 오프셋 서버 git 서버로 변경 사항을 푸시 한 다음 CI 서버가 오프셋 서버에서 요금을 가져 오는 것을보고 싶습니다.이 방법으로 모든 체크인이 완료되면 오프 사이트 서버가 테스트됩니다.
개발자가 시간을 절약하기 위해 항상 온 사이트 서버에서 가져와도 문제가되지 않습니다.