2010-03-15 3 views
27

Android 소스 코드를 가져 오려면 "repo"를 사용해야한다는 것을 알고있었습니다. 그래서 레포 란 무엇입니까? GIT를 사용하지 않고 repo를 사용하는 이유는 무엇입니까? 그리고 Repo가 처음부터 동기화되기 시작하는 경우가 종종 발생하기 때문에 동기화를 일시 중지/다시 시작할 수있는 repo 용 GUI가 있습니다!Repo 란 무엇이며 Google에서 사용하는 이유는 무엇입니까?

답변

19

은 리포와 자식은 - 그들이 무엇인지, 그들이 무엇 - 안드로이드 코드를 해결하려면 source.android.com

에 설명되어 있습니다, 당신은 힘내 및 환매 약정을 모두 사용해야합니다.

힘내는 리포지토리에 분산되어있는 이라는 매우 큰 프로젝트를 으로 처리하도록 설계된 오픈 소스 버전 제어 시스템입니다. Android의 컨텍스트에서 로컬 분기, 커밋, diff 및 편집과 같은 로컬 작업에 Git을 사용합니다.

Repo는 Git 위에 구축 한 도구입니다. Repo는 많은 Git 저장소를 관리하는 데 도움이되며 시스템이 수정 시스템 시스템에 업로드되고 Android 개발 워크 플로우의 일부를 자동화합니다. Repo는 이며 Git을 대체하지 않으므로 을 Android의 문맥에서 Git으로 더 쉽게 작업 할 수 있습니다. repo 명령 은 실행 가능한 파이썬 스크립트로 경로에 넣을 수 있습니다.

내가 말할 수있는 한 Repo에 대한 GUI는 없지만 위의 사이트에서 Repo가 명령 행에서 수행하는 작업을 제어하기위한 지침이 상당히 있습니다.

+2

http://source.android.com/source/developing.html : corrext이 게시 날짜의 URL – RichieHH

+3

Hands down Repo는 제가 지금까지 작업 한 최악의 도구/스크립트 중 하나입니다. .. – Emad

+0

@eibrahim 당신이 자세히 설명해 주시겠습니까? (나는 내 ​​자신의 프로젝트를 위해 Repo를 사용하는데 관심이있다. 피드백을 듣고 싶다 ...) – Zvika

2

로 이동 :

http://source.android.com/source/git-repo.html

하고 repo 스크립트를 다운로드 할 수 있습니다. git 명령을 사용하여 분산 소스 코드 개정을 수행하는 Python 스크립트입니다. 당신이 repo sync을 실행 한 후

, 프로세스를 볼 수있는 ps -auwf을 수행 광산

내가 본 : 자주

\_ python -E /sde3/root/download/android/android/.repo/repo/main.py --rep 
     \_ git fetch korg 
      \_ git fetch korg 
      \_ git index-pack --stdin -v --fix-thin --keep=fetch-pack 5227 on 

예, repo sync 휴식. 그러나 강력합니다. 명령을 다시 시작하면 동기화가 다시 시작됩니다. 업데이트 된 항목은 다시 적용되지 않으므로 다시 건너 뛰고 나머지는 계속 진행합니다.

+0

이것은 bash가 아닌 Python으로 작성되었습니다. 당신의 "ps"도 그걸 보여줍니다. – claus

3

일시 중지 및 재시작 지점에 대해서는 repo sync를 수행하는 터미널 창에서 "ctrl + z"를 눌러 repo sync를 일시 중지 할 수 있습니다. 다시 시작하려면 간단히 "fg"를 같은 창에 입력하십시오.

14

안드로이드 웹 페이지에서 언급했듯이 repogit을 대체하지 않습니다. git 이상의 도구 일뿐 아니라 여러 자식 리포지토리를 관리하는 데 도움이됩니다.

예를 들어, 많은 기능을 가진 커다란 프로젝트가 있고 각 팀에서 각 기능을 작업하고 각 기능에 대해 하나의 저장소를 만들었다 고 가정합니다. 예를 들어 내 저장소가 wifi, telephony, power management 등인 경우이 작업은 기능의 수명주기가 다를 때 유용합니다. 예를 들어 다음 릴리스에서 wifi 기능을 터치하지 않겠지 만 나머지는 모두 수정합니다. 그래서이 시나리오에서 프로젝트 나 제품은 여러 다른 git 저장소에 배포됩니다.

그래서 프로젝트의 중앙 집중화 된 사진 (예 : 획기적인 프로젝트)을 얻으려면 각 저장소의 리비전 (git 해시 또는 태그)을 가져와야합니다. 우리는 각 기능에 대해 하나의 저장소가 있음을 기억하십시오. 수동으로 할 수는 있지만 매우 고통 스러울 수 있습니다. 따라서 repo를 사용하면 각 자식 리포의 모든 버전 (각 기능마다 하나씩)에 링크 된 하나의 MANIFEST을 가질 수 있으며 내 전체 프로젝트의 특정 그림을 가질 수 있습니다.

간단히 말해서 분산화 된 중앙 집중식 복수형 저장소를 관리하는 방법이라고 할 수 있습니다.

리포를 사용하면 특정 시점에 체크 아웃하는 것 외에도 더 많은 기능을 사용할 수 있습니다. 자세한 내용은 http://source.android.com/source/using-repo.html을 참조하십시오.

1

REPO 동기는 여러 가지 유용한 옵션이 있습니다

-f는>이 증가하여 동기화 속도는

-j < #CPUS 요구 분기를 업로드 -c 끊어

에서 복구 명령에 사용 된 CPU의 수

관련 문제