Riferimento al comando Repo

Repo integra Git semplificando il lavoro su più repository. Vedere Strumenti di controllo del codice sorgente per una spiegazione della relazione tra Repo e Git. Per maggiori dettagli su Repo, vedere Repo README .

L'uso di Repo assume la seguente forma:

repo command options

Gli elementi facoltativi sono indicati tra parentesi [ ]. Ad esempio, molti comandi prendono 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

Questa pagina evidenzia semplicemente le opzioni chiave. Vedere la guida della riga di comando per i dettagli completi. Quando Repo è installato, puoi trovare la documentazione più recente che inizia con un riepilogo di tutti i comandi eseguendo:

repo help

Puoi visualizzare informazioni dettagliate su qualsiasi comando eseguendo questo all'interno di un albero Repo:

repo help command

Ad esempio, il seguente comando produce una descrizione e un elenco di opzioni per l'argomento init di Repo, che inizializza Repo nella directory corrente. (Vedi init per i dettagli.)

repo help init

Oppure per visualizzare solo l'elenco delle opzioni disponibili, eseguire:

repo command --help
Ad esempio:
repo init --help

dentro

repo init -u url [options]

Installa Repo nella directory corrente. Questo 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 su https://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 .

Nota: per tutti i restanti comandi Repo, la directory di lavoro corrente deve essere la directory principale di .repo/ o una sottodirectory della directory principale.

sincronizzazione

repo sync [project-list]

Scarica nuove modifiche e aggiorna i file di lavoro nel tuo ambiente locale, realizzando essenzialmente git fetch in tutti i repository Git. Se esegui repo sync senza argomenti, sincronizza i file per tutti i progetti.

Quando esegui repo sync , questo è ciò che accade:

  • Se il progetto non è mai stato sincronizzato, repo sync equivale a git 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 si verifica alcuna sincronizzazione per il progetto.

  • Se l'operazione Git rebase genera conflitti di unione, utilizza i normali comandi Git (ad esempio, git rebase --continue ) per risolvere i conflitti.

Dopo un'esecuzione corretta di repo sync , il codice nei progetti specificati è aggiornato e sincronizzato con il codice nel repository remoto.

Ecco le opzioni chiave. Vedi repo help sync per ulteriori informazioni:

  • -c : recupera solo il ramo manifest corrente dal server.

  • -d : riporta i progetti specificati alla revisione manifest. Ciò è utile se il progetto è attualmente su un ramo dell'argomento, ma la revisione del manifest è temporaneamente necessaria.

  • -f : procede con la sincronizzazione di altri progetti anche se un progetto non riesce a sincronizzarsi.

  • -j threadcount : suddivide 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, eseguire prima: nproc --all

  • -q : funziona silenziosamente sopprimendo i messaggi di stato.

  • -s : sincronizza con una build valida nota come specificato dall'elemento manifest-server nel manifest corrente.

caricamento

repo upload [project-list]

Per i progetti specificati, Repo confronta i rami locali con i rami remoti aggiornati durante l'ultima sincronizzazione Repo. Repo 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. Visita il generatore di password per generare una nuova coppia nome utente/password da utilizzare su HTTPS.

Quando Gerrit riceve i dati dell'oggetto sul suo server, trasforma ogni commit in una modifica in modo che i revisori possano commentare un commit specifico. Per combinare diversi commit di checkpoint in un singolo commit, usa 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, usa uno strumento come git rebase -i o git commit --amend per aggiornare i tuoi commit locali. Dopo aver completato le modifiche:

  • Verificare che il ramo aggiornato sia il ramo attualmente estratto.
  • Utilizzare repo upload --replace PROJECT per aprire l'editor di corrispondenza delle modifiche.
  • Per ogni commit nella 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 replacments
    # 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 dispongono di 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 .

Nota: ci sono ritardi di replica su tutti i server in tutto il mondo, quindi c'è un leggero ritardo di mirroring tra quando una modifica è visibile sul Web in Gerrit e quando repo download può trovare la modifica per tutti gli utenti.

per tutti

repo forall [project-list] -c command

Esegue il comando di shell specificato in ogni 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 monitoraggio locale. Usalo se devi passare la revisione 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 pipe ai flussi stdin, stdout e sterr del comando e reindirizzando tutto l'output in un flusso continuo che viene visualizzato in una singola sessione pager.

  • -v : mostra i messaggi che il comando scrive su stderr.

fesso

repo prune [project-list]

Elimina (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, prendi in considerazione l'utilizzo del nome default .

L'argomento project-list specifica quali progetti partecipano a questo ramo dell'argomento.

Nota: un punto ( . ) è una scorciatoia per il progetto nella directory di lavoro corrente.

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 ogni progetto specificato. Visualizza una riga di riepilogo per ciascun file in cui è presente una differenza tra questi tre stati.

Per vedere lo stato solo del ramo corrente, esegui repo status . . Le informazioni sullo stato sono elencate per progetto. Per ogni file nel progetto viene utilizzato un codice di due lettere.

Nella prima colonna, una lettera maiuscola indica in che modo l'area di staging differisce dall'ultimo stato di cui è stato eseguito il commit.

Lettera Senso Descrizione
- Nessun cambiamento Lo stesso in HEAD e index
UN Aggiunto Non in HEAD, in index
M Modificata In HEAD, modificato in index
D Eliminato In HEAD, non in index
R Rinominato Non in HEAD, percorso modificato in index
C Copiato Non in HEAD, copiato da un altro in index
T Modalità cambiata Stesso contenuto in HEAD e index, modalità modificata
U Non unito Conflitto tra HEAD e index; risoluzione richiesta

Nella seconda colonna, una lettera minuscola indica in che modo la directory di lavoro differisce dall'indice.

Lettera Senso Descrizione
- Nuovo/sconosciuto Non nell'indice, nell'albero di lavoro
M Modificata Nell'indice, nell'albero di lavoro, modificato
D Eliminato Nell'indice, non nell'albero di lavoro

Gestione degli errori di 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 appare quando il comando repo start non è stato eseguito all'inizio della sessione. Per ripristinare, puoi controllare l'id del commit, avviare un nuovo ramo e quindi unirlo.