Referência do comando do repo

O repo complementa o Git simplificando o trabalho em vários repositórios. Consulte Ferramentas de controle de origem para saber mais sobre a relação entre o Repo e o Git. Para mais detalhes sobre o Repo, consulte o README do Repo (link em inglês).

O uso do Repo assume o seguinte formato:

repo command options

Os elementos opcionais são mostrados entre colchetes [ ]. Por exemplo, muitos comandos aceitam project-list como um argumento. Você pode especificar project-list como uma lista de nomes ou uma lista de caminhos para os diretórios de origem locais dos projetos:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

help

Esta página apenas destaca as opções principais. Consulte a ajuda da linha de comando para ver detalhes completos. Quando o repo estiver instalado, você poderá encontrar a documentação mais recente, começando com um resumo de todos os comandos, executando:

repo help

Veja informações detalhadas sobre qualquer comando executando isto em uma árvore de repo:

repo help command

O comando a seguir, por exemplo, produz uma descrição e uma lista de opções para o argumento init do repo, que inicializa o repo no diretório atual. Consulte init para ver mais detalhes.

repo help init

Ou, para ver apenas a lista de opções disponíveis, execute:

repo command --help
Exemplo:
repo init --help

init

repo init -u url [options]

Instala o repo no diretório atual. Isso cria um diretório .repo/ com repositórios Git para o código-fonte do repo e os arquivos padrão de manifesto do Android. O diretório .repo/ também contém manifest.xml, que é um symlink para o manifesto selecionado no diretório .repo/manifests/. Consulte manifest-format.md para ver instruções sobre como atualizar o manifesto.

Opções:

  • -u: especifica um URL a partir do qual é possível recuperar um repositório de manifesto. O manifesto comum é encontrado em https://android.googlesource.com/platform/manifest.
  • -m: seleciona um arquivo de manifesto no repositório. Se nenhum nome de manifesto for selecionado, o padrão será default.xml.
  • -b: especifica uma revisão, isto é, um manifest-branch específico.

Observação: para todos os comandos repo restantes, o diretório de trabalho atual precisa ser o diretório pai de .repo/ ou um subdiretório do diretório pai.

sync

repo sync [project-list]

Faz o download de novas alterações e atualiza os arquivos de trabalho no ambiente local, essencialmente realizando git fetch em todos os repositórios Git. Se você executa repo sync sem nenhum argumento, ele sincroniza os arquivos para todos os projetos.

Quando você executa repo sync, acontece o seguinte:

  • Se o projeto nunca foi sincronizado, o repo sync será equivalente ao git clone. Todos os branches do repositório remoto são copiados para o diretório do projeto local.

  • Se o projeto já foi sincronizado uma vez, o repo sync é equivalente a:

    git remote update
    git rebase origin/branch
    

    onde branch é o branch recebido no momento no diretório do projeto local. Se o branch local não estiver rastreando um branch no repositório remoto, nenhuma sincronização ocorrerá no projeto.

  • Se a operação de realocação do Git resultar em conflitos de mesclagem, use os comandos normais do Git (por exemplo, git rebase --continue) para resolver os conflitos.

Após uma execução bem-sucedida de repo sync, o código será atualizado nos projetos especificados e sincronizado com o código no repositório remoto.

Estas são as principais opções. Consulte repo help sync para ver mais:

  • -c: busca apenas o branch atual do manifesto no servidor.

  • -d: alterna os projetos especificados de volta para a revisão de manifesto. É útil se o projeto está em um branch de tópicos no momento, mas a revisão de manifesto é temporariamente necessária.

  • -f: prossegue com a sincronização de outros projetos mesmo que a sincronização de um projeto falhe.

  • -jthreadcount: divide a sincronização entre as linhas de execução para que ela seja concluída mais rapidamente. Para não sobrecarregar sua máquina, deixe alguma CPU livre para outras tarefas. Para ver o número de CPUs disponíveis, primeiro execute: nproc --all.

  • -q: executa silenciosamente suprimindo mensagens de status.

  • -s: sincroniza para uma versão válida conhecida, conforme especificado pelo elemento manifest-server no manifesto atual.

upload

repo upload [project-list]

Para os projetos especificados, o repo compara os branches locais com os branches remotos atualizados durante a última sincronização do repo. O repo solicita que você selecione um ou mais branches que não foram enviados para análise.

Depois disso, todas as confirmações dos branches selecionados são transmitidas para o Gerrit por uma conexão HTTPS. É preciso configurar uma senha HTTPS para ativar a autorização de upload. Visite o Gerador de senhas para gerar um novo par de nome de usuário/senha para usar em HTTPS.

Quando o Gerrit recebe os dados do objeto no servidor, ele transforma cada confirmação em uma alteração para que os revisores possam comentar em cada uma delas. Para combinar várias confirmações de checkpoint em uma única confirmação, use git rebase -i antes de fazer upload.

Se você executar repo upload sem nenhum argumento, ele pesquisará todos os projetos em busca de alterações no upload.

Para editar as alterações após o upload, use uma ferramenta como git rebase -i ou git commit --amend para atualizar suas confirmações locais. Depois que suas edições forem concluídas:

  • verifique se o branch atualizado é o branch recebido atual;
  • para cada confirmação na série, insira o código de alteração do Gerrit entre colchetes:
    # Replacing from branch foo
    [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
    [ 2829 ] ec18b4ba Update proto client to support patch set replacments
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

Depois que o upload for concluído, as alterações terão um conjunto de patches complementar.

Se você quiser fazer upload apenas do branch do Git recebido no momento, use o sinalizador --current-branch (ou a abreviação --cbr).

diff

repo diff [project-list]

Mostra mudanças pendentes entre a confirmação e a árvore de trabalho usando o git diff.

download

repo download target change

Faz o download da alteração especificada no sistema de revisão e a disponibiliza no diretório de trabalho local do seu projeto.

Por exemplo, para fazer o download da alteração 23823 para seu diretório de plataforma/versão:

repo download platform/build 23823

A execução do repo sync remove quaisquer confirmações recuperadas com o repo download. Ou você pode receber o branch remoto com git checkout m/master.

Observação: há atrasos de replicação para todos os servidores do mundo, então há um pequeno atraso no espelhamento entre o instante em que uma alteração fica visível na Web no Gerrit (link em inglês) e aquele em que o repo download consegue encontrá-la para todos os usuários.

forall

repo forall [project-list] -c command

Executa o comando shell fornecido em cada projeto. As seguintes variáveis de ambiente adicionais são disponibilizadas pelo repo forall:

  • REPO_PROJECT é definido como o nome exclusivo do projeto.

  • REPO_PATH é o caminho relativo para a raiz do cliente.

  • REPO_REMOTE é o nome do sistema remoto do manifesto.

  • REPO_LREV é o nome da revisão do manifesto, traduzido em um branch de rastreamento local. Use-o se você precisar passar a revisão de manifesto para um comando Git executado localmente.

  • REPO_RREV é o nome da revisão do manifesto, exatamente como está escrito nele.

Opções:

  • -c: comando e argumentos a serem executados. O comando é avaliado por meio de /bin/sh e qualquer argumento depois dele é passado como parâmetro de posicionamento do shell.

  • -p: mostra os cabeçalhos do projeto antes da saída do comando especificado. Isso é conseguido com a vinculação de pipes aos streams stdin, stdout e sterr do comando e com o encadeamento de toda a saída para um stream contínuo, que é exibido em uma sessão de uma única página.

  • -v: mostra as mensagens que o comando escreve para stderr.

prune

repo prune [project-list]

Descarta (exclui) tópicos que já estão mesclados.

start

repo start
branch-name [project-list]

Inicia um novo branch para desenvolvimento, começando pela revisão especificada no manifesto.

O argumento BRANCH_NAME fornece uma breve descrição da alteração que você está tentando fazer nos projetos. Se você não sabe, considere usar o nome default.

O argumento project-list especifica quais projetos participam desse branch de tópico.

Observação: um ponto ( . ) é um atalho para o projeto no diretório de trabalho atual.

status

repo status [project-list]

Compara a árvore de trabalho à área de preparo (índice) e à confirmação mais recente nesse branch (HEAD) em cada projeto especificado. Exibe uma linha de resumo para cada arquivo em que há uma diferença entre esses três estados.

Para ver o status apenas para o branch atual, execute repo status. As informações de status são listadas por projeto. Para cada arquivo no projeto, é usado um código de duas letras.

Na primeira coluna, uma letra maiúscula indica como a área de organização difere do último estado confirmado.

Letra Significado Descrição
- Sem alterações O mesmo no HEAD e no índice
A Adicionado Ausente no HEAD, mas presente no índice
M Modificado Presente no HEAD, modificado no índice
D Excluído Presente no HEAD, mas não no índice
R Renomeado Ausente no HEAD, caminho alterado no índice
C Copiado Ausente no HEAD, copiado de outro no índice
T Modo alterado Mesmo conteúdo no HEAD e no índice, modo alterado
U Não mesclado Conflito entre o HEAD e o índice, resolução necessária

Na segunda coluna, uma letra minúscula indica como o diretório de trabalho é diferente do índice.

Letra Significado Descrição
- Novo/desconhecido Ausente no índice, presente na árvore de trabalho
m Modificado Presente no índice e na árvore de trabalho, modificado
d Excluído Presente no índice, mas não na árvore de trabalho