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 maggiori dettagli sul repository, consulta il file README del repository.
L'utilizzo del repo ha il seguente formato:
repo command options
Gli elementi facoltativi sono mostrati tra parentesi quadre []. 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]
assistenza
repo help
Fornisce assistenza sul comando repo
. Puoi visualizzare informazioni dettagliate su un comando Repo specifico specificando un comando come opzione:
repo help command
Ad esempio, il seguente comando restituisce una descrizione e un elenco di opzioni per il comando init
:
repo help init
In alternativa, per visualizzare solo l'elenco delle opzioni disponibili per un comando, esegui:
repo command --help
Ad esempio:
repo init --help
init
repo init -u url [options]
Installa Repo nella directory corrente. Questo comando crea una directory .repo/
con i repository Git per il codice sorgente del repository e i file manifest Android standard.
Opzioni:
-u
: specifica un URL da cui recuperare un repository manifest. Il file 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 determinato manifest-branch.
sincronizzazione
repo sync [project-list]
Scarica le nuove modifiche e aggiorna i file di lavoro nel tuo ambiente locale,
in sostanza eseguendo git fetch
in tutti i repository Git. Se esegui
repo sync
senza argomenti, vengono sincronizzati i file di tutti i progetti.
Quando esegui repo sync
, si verifica quanto segue:
Se il progetto non è mai stato sincronizzato,
repo sync
è equivalente agit clone
; tutti i branch nel repository remoto vengono copiati nella directory del progetto locale.Se il progetto è già stato sincronizzato,
repo sync
è equivalente a:git remote update git rebase origin/branch
dove branch è il ramo attualmente sottoposto a check-out nella directory del progetto locale. Se il ramo locale non monitora un ramo nel repository remoto, non viene eseguita alcuna sincronizzazione per il progetto.
Dopo un'esecuzione corretta di repo sync
, il codice nei progetti specificati è aggiornato e sincronizzato con il codice nel repository remoto.
Opzioni principali:
-c
: recupera solo il ramo manifest corrente dal server.-d
: ripristina la revisione del file manifest per i progetti specificati. Questa opzione è utile se il progetto si trova in un ramo dell'argomento, ma la revisione del manifest è necessaria temporaneamente.-f
: procedi con la sincronizzazione di altri progetti anche se la sincronizzazione di un progetto non va a buon fine.threadcount
: suddividi la sincronizzazione in thread per completarla più rapidamente. Assicurati di non sovraccaricare la macchina: lascia un po' di CPU riservato per altre attività. Per vedere il numero di CPU disponibili, esegui primanproc --all
.-q
: esegui in silenzio sopprimendo i messaggi di stato.-s
: esegui la sincronizzazione con una build nota come valida, come specificato dall'elementomanifest-server
nel manifest corrente.
Per altre opzioni, esegui repo help sync
.
caricare
repo upload [project-list]
Carica le modifiche sul server di revisione. Per i progetti specificati, Repo confronta i branch locali con i branch remoti aggiornati durante l'ultima sincronizzazione di Repo. Repo ti chiede di selezionare uno o più dei branch che non sono stati caricati per la revisione.
Tutti i commit nei branch selezionati vengono poi trasmessi a Gerrit tramite una connessione HTTPS. Devi configurare una password HTTPS per attivare l'autorizzazione al caricamento. Per generare una nuova coppia di nome utente/password da utilizzare tramite HTTPS, visita il Generatore di password.
Quando Gerrit riceve i dati dell'oggetto tramite il proprio server, trasforma ogni commit in una modifica in modo che i revisori possano commentare un commit specifico.
Per combinare più commit di checkpoint in un unico commit, utilizza git rebase -i
prima di eseguire il caricamento.
Se esegui repo upload
senza argomenti, vengono cercate tutte le modifiche da caricare in tutti i progetti.
Per modificare le modifiche dopo il caricamento, utilizza uno strumento come git rebase -i
o
git commit --amend
per aggiornare i commit locali. Al termine delle modifiche:
- Verifica che il ramo aggiornato sia il ramo attualmente sottoposto a checkout.
- Usa
repo upload --replace PROJECT
per aprire l'editor di corrispondenza delle modifiche. Per ogni commit della serie, inserisci l'ID modifica di 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.
Al termine del caricamento, le modifiche hanno un set di patch aggiuntivo.
Se vuoi caricare solo il ramo Git attualmente sottoposto a checkout, utilizza il flag
--current-branch
(o --cbr
per abbreviarlo).
Per le modifiche correlate, è utile mantenere tutti i CL nello stesso argomento. Puoi
aggiungere un nome argomento durante il caricamento con --topic=TOPIC
. In alternativa, passa -t
per impostare il nome dell'argomento come il nome della filiale locale.
diff
repo diff [project-list]
Mostra le modifiche in sospeso tra il commit e l'albero di lavoro utilizzando
git diff
.
download
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
cambia 23823 nella directory
platform/build
:
repo download platform/build 23823
L'esecuzione di repo sync
rimuove tutti i commit recuperati con repo download
. In alternativa, puoi eseguire il check out del ramo remoto utilizzando git checkout m/main
.
per tutti
repo forall [project-list] -c command
Esegue il comando shell specificato in ogni progetto. repo forall
mette a disposizione le seguenti variabili di ambiente aggiuntive:
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 file manifest.REPO_LREV
è il nome della revisione dal manifest, tradotto in un ramo di monitoraggio locale. Utilizza questa variabile se devi passare la revisione del manifest a un comando Git eseguito localmente.REPO_RREV
è il nome della revisione dal file manifest, esattamente come scritto nel file manifest.
Opzioni:
-c
: comando e argomenti da eseguire. Il comando viene valutato tramite/bin/sh
e tutti gli argomenti successivi vengono trasmessi come parametri posizionali della shell.-p
: mostra le intestazioni del progetto prima dell'output del comando specificato. Questo viene ottenuto collegando i pipe agli stream stdin, stdout e sterr del comando e incanalando tutto l'output in uno stream continuo visualizzato in una singola sessione del visualizzatore di pagine.-v
: mostra i messaggi scritti dal comando in stderr.
prugna
repo prune [project-list]
Elimina gli argomenti già uniti.
partenza
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, ti consigliamo di utilizzare il nome
default
.
L'argomento project-list
specifica i progetti che partecipano a questo ramo
dell'argomento.
status
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 ogni progetto specificato. Mostra una riga di riepilogo per ogni file in cui esiste una differenza tra questi tre stati.
Per visualizzare solo lo stato del ramo corrente, esegui 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 le differenze tra l'area di staging e lo stato dell'ultimo commit.
Lettera | Significato | Descrizione |
---|---|---|
- | Nessuna influenza | Uguale in HEAD e nell'indice |
A | Aggiunta | Non nell'elemento HEAD, nell'indice |
M | Data di modifica | In HEAD, modificato nell'indice |
D | Eliminati | Nell'elemento HEAD, non nell'indice |
R | Rinominato | Non presente in HEAD, percorso modificato nell'indice |
C | Contenuti copiati | Non in HEAD, copiato da un altro nell'indice |
T | Modalità modificata | Stessi contenuti in HEAD e nell'indice, modalità modificata |
U | Non unito | Conflitto tra HEAD e indice; risoluzione richiesta |
Nella seconda colonna, una lettera minuscola indica la differenza tra la directory di lavoro e l'indice.
Lettera | Significato | Descrizione |
---|---|---|
- | Nuovo/sconosciuto | Non presente nell'indice, nell'albero di lavoro |
m | Data di modifica | Nell'indice, nell'albero di lavoro, modificato |
g | Eliminati | 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 recuperare, puoi controllare
l'ID commit, avviare un nuovo ramo e poi unirli.