L'utilizzo del codice Android richiede l'utilizzo di Git (un programma open source un sistema di controllo delle versioni) e Repo (un repository creato da Google strumento di gestione dei dati eseguito su Git). Consulta Strumenti di controllo del codice sorgente. per una spiegazione della relazione tra Repo, Git e link alla documentazione di supporto per ogni strumento.
Flusso
Lo sviluppo di Android prevede il seguente flusso di lavoro di base:
- Avvia un nuovo ramo di argomento utilizzando
repo start
. - Modifica i file.
- Modifiche di fase utilizzando
git add
. - Esegui il commit delle modifiche utilizzando
git commit
. - Carica le modifiche sul server delle recensioni utilizzando
repo upload
.
Tasks
L'utilizzo di Git e repository nei repository di codice Android comporta eseguendo le seguenti attività comuni.
Comando | Descrizione |
---|---|
repo init |
Inizializza un nuovo client. |
repo sync |
Sincronizza il client con i repository. |
repo start |
Avvia un nuovo ramo. |
repo status |
Mostra lo stato del ramo attuale. |
repo upload |
Carica le modifiche sul server delle recensioni. |
git add |
Mette in pausa i file. |
git commit |
Esegue il commit dei file temporanei. |
git branch |
Mostra i rami correnti. |
git branch [branch] |
Crea un nuovo ramo di argomento. |
git checkout [branch] |
Cambia HEAD nel ramo specificato. |
git merge [branch] |
Unisce [branch] nel ramo attuale. |
git diff |
Mostra il diff delle modifiche non pianificate. |
git diff --cached |
Mostra le differenze tra le modifiche temporanee. |
git log |
Mostra la cronologia del ramo attuale. |
git log m/[codeline].. |
Mostra i commit di cui non viene eseguito il push. |
Per informazioni sull'utilizzo del repository per scaricare il codice sorgente, consulta Download del codice sorgente e Riferimento dei comandi repository.
Sincronizzazione dei clienti
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 argomento nel tuo ambiente di lavoro locale ogni volta che inizi un cambiare, ad esempio quando inizi a lavorare su un bug o su una nuova funzionalità. Un ramo di argomento non è una copia dei file originali; è un puntatore a una particolare commit, il che semplifica la creazione di rami locali e il passaggio per creare un'operazione leggera. Utilizzando i rami, puoi isolare un aspetto il tuo lavoro dagli altri. Per un articolo interessante sull'uso dell'argomento rami, fai riferimento Separazione rami di argomenti.
Per avviare un ramo di argomento utilizzando il repository, vai al progetto ed esegui:
repo start BRANCH_NAME .
Il periodo finale ( .
) rappresenta il progetto nell'attuale periodo di lavoro
.
Per verificare che il nuovo ramo sia stato creato:
repo status .
Utilizzo dei rami di argomenti
Per assegnare il ramo a un progetto specifico:
repo start BRANCH_NAME PROJECT_NAME
Per un elenco di tutti i progetti, consulta: android.googlesource.com. Se hai già raggiunto la directory del progetto, utilizza un punto rappresentano il progetto attuale.
Per passare a un altro ramo nell'ambiente di lavoro locale:
git checkout BRANCH_NAME
Per visualizzare un elenco dei rami esistenti:
git branch
oppure
repo branches
Entrambi i comandi restituiscono l'elenco dei rami esistenti con il nome ramo corrente preceduto da un asterisco (*).
File temporanei
Per impostazione predefinita, Git nota, ma non tiene traccia delle modifiche che apporti in un progetto. Per indicare a Git di conservare le modifiche, devi contrassegnarle o eseguirne lo stage modifiche per l'inclusione in un commit.
Per organizzare le modifiche in un'area intermedia:
git add
Questo comando accetta argomenti per i file o le directory all'interno del progetto
. Nonostante il nome, git add
non si limita ad aggiungere file a
il repository Git; può essere utilizzato anche per lo stage delle modifiche
le eliminazioni.
Visualizzazione dello stato del cliente
Per elencare lo stato dei file:
repo status
Per visualizzare le modifiche di cui non è stato eseguito il commit (modifiche locali non contrassegnate per il commit):
repo diff
Per visualizzare le modifiche di cui è stato eseguito il commit (le modifiche individuate contrassegnate per
esegui il commit), assicurati di trovarti nella directory del progetto, quindi esegui git
diff
con l'argomento cached
:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
Conferma delle modifiche in corso...
Un commit è l'unità di base del controllo della revisione in Git ed è composta da uno snapshot della struttura della directory e dei contenuti dei file per l'intero progetto. Utilizza questo comando per creare un commit in Git:
git commit
Quando viene richiesto un messaggio di commit, fornisci un messaggio breve (ma utile) per modifiche inviate ad AOSP. Se non aggiungi un messaggio di commit, il commit non va a buon fine.
Caricamento delle modifiche in Gerrit
Esegui l'aggiornamento all'ultima revisione, quindi carica la modifica:
repo sync
repo upload
Questi comandi restituiscono un elenco delle modifiche di cui hai eseguito il commit e ti chiedono di
seleziona i rami da caricare sul server delle recensioni. Se c'è un solo elemento
ramo, vedrai un semplice prompt y/n
.
Risoluzione dei conflitti di sincronizzazione
Se il comando repo sync
restituisce conflitti di sincronizzazione:
- Visualizza i file divisi (codice di stato = U).
- Modifica le regioni in conflitto, se necessario.
- Passa alla directory del progetto pertinente. Aggiungi ed esegui il commit delle
, quindi ribase le modifiche:
git add .
git commit
git rebase --continue
- Al termine del rebase, riavvia di nuovo l'intera sincronizzazione:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Pulizia dei clienti
Dopo aver unito le modifiche a Gerrit, aggiorna la directory di lavoro locale, quindi usa
repo prune
per rimuovere in modo sicuro i rami di argomenti inattivi:
repo sync
repo prune
Eliminazione dei client
Poiché tutte le informazioni sullo stato sono archiviate nel tuo client, elimina la directory dal file system:
rm -rf WORKING_DIRECTORY
L'eliminazione di un client elimina definitivamente tutte le modifiche che non hai apportato caricati per la revisione.