Referência de comando do repositório

O Repo complementa o Git simplificando o trabalho em vários repositórios. Para obter uma explicação sobre o relacionamento entre Repo e Git, consulte Ferramentas de controle de origem . Para obter mais detalhes sobre o Repo, consulte o README do Repo

O uso do repositório assume a seguinte forma:

repo command options

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

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

ajuda

repo help

Fornece ajuda sobre o comando repo . Você pode ver informações detalhadas sobre um comando Repo específico especificando um comando como uma opção:

repo help command

Por exemplo, o comando a seguir produz uma descrição e uma lista de opções para o comando init :

repo help init

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

repo command --help

Por exemplo:

repo init --help

iniciar

repo init -u url [options]

Instala o Repo no diretório atual. Este comando cria um diretório .repo/ com repositórios Git para o código-fonte do Repo e os arquivos de manifesto padrão do Android.

Opções:

  • -u : Especifique uma URL da qual recuperar um repositório de manifesto. O manifesto comum é encontrado em https://android.googlesource.com/platform/manifest .

  • -m : Selecione um arquivo de manifesto no repositório. Se nenhum nome de manifesto for selecionado, o padrão será default.xml .

  • -b : Especifique uma revisão, ou seja, um manifest-branch específico.

sincronizar

repo sync [project-list]

Baixa novas alterações e atualiza os arquivos de trabalho em seu ambiente local, essencialmente realizando git fetch em todos os repositórios Git. Se você executar repo sync sem argumentos, ele sincronizará os arquivos de todos os projetos.

Quando você executa repo sync , é isso que acontece:

  • Se o projeto nunca foi sincronizado, então repo sync será equivalente a git clone ; todas as ramificações no repositório remoto são copiadas para o diretório local do projeto.

  • Se o projeto já tiver sido sincronizado antes, repo sync será equivalente a:

    git remote update
    git rebase origin/branch
    

    Onde branch é o branch atual com check-out no diretório local do projeto. Se a ramificação local não estiver rastreando uma ramificação no repositório remoto, nenhuma sincronização ocorrerá para o projeto.

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

Principais opções:

  • -c : busca apenas a ramificação do manifesto atual do servidor.
  • -d : alterna os projetos especificados de volta para a revisão do manifesto. Esta opção é útil se o projeto estiver em uma ramificação de tópico, mas a revisão do manifesto for necessária temporariamente.
  • -f : prossiga com a sincronização de outros projetos, mesmo se a sincronização de um projeto falhar.
  • threadcount : Divida a sincronização entre threads para uma conclusão mais rápida. Certifique-se de não sobrecarregar sua máquina – deixe alguma CPU reservada 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 com uma compilação válida, conforme especificado pelo elemento manifest-server no manifesto atual.

Para mais opções, execute repo help sync .

carregar

repo upload [project-list]

Carrega alterações para o servidor de revisão. Para os projetos especificados, o Repo compara as ramificações locais com as ramificações remotas atualizadas durante a última sincronização do Repo. O Repo solicita que você selecione um ou mais ramos que não foram carregados para revisão.

Todos os commits nas ramificações selecionadas são então transmitidos ao Gerrit por meio de uma conexão HTTPS. Você precisa configurar uma senha HTTPS para ativar a autorização de upload. Para gerar um novo par de nome de usuário/senha para usar em HTTPS, visite o Gerador de senhas .

Quando Gerrit recebe os dados do objeto em seu servidor, ele transforma cada commit em uma mudança para que os revisores possam comentar sobre um commit específico. Para combinar vários commits de checkpoint em um único commit, use git rebase -i antes de executar o upload.

Se você executar repo upload sem argumentos, ele pesquisará em todos os projetos alterações para upload.

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

  • Verifique se a ramificação atualizada é a ramificação em check-out atual.
  • Use repo upload --replace PROJECT para abrir o editor de correspondência de alterações.
  • Para cada commit da série, insira o ID 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 replacements
    # Insert change numbers in the brackets to add a new patch set.
    # To create a new change record, leave the brackets empty.
    

Após a conclusão do upload, as alterações terão um conjunto de patches adicional.

Se você deseja fazer upload apenas do branch Git atualmente em check-out, use o sinalizador --current-branch (ou --cbr para abreviar).

diferença

repo diff [project-list]

Mostra alterações pendentes entre o commit e a árvore de trabalho usando git diff .

download

repo download target change

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

Por exemplo, para baixar a alteração 23823 em seu diretório platform/build :

repo download platform/build 23823

A execução repo sync remove quaisquer commits recuperados com repo download . Ou você pode verificar o branch remoto usando git checkout m/main .

para todos

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 à raiz do cliente.
  • REPO_REMOTE é o nome do sistema remoto do manifesto.
  • REPO_LREV é o nome da revisão do manifesto, traduzido para uma ramificação de rastreamento local. Use esta variável se precisar passar a revisão do manifesto para um comando Git executado localmente.
  • REPO_RREV é o nome da revisão do manifesto, exatamente como está escrito no manifesto.

Opções:

  • -c : Comando e argumentos a serem executados. O comando é avaliado por meio de /bin/sh e quaisquer argumentos posteriores são passados ​​como parâmetros posicionais do shell.
  • -p : mostra os cabeçalhos do projeto antes da saída do comando especificado. Isso é conseguido vinculando pipes aos fluxos stdin, stdout e sterr do comando e canalizando toda a saída para um fluxo contínuo que é exibido em uma única sessão de pager.
  • -v : mostra mensagens que o comando grava em stderr.

ameixa seca

repo prune [project-list]

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

começar

repo start branch-name [project-list]

Inicia um novo branch para desenvolvimento, a partir da 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 desta ramificação de tópico.

status

repo status [project-list]

Compara a árvore de trabalho com a área de teste (índice) e o commit mais recente neste branch (HEAD) em cada projeto especificado. Exibe uma linha de resumo para cada arquivo onde há uma diferença entre esses três estados.

Para ver apenas o status da ramificação atual, execute repo status . . As informações de status são listadas por projeto. Para cada arquivo do projeto, é utilizado um código de duas letras.

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

Carta Significado Descrição
- Sem alteração O mesmo em HEAD e índice
A Adicionado Não no HEAD, no índice
M Modificado Em HEAD, modificado no índice
D Excluído Em HEAD, não em índice
R Renomeado Não está em HEAD, caminho alterado no índice
C Copiado Não está em HEAD, copiado de outro no índice
T Modo alterado Mesmo conteúdo em HEAD e índice, modo alterado
você Não mesclado Conflito entre HEAD e índice; resolução necessária

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

Carta Significado Descrição
- Novo/desconhecido Não no índice, na árvore de trabalho
eu Modificado No índice, na árvore de trabalho, modificado
d Excluído No índice, não na árvore de trabalho

Lidar com erros de repositório

git commit -a # Commit local changes first so they aren't lost.
repo start branch-name # Start the branch
git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start
repo upload .

O erro repo: error: no branches ready for upload aparece quando o comando repo start não foi executado no início da sessão. Para recuperar, você pode verificar o ID do commit, iniciar um novo branch e então mesclá-lo.