Fluxo de trabalho de controle de origem

Trabalhar com código Android requer o uso do Git (um sistema de controle de versão de código aberto) e do repo (uma ferramenta de gestão de repositório criada pelo Google e executada sobre o Git). Consulte Ferramentas de controle de origem para saber mais sobre a relação entre o repo e o Git e encontrar links para a documentação de suporte para cada ferramenta.

Fluxo

O desenvolvimento do Android envolve o seguinte fluxo de trabalho básico:

  1. Iniciar um novo branch de tópico usando repo start.
  2. Editar os arquivos.
  3. Preparar as alterações usando git add.
  4. Confirmar as alterações usando git commit.
  5. Fazer upload das alterações para o servidor de revisão usando repo upload.

Tarefas

Trabalhar com o Git e o repo nos repositórios de código do Android envolve a execução das seguintes tarefas comuns:

Comando Descrição
repo init Inicializa um novo cliente.
repo sync Sincroniza o cliente com os repositórios.
repo start Inicia um novo branch.
repo status Mostra o status do branch atual.
repo upload Faz upload das alterações para o servidor de revisão.
git add Prepara os arquivos.
git commit Confirma os arquivos preparados.
git branch Mostra os branches atuais.
git branch [branch] Cria um novo branch de tópico.
git checkout [branch] Muda o HEAD para o branch especificado.
git merge [branch] Mescla o [branch] com o branch atual.
git diff Mostra a diferença entre alterações não preparadas.
git diff --cached Mostra a diferença entre alterações preparadas.
git log Mostra o histórico do branch atual.
git log m/[codeline].. Mostra as confirmações que não são enviadas.

Para ver informações sobre como usar o repo para fazer o download da origem, consulte Como fazer o download da origem e Referência do comando do repo.

Como sincronizar clientes

Para sincronizar os arquivos para todos os projetos disponíveis:

repo sync

Para sincronizar os arquivos para os projetos selecionados:

repo sync PROJECT0 PROJECT1 ... PROJECTN

Como criar branches de tópicos

Inicie um branch de tópico no seu ambiente de trabalho local sempre que começar uma alteração, como quando você começar a trabalhar em um bug ou em um novo recurso. Um branch de tópico não é uma cópia dos arquivos originais, mas sim um ponteiro para uma confirmação específica, o que torna a criação de branches locais e a alternância entre eles em uma operação leve. Usando branches, é possível isolar um aspecto do seu trabalho dos outros. Para ver um artigo interessante sobre o uso de branches de tópicos, consulte Como separar branches de tópicos (link em inglês).

Para iniciar um branch de tópico usando o Repo, navegue até o projeto e execute:

repo start BRANCH_NAME .

O ponto final (.) representa o projeto no diretório de trabalho atual.

Para verificar se o novo branch foi criado:

repo status .

Como usar branches de tópicos

Para atribuir o branch a um projeto específico:

repo start BRANCH_NAME PROJECT_NAME

Para ver uma lista de todos os projetos, consulte android.googlesource.com. Se você já navegou para o diretório do projeto, use um ponto apenas para representar o projeto atual.

Para mudar para outro branch no seu ambiente de trabalho local:

git checkout BRANCH_NAME

Para ver uma lista de branches existentes:

git branch

ou

repo branches

Os dois comandos retornam a lista de branches existentes com o nome do branch atual precedido por um asterisco (*).

Como preparar arquivos

Por padrão, o Git percebe, mas não monitora, as alterações feitas em um projeto. Para dizer ao Git para preservar suas alterações, você precisa marcar ou preparar essas mudanças para inclusão em uma confirmação.

Para preparar alterações:

git add

Esse comando aceita argumentos para arquivos ou diretórios dentro do diretório do projeto. Apesar do nome, git add não tem como única função adicionar arquivos ao repositório Git, mas também preparar modificações e exclusões de arquivos.

Como ver o status do cliente

Para listar o estado dos arquivos:

repo status

Para ver as edições não confirmadas (edições locais que não estão marcadas para confirmação):

repo diff

Para ver as edições confirmadas (edições locais marcadas para confirmação), verifique se você está no diretório do projeto e, em seguida, execute git diff com o argumento cached:

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

Como confirmar alterações

Uma confirmação é a unidade básica do controle de revisão no Git e consiste em um instantâneo da estrutura do diretório e no conteúdo do arquivo para todo o projeto. Para criar uma confirmação no Git:

git commit

Quando for solicitada uma mensagem de confirmação, forneça uma mensagem breve, mas útil, para as alterações enviadas ao AOSP. Se você não adicionar uma mensagem de confirmação, ela será cancelada.

Como fazer upload das alterações para o Gerrit

Atualize para a revisão mais recente e, em seguida, faça upload da alteração:

repo sync
repo upload

Esses comandos retornam uma lista das alterações que você confirmou e solicita que você selecione os branches que serão enviados para o servidor de revisão. Se houver apenas um branch, você verá uma solicitação y/n simples.

Como resolver conflitos de sincronização

Se o comando repo sync retornar conflitos de sincronização:

  1. Veja os arquivos cuja mesclagem foi cancelada (código de status = U).
  2. Edite as regiões de conflito conforme necessário.
  3. Mude para o diretório do projeto relevante. Adicione e confirme os arquivos afetados e realoque as alterações:
    git add .
    git commit
    git rebase --continue
    
  4. Após a conclusão da realocação, inicie toda a sincronização novamente:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

Como fazer a limpeza de clientes

Depois de mesclar as alterações no Gerrit, atualize seu diretório de trabalho local e use repo prune para remover com segurança os branches de tópico desatualizados:

repo sync
repo prune

Como excluir clientes

Como todas as informações de estado são armazenadas no seu cliente, você só precisa excluir o diretório do seu sistema de arquivos:

rm -rf WORKING_DIRECTORY

A exclusão de um cliente exclui permanentemente as alterações que você não enviou para análise.