Lavorare con il codice Android richiede l'utilizzo di Git (un sistema di controllo della versione open source) e Repo (uno strumento di gestione del repository creato da Google che viene eseguito su Git). Consulta Strumenti di controllo del codice sorgente per una spiegazione della relazione tra Repo e Git e collegamenti alla documentazione di supporto per ciascuno strumento.
Fluire
Lo sviluppo Android prevede il seguente flusso di lavoro di base:
- Avvia un nuovo ramo dell'argomento utilizzando
repo start
. - Modifica i file.
- La fase cambia usando
git add
. - Effettua il commit delle modifiche utilizzando
git commit
. - Carica le modifiche sul server di revisione utilizzando
repo upload
.
Compiti
Lavorare con Git e Repo nei repository di codice Android implica l'esecuzione delle seguenti attività comuni.
Comando | Descrizione |
---|---|
repo init | Inizializza un nuovo client. |
repo sync | Sincronizza il client con i repository. |
repo start | Inizia una nuova filiale. |
repo status | Mostra lo stato del ramo corrente. |
repo upload | Carica le modifiche sul server di revisione. |
git add | Mette in scena i file. |
git commit | Esegue il commit dei file in stage. |
git branch | Mostra i rami attuali. |
git branch [branch] | Crea un nuovo ramo dell'argomento. |
git checkout [branch] | Passa HEAD al ramo specificato. |
git merge [branch] | Unisce [branch] nel ramo corrente. |
git diff | Mostra la differenza delle modifiche non graduali. |
git diff --cached | Mostra le differenze tra le modifiche graduali. |
git log | Mostra la cronologia del ramo corrente. |
git log m/[codeline].. | Mostra i commit che non sono stati inviati. |
Per informazioni sull'utilizzo del repository per scaricare l'origine, vedere Download dell'origine e riferimento al comando Repo .
Sincronizzazione dei client
Per sincronizzare i file per tutti i progetti disponibili:
repo sync
Per sincronizzare i file per i progetti selezionati:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Creazione di rami di argomenti
Avvia un ramo di argomenti nel tuo ambiente di lavoro locale ogni volta che inizi una modifica, ad esempio quando inizi a lavorare su un bug o su una nuova funzionalità. Un ramo dell'argomento non è una copia dei file originali; è un puntatore a un commit particolare, il che rende la creazione di rami locali e il passaggio da uno all'altro un'operazione leggera. Utilizzando i rami, puoi isolare un aspetto del tuo lavoro dagli altri. Per un articolo interessante sull'utilizzo dei rami degli argomenti, fare riferimento a Separare i rami degli argomenti .
Per avviare un ramo di argomento utilizzando Repo, vai al progetto ed esegui:
repo start BRANCH_NAME .
Il punto finale ( .
) rappresenta il progetto nella directory di lavoro corrente.
Per verificare che il nuovo ramo sia stato creato:
repo status .
Utilizzo dei rami degli argomenti
Per assegnare il ramo a un progetto specifico:
repo start BRANCH_NAME PROJECT_NAME
Per un elenco di tutti i progetti, fare riferimento a android.googlesource.com . Se sei già passato alla directory del progetto, utilizza semplicemente un punto per rappresentare il progetto corrente.
Per passare a un'altra filiale nel tuo ambiente di lavoro locale:
git checkout BRANCH_NAME
Per visualizzare un elenco delle filiali esistenti:
git branch
O
repo branches
Entrambi i comandi restituiscono l'elenco dei rami esistenti con il nome del ramo corrente preceduto da un asterisco (*).
File di staging
Per impostazione predefinita, Git nota ma non tiene traccia delle modifiche apportate a un progetto. Per dire a Git di preservare le tue modifiche, devi contrassegnare o mettere in scena tali modifiche per includerle in un commit.
Per mettere in scena i cambiamenti:
git add
Questo comando accetta argomenti per file o directory all'interno della directory del progetto. Nonostante il nome, git add
non si limita ad aggiungere file al repository Git; può anche essere utilizzato per organizzare modifiche ed eliminazioni di file.
Visualizzazione dello stato del cliente
Per elencare lo stato dei file:
repo status
Per visualizzare le modifiche non salvate (modifiche locali che non sono contrassegnate per il salvataggio):
repo diff
Per visualizzare le modifiche confermate (modifiche individuate contrassegnate per il commit), assicurati di essere nella directory del progetto, quindi esegui git diff
con l'argomento cached
:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
Effettuare modifiche
Un commit è l'unità di base del controllo di revisione in Git e consiste in un'istantanea della struttura della directory e del contenuto del file per l'intero progetto. Usa questo comando per creare un commit in Git:
git commit
Quando viene richiesto un messaggio di commit, fornire un messaggio breve (ma utile) per le modifiche inviate ad AOSP. Se non aggiungi un messaggio di commit, il commit fallisce.
Caricamento modifiche su Gerrit
Aggiorna all'ultima revisione, quindi carica la modifica:
repo sync
repo upload
Questi comandi restituiscono un elenco delle modifiche apportate e ti chiedono di selezionare i rami da caricare sul server di revisione. Se è presente un solo ramo, verrà visualizzato un semplice prompt y/n
.
Risoluzione dei conflitti di sincronizzazione
Se il comando repo sync
restituisce conflitti di sincronizzazione:
- Visualizza i file non uniti (codice di stato = U).
- Modifica le regioni di conflitto secondo necessità.
- Passare alla directory del progetto pertinente. Aggiungi e conferma i file interessati, quindi riorganizza le modifiche:
git add .
git commit
git rebase --continue
- Una volta completato il rebase, avvia nuovamente l'intera sincronizzazione:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Ripulire i clienti
Dopo aver unito le modifiche a Gerrit, aggiorna la directory di lavoro locale, quindi utilizza repo prune
per rimuovere in modo sicuro i rami degli argomenti obsoleti:
repo sync
repo prune
Eliminazione dei clienti
Poiché tutte le informazioni sullo stato sono archiviate nel tuo client, devi solo eliminare la directory dal tuo file system:
rm -rf WORKING_DIRECTORY
L'eliminazione di un cliente elimina definitivamente tutte le modifiche che non hai caricato per la revisione.