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 gerenciamento de repositório criada pelo Google que roda sobre o Git). Consulte Ferramentas de controle de origem para obter uma explicação sobre o relacionamento entre Repo e Git e links para documentação de suporte para cada ferramenta.
Fluxo
O desenvolvimento do Android envolve o seguinte fluxo de trabalho básico:
- Inicie uma nova ramificação de tópico usando
repo start
. - Edite os arquivos.
- Mudanças de estágio usando
git add
. - Confirme as alterações usando
git commit
. - Faça upload das alterações para o servidor de revisão usando
repo upload
.
Tarefas
Trabalhar com Git e 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 uma nova ramificação. |
repo status | Mostra o status da ramificação atual. |
repo upload | Carrega alterações para o servidor de revisão. |
git add | Prepara os arquivos. |
git commit | Confirma os arquivos preparados. |
git branch | Mostra as ramificações atuais. |
git branch [branch] | Cria uma nova ramificação de tópico. |
git checkout [branch] | Alterna HEAD para a ramificação especificada. |
git merge [branch] | Mescla [branch] na ramificação atual. |
git diff | Mostra a comparação das alterações não preparadas. |
git diff --cached | Mostra diferenças entre as alterações preparadas. |
git log | Mostra o histórico da filial atual. |
git log m/[codeline].. | Mostra os commits que não são enviados. |
Para obter informações sobre como usar o Repo para baixar o código-fonte, consulte Fazendo download do código-fonte e Referência de comando do Repo .
Sincronizando clientes
Para sincronizar os arquivos de todos os projetos disponíveis:
repo sync
Para sincronizar os arquivos dos projetos selecionados:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Criando ramificações de tópico
Inicie uma ramificação de tópico em seu ambiente de trabalho local sempre que iniciar uma mudança, como quando você começa a trabalhar em um bug ou em um novo recurso. Uma ramificação de tópico não é uma cópia dos arquivos originais; é um ponteiro para um commit específico, o que torna a criação de ramificações locais e a alternância entre elas uma operação leve. Ao usar ramificações, você pode isolar um aspecto do seu trabalho dos outros. Para obter um artigo interessante sobre o uso de ramificações de tópicos, consulte Separando ramificações de tópicos .
Para iniciar uma ramificação de tópico usando 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 a nova ramificação foi criada:
repo status .
Usando ramificações de tópico
Para atribuir a ramificação a um projeto específico:
repo start BRANCH_NAME PROJECT_NAME
Para obter uma lista de todos os projetos, consulte android.googlesource.com . Se você já navegou até o diretório do projeto, basta usar um ponto final para representar o projeto atual.
Para mudar para outra filial no seu ambiente de trabalho local:
git checkout BRANCH_NAME
Para visualizar uma lista de filiais existentes:
git branch
ou
repo branches
Ambos os comandos retornam a lista de ramificações existentes com o nome da ramificação atual precedido por um asterisco (*).
Preparando arquivos
Por padrão, o Git percebe, mas não rastreia, as alterações feitas em um projeto. Para dizer ao Git para preservar suas alterações, você deve marcar ou preparar essas alterações para inclusão em um commit.
Para preparar mudanças:
git add
Este comando aceita argumentos para arquivos ou diretórios dentro do diretório do projeto. Apesar do nome, git add
não apenas adiciona arquivos ao repositório Git; ele também pode ser usado para preparar modificações e exclusões de arquivos.
Visualizando o status do cliente
Para listar o estado dos arquivos:
repo status
Para visualizar edições não confirmadas (edições locais que não estão marcadas para confirmação):
repo diff
Para visualizar as edições confirmadas (edições localizadas marcadas para confirmação), verifique se você está no diretório do projeto e execute git diff
com o argumento cached
:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
Confirmando alterações
Um commit é a unidade básica de controle de revisão no Git e consiste em um instantâneo da estrutura de diretórios e do conteúdo do arquivo de todo o projeto. Use este comando para criar um commit no Git:
git commit
Quando for solicitada uma mensagem de commit, forneça uma mensagem curta (mas útil) para as alterações enviadas ao AOSP. Se você não adicionar uma mensagem de commit, o commit falhará.
Fazendo upload de alterações para Gerrit
Atualize para a revisão mais recente e faça upload da alteração:
repo sync
repo upload
Esses comandos retornam uma lista de alterações que você confirmou e solicita que você selecione as ramificações para fazer upload para o servidor de revisão. Se houver apenas uma ramificação, você verá um prompt y/n
simples.
Resolver conflitos de sincronização
Se o comando repo sync
retornar conflitos de sincronização:
- Visualize os arquivos que não foram mesclados (código de status = U).
- Edite as regiões de conflito conforme necessário.
- Mude para o diretório do projeto relevante. Adicione e confirme os arquivos afetados e, em seguida, rebase as alterações:
git add .
git commit
git rebase --continue
- Após a conclusão do rebase, inicie toda a sincronização novamente:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Limpando 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 ramificações de tópicos obsoletos:
repo sync
repo prune
Excluindo 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
Excluir um cliente exclui permanentemente todas as alterações que você não carregou para revisão.