Repo integra Git semplificando il lavoro su più repository. Per una spiegazione della relazione tra Repo e Git, consulta Strumenti di controllo del codice sorgente . Per ulteriori dettagli su Repo, vedere il file README Repo
L'utilizzo del repository assume la seguente forma:
repo command options
Gli elementi facoltativi sono indicati tra parentesi []. Ad esempio, molti comandi accettano project-list come argomento. Puoi specificare project-list come un elenco di nomi o un elenco di percorsi alle directory di origine locali per i progetti:
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]
aiuto
repo help
Fornisce aiuto sul comando repo
. Puoi visualizzare informazioni dettagliate su uno specifico comando Repo specificando un comando come opzione:
repo help command
Ad esempio, il comando seguente fornisce una descrizione e un elenco di opzioni per il comando init
:
repo help init
Oppure, per vedere solo l'elenco delle opzioni disponibili per un comando, esegui:
repo command --help
Ad esempio:
repo init --help
dentro
repo init -u url [options]
Installa Repo nella directory corrente. Questo comando crea una directory .repo/
con repository Git per il codice sorgente Repo e i file manifest Android standard.
Opzioni:
-u
: specifica un URL da cui recuperare un repository manifest. Il manifest comune si trova all'indirizzohttps://android.googlesource.com/platform/manifest
.-m
: seleziona un file manifest all'interno del repository. Se non viene selezionato alcun nome manifest, il valore predefinito èdefault.xml
.-b
: specifica una revisione, ovvero un particolare manifest-branch .
sincronizzare
repo sync [project-list]
Scarica le nuove modifiche e aggiorna i file di lavoro nel tuo ambiente locale, eseguendo essenzialmente git fetch
su tutti i repository Git. Se esegui repo sync
senza argomenti, sincronizza i file per tutti i progetti.
Quando esegui repo sync
, ecco cosa succede:
Se il progetto non è mai stato sincronizzato,
repo sync
equivale agit clone
; tutti i rami nel repository remoto vengono copiati nella directory del progetto locale.Se il progetto è stato sincronizzato in precedenza,
repo sync
equivale a:git remote update git rebase origin/branch
Dove branch è il ramo attualmente estratto nella directory del progetto locale. Se il ramo locale non tiene traccia di un ramo nel repository remoto, non avviene alcuna sincronizzazione per il progetto.
Dopo un'esecuzione corretta del repo sync
, il codice nei progetti specificati viene aggiornato e sincronizzato con il codice nel repository remoto.
Opzioni chiave:
-
-c
: recupera solo il ramo manifest corrente dal server. -
-d
: riporta i progetti specificati alla revisione del manifest. Questa opzione è utile se il progetto si trova su un ramo di un argomento, ma la revisione del manifest è necessaria temporaneamente. -
-f
: procede con la sincronizzazione di altri progetti anche se la sincronizzazione di un progetto non riesce. -
threadcount
: divide la sincronizzazione tra i thread per un completamento più rapido. Assicurati di non sovraccaricare la tua macchina: lascia una parte della CPU riservata per altre attività. Per vedere il numero di CPU disponibili, esegui primanproc --all
. -
-q
: esegue silenziosamente sopprimendo i messaggi di stato. -
-s
: sincronizza con una build sicuramente valida come specificato dall'elementomanifest-server
nel manifest corrente.
Per ulteriori opzioni, esegui repo help sync
.
caricamento
repo upload [project-list]
Carica le modifiche sul server di revisione. Per i progetti specificati, Repo confronta i rami locali con i rami remoti aggiornati durante l'ultima sincronizzazione del Repo. Il repository ti chiede di selezionare uno o più rami che non sono stati caricati per la revisione.
Tutti i commit sui rami selezionati vengono quindi trasmessi a Gerrit tramite una connessione HTTPS. È necessario configurare una password HTTPS per abilitare l'autorizzazione al caricamento. Per generare una nuova coppia nome utente/password da utilizzare su HTTPS, visita il Generatore di password .
Quando Gerrit riceve i dati dell'oggetto sul proprio server, trasforma ogni commit in una modifica in modo che i revisori possano commentare un commit specifico. Per combinare diversi commit del checkpoint in un singolo commit, utilizza git rebase -i
prima di eseguire il caricamento.
Se esegui repo upload
senza argomenti, cerca in tutti i progetti le modifiche da caricare.
Per modificare le modifiche dopo che sono state caricate, utilizza uno strumento come git rebase -i
o git commit --amend
per aggiornare i tuoi commit locali. Una volta completate le modifiche:
- Verificare che il ramo aggiornato sia il ramo attualmente estratto.
- Utilizza
repo upload --replace PROJECT
per aprire l'editor di corrispondenza delle modifiche. Per ogni commit della serie, inserisci l'ID di modifica Gerrit tra parentesi:
# Replacing from branch foo [ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific... [ 2829 ] ec18b4ba Update proto client to support patch set replacements # Insert change numbers in the brackets to add a new patch set. # To create a new change record, leave the brackets empty.
Una volta completato il caricamento, le modifiche avranno un set di patch aggiuntivo.
Se vuoi caricare solo il ramo Git attualmente estratto, usa il flag --current-branch
(o --cbr
in breve).
diff
repo diff [project-list]
Mostra le modifiche in sospeso tra il commit e l'albero di lavoro utilizzando git diff
.
scaricamento
repo download target change
Scarica la modifica specificata dal sistema di revisione e la rende disponibile nella directory di lavoro locale del progetto.
Ad esempio, per scaricare la modifica 23823 nella directory platform/build
:
repo download platform/build 23823
L'esecuzione repo sync
rimuove tutti i commit recuperati con repo download
. Oppure puoi controllare il ramo remoto usando git checkout m/main
.
per tutti
repo forall [project-list] -c command
Esegue il comando shell specificato in ciascun progetto. Le seguenti variabili di ambiente aggiuntive sono rese disponibili da repo forall
:
-
REPO_PROJECT
è impostato sul nome univoco del progetto. -
REPO_PATH
è il percorso relativo alla radice del client. -
REPO_REMOTE
è il nome del sistema remoto dal manifest. -
REPO_LREV
è il nome della revisione dal manifest, tradotto in un ramo di tracciamento locale. Utilizza questa variabile se devi passare la revisione del manifest a un comando Git eseguito localmente. -
REPO_RREV
è il nome della revisione dal manifest, esattamente come scritto nel manifest.
Opzioni:
-
-c
: comando e argomenti da eseguire. Il comando viene valutato tramite/bin/sh
e tutti gli argomenti successivi vengono passati come parametri posizionali della shell. -
-p
: mostra le intestazioni del progetto prima dell'output del comando specificato. Ciò si ottiene associando le pipe ai flussi stdin, stdout e sterr del comando e collegando tutto l'output in un flusso continuo visualizzato in un'unica sessione di cercapersone. -
-v
: mostra i messaggi che il comando scrive su stderr.
fesso
repo prune [project-list]
Sfoltisce (elimina) gli argomenti già uniti.
inizio
repo start branch-name [project-list]
Inizia un nuovo ramo per lo sviluppo, a partire dalla revisione specificata nel manifest.
L'argomento BRANCH_NAME
fornisce una breve descrizione della modifica che stai tentando di apportare ai progetti. Se non lo sai, considera l'utilizzo del nome default
.
L'argomento project-list
specifica quali progetti partecipano a questo ramo dell'argomento.
stato
repo status [project-list]
Confronta l'albero di lavoro con l'area di staging (indice) e il commit più recente su questo ramo (HEAD) in ciascun progetto specificato. Visualizza una riga di riepilogo per ciascun file in cui è presente una differenza tra questi tre stati.
Per visualizzare solo lo stato del ramo corrente, eseguire repo status .
. Le informazioni sullo stato sono elencate per progetto. Per ogni file del progetto viene utilizzato un codice di due lettere.
Nella prima colonna, una lettera maiuscola indica la differenza tra l'area di gestione temporanea e l'ultimo stato impegnato.
Lettera | Senso | Descrizione |
---|---|---|
- | Nessun cambiamento | Lo stesso in HEAD e indice |
UN | Aggiunto | Non in HEAD, nell'indice |
M | Modificata | In HEAD, modificato in indice |
D | Eliminato | In HEAD, non nell'indice |
R | Rinominato | Non in HEAD, percorso modificato in indice |
C | Copiato | Non in HEAD, copiato da un altro in index |
T | La modalità è cambiata | Stesso contenuto in HEAD e indice, modalità modificata |
U | Non uniti | Conflitto tra HEAD e indice; richiesta di risoluzione |
Nella seconda colonna, una lettera minuscola indica la differenza tra la directory di lavoro e l'indice.
Lettera | Senso | Descrizione |
---|---|---|
- | Nuovo/sconosciuto | Non nell'indice, nell'albero del lavoro |
M | Modificata | Nell'indice, nell'albero del lavoro, modificato |
D | Eliminato | Nell'indice, non nell'albero di lavoro |
Gestire gli errori del repository
git commit -a # Commit local changes first so they aren't lost. repo start branch-name # Start the branch git reset --hard HEAD@{1} # And reset the branch so that it matches the commit before repo start repo upload .
L'errore repo: error: no branches ready for upload
viene visualizzato quando il comando repo start
non è stato eseguito all'inizio della sessione. Per ripristinare, puoi controllare l'ID commit, avviare un nuovo ramo e quindi unirlo.