Google의 저장소는 무엇입니까?


62

Google에 모든 코드를 저장할 수있는 거대한 개인 (내부) 저장소가 있으며 직원이 코드를 액세스 할 수 있으므로 개발 중에 바퀴를 재발 명할 필요가 없습니다. 그것에 대해 더 알고 싶습니다!

여기에 좀 더 자세하게 설명 할 수있는 사람이 있습니까? 아니면 조금 더 알고 있습니까? 나는 그것이 어떻게 구성되어 있고 직원이 거대한 코드베이스에서 무언가를 쉽게 찾을 수있게하는 방법에 대해 주로 알고 싶습니다.


2
"모노 레포"를 사용하는 것으로 알려진 다른 회사는 Facebook과 Twitter입니다. 그것을 경험 한 사람들로부터 직접 듣고 싶습니다.
Dennis

답변:


37

여기가 어떻게 구성되어 있는지 설명하는 영상입니다 : 구글의 속도와 규모로 개발

Ashish Kumar는 Google이 2000 개가 넘는 모든 프로젝트의 소스 코드를 수억 개의 코드 라인이 포함 된 단일 코드 트렁크에 보관하고 5,000 명 이상의 개발자가 동일한 저장소에 액세스하는 방법을 제시합니다.


8
다른 답변에 더 많은 찬성이 있음을 알고 있지만이 비디오에는 다른 답변의 모든 데이터가 있고 그다음에는 일부가 있습니다. 당신 (독자)이 요약을 원한다면 Chris의 답변을 읽으십시오. 그렇지 않으면이 비디오를 볼 시간이 있다면!
Ricket

63

대부분의 Google은 Perforce 설정을 사용합니다 . 그러나 git과 같은 다른 도구를 사용하기위한 내부 도구가 있습니다. (이것이 어떻게 달성되는지 모르겠다.) 그러나 안드로이드크롬 과 같은 대규모 오픈 소스 프로젝트 에는 별도의 저장소가있다.

Perforce 위에 구축 된 수많은 훌륭한 내부 앱입니다. 예를 들어, 빌드, 테스트 및 코드 검토를위한 도구가 있습니다.

이러한 '마법'과 테스트 문화로 인해 Google은 실제로 분기를 사용하지 않습니다. 모두 '메인'에 체크인합니다. 모든 프로젝트에 대해 전문 지식없이 소스를보고 빌드하고 단위 테스트를 실행할 수 있습니다. 이것은 크다. 내가 Microsoft에있을 때 각 제품은 테스트를 구축하고 실행하기 위해 다른 동물의 희생이 필요했습니다.

또한 Google은 사용하는 주요 언어에 대한 전사적 스타일 가이드 를 제공합니다. 다른 팀의 소스 코드에 액세스 할 수 있다면 서식이 모두 문제가 될 수 있습니다!

검색에 대해서는 Google 코드 검색에 익숙 할 것 입니다. 코드를 훨씬 쉽게 탐색 할 수 있는 다른 일급 비밀 코드 검색 도구 와 함께 특별한 버전이 있습니다.

요컨대 Google은 도구의 가치와 개발자 생산성을 이해하는 매우 엔지니어링 중심의 문화를 가지고 있습니다.


1
나는 몇 년 동안 당신이 참조한 스타일 가이드를 사용해 왔습니다. 훌륭합니다! 그러나 구글이 만든 오픈 소스 프로젝트는 그렇지 않습니까? 내부 프로젝트에 대한 다른 가이드가 있습니까?
Dennis

1
"최고 비밀"코드 검색 도구는 github.com/google/kythe 에서 오픈 소스로 만들어지고 있습니다 . 하위 세트이며 UI가 없습니다 (더 이상 예제는 더 이상 유지되지 않습니다). 목표는 Kythe를 내부 도구만큼 완벽하게 만드는 것입니다.
mmlac

3

엄청납니다 :

(2015 년 1 월 현재)

  • 총 파일 수 : 10 억
  • 소스 파일 수 : 9 백만
  • 코드 라인 : 20 억
  • 역사의 깊이 : 3 천 5 백만 커밋
  • 내용의 크기 : 86 테라 바이트
  • 근무 일당 약정 : 45 천

Google 인프라에 의존하는 Piper라는 내부 도구를 사용합니다.

출처 : Google이 단일 리포지토리에 수십억 줄의 코드를 저장하는 이유


@CodesInChaos이 정보는 3:22의 슬라이드에 있는 비디오에서 가져옵니다 . 슬라이드에는 숫자 계산 방법에 대한 자세한 설명이 포함되어 있습니다.
Benjamin Crouzier

잠깐, 파일 당 평균 2 줄을 의미하지 않습니까?
Hashim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.