O que é o Repo e porque é que o Google o utiliza?

Quando queria obter o código fonte do Android, sabia que tinha de usar o "repo". Então, o que é o repo? Por que eles usam repo e não apenas git?, e há uma GUI para repo que me permite pausar/retomar a sincronização, porque cada vez que me desconectam ocasionalmente parece que o repo começa a sincronizar desde o início!

Author: Charlie Salts, 2010-03-16

5 answers

Repo e git - o que são, para que servem-é explicado em source.android.com

Para trabalhar com o Código Android, tu ... terá de usar tanto o Git como o Repo.

O Git é um sistema de controlo de versões de código aberto concebido para: lidar com projetos muito grandes que são distribuídos por vários repositorio. No contexto da Android, usamos Git para locais operações como a ramificação local, commits, diffs, and edits.

O Acordo de recompra é um ferramenta que construímos em cima do Git. O Repo ajuda-nos a gerir a muitos repositórios Git, uploads para o nosso controlo de revisão sistemas e autómatos de partes do sistema Fluxo de trabalho de Desenvolvimento Android. Acordos de recompra não era para substituir o Git, apenas para fazer é mais fácil trabalhar com o Git na contexto do Android. O comando de repo é um programa em Python executável que você pode colocar em qualquer lugar no seu caminho.

Não há GUI para Repo, tanto quanto posso dizer, mas há um pouco de orientação sobre o site acima para controlar o que Repo está fazendo a partir da linha de comando.
 20
Author: brabster, 2016-05-09 16:03:34

Como é mencionado na página web do android, {[[0]} não substitui git. É apenas uma ferramenta sobre git e ajuda-o a gerir múltiplos repositórios git.

Por exemplo, suponha que eu tenho um grande projeto que tem um monte de recursos e eu tenho várias equipes trabalhando em cada recurso e eu criei um repositório para cada recurso. Por exemplo, suponha que meus repositórios são wifi, telephony, power management, etc. Esta ação tem sentido quando suas características têm ciclos de vida diferentes. Por exemplo, se eu não Toque no recurso wifi na minha próxima versão e eu vou modificar todo o resto. Assim, neste cenário, meu projeto ou produto é distribuído em vários repositórios de git diferentes.

Então, para obter uma foto centralizada do meu projeto (um momento específico do meu projeto, por exemplo um marco), eu preciso obter a revisão (hash git ou tag) de cada repositório. Lembre-se que temos um repositório para cada recurso. Podia fazê-lo manualmente, mas podia ser muito doloroso. Então, com repo podes ter um. MANIFEST que liga a todas as revisões de cada acordo git (um para cada característica) e tem uma imagem específica de todo o meu projecto.

[[9] simplesmente, eu poderia dizer que é uma maneira de gerenciar múltiplos repositórios Git centralizados que são descentralizados.

Com repo você tem mais recursos, não só para checkout em um ponto específico. Para mais informações, consulte http://source.android.com/source/using-repo.html.

 16
Author: Matias Burni, 2017-09-01 16:58:00

Em relação ao ponto de pausa e reinício, enquanto numa janela de terminal a fazer uma sincronização de repo, poderá carregar em "ctrl + z" para pausar a sincronização de repo. Para reiniciar simplesmente escreva " fg " na mesma janela.

 3
Author: Jordan Craig, 2011-12-29 00:03:18

A repo sync tem várias opções úteis:

-f recupera das desconectações

-c apenas carrega o ramo que pediste

-j acelera a sincronização aumentando o número de cpus usadas pelo comando

 2
Author: user3913384, 2015-11-11 13:31:59

Vá para:

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

E você pode baixar o script repo. É um script em Python que usa o comando git para fazer a revisão do código-fonte distribuído.

Depois de ter executado repo sync, faça um ps -auwf para ver os processos:

Para a minha eu vi:
\_ 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

SIM, repo sync quebra frequentemente. Mas é robusto, basta reiniciar o comando e ele vai retomar a sincronização novamente-aqueles que foram atualizados não será re-aplicado, por isso vai saltar sobre eles e continuar com o resto.

 2
Author: Peter Teoh, 2017-08-22 10:52:51