Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Flusso di lavoro del controllo del codice sorgente

Lavorare con il codice Android richiede l'utilizzo di Git (un sistema di controllo delle versioni open source) e Repo (uno strumento di gestione dei repository creato da Google che funziona su Git). Vedere Strumenti di controllo del codice sorgente per una spiegazione della relazione tra Repo e Git e collegamenti alla documentazione di supporto per ogni strumento.

Flusso

Lo sviluppo di Android prevede il seguente flusso di lavoro di base:

  1. Avvia un nuovo ramo di argomento utilizzando l' repo start .
  2. Modifica i file.
  3. Cambia lo stage usando git add .
  4. git commit modifiche utilizzando git commit .
  5. Carica le modifiche sul server di revisione utilizzando il 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 Avvia 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 Salva i file di staging.
git branch Mostra i rami correnti.
git branch [branch] Crea un nuovo ramo dell'argomento.
git checkout [branch] Passa a HEAD al ramo specificato.
git merge [branch] Unisce [branch] nel ramo corrente.
git diff Mostra la differenza delle modifiche non in scena.
git diff --cached Mostra diff dei cambiamenti in scena.
git log Mostra la cronologia del ramo corrente.
git log m/[codeline].. Mostra i commit che non sono stati inviati.

Per informazioni sull'utilizzo di Repo 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 topic branch nel tuo ambiente di lavoro locale ogni volta che inizi una modifica, ad esempio quando inizi a lavorare su un bug o una nuova funzionalità. Un ramo di argomento non è una copia dei file originali; è un puntatore a un commit particolare, il che rende la creazione di branch locali e il passaggio da uno all'altro un'operazione leggera. Usando i rami, puoi isolare un aspetto del tuo lavoro dagli altri. Per un articolo interessante sull'utilizzo dei rami argomento, fare riferimento a Separazione dei rami argomento .

Per avviare un ramo di argomenti 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 di rami di argomento

Per assegnare la filiale 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, usa un punto per rappresentare il progetto corrente.

Per passare a un'altra filiale nell'ambiente di lavoro locale:

git checkout BRANCH_NAME

Per visualizzare un elenco di rami 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 gestione temporanea

Per impostazione predefinita, Git rileva ma non tiene traccia delle modifiche apportate a un progetto. Per dire a Git di conservare le tue modifiche, devi contrassegnare o mettere in scena tali modifiche per l'inclusione 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 e cancellazioni 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 commit):

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 nella 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. Per creare un commit in Git:

git commit

Quando viene richiesto un messaggio di commit, fornire un breve (ma utile) messaggio per le modifiche inviate ad AOSP. Se non aggiungi un messaggio di commit, il commit si interrompe.

Caricamento delle modifiche su Gerrit

Aggiorna all'ultima revisione, quindi carica la modifica:

repo sync
repo upload

Questi comandi restituiscono un elenco delle modifiche apportate e richiedono di selezionare i rami da caricare sul server di revisione. Se è presente un solo ramo, viene visualizzato un semplice prompt y/n .

Risoluzione dei conflitti di sincronizzazione

Se il comando repo sync restituisce conflitti di sincronizzazione:

  1. Visualizza i file non uniti (codice di stato = U).
  2. Modificare le regioni di conflitto secondo necessità.
  3. Passare alla directory del progetto pertinente. Aggiungi e salva i file interessati, quindi ridisegna le modifiche:
    git add .
    git commit
    git rebase --continue
    
  4. Al termine del rebase, riavvia 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 di client

Poiché tutte le informazioni sullo stato sono memorizzate 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.