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 emhttps://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 agit 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 executenproc --all
. -
-q
: Executa silenciosamente, suprimindo mensagens de status. -
-s
: sincroniza com uma compilação válida, conforme especificado pelo elementomanifest-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.