Riferimento comando repository

Il repository completa Git semplificando il lavoro in più repository. Per una spiegazione della relazione tra repository e Git, consulta Strumenti di controllo del codice sorgente. Per ulteriori dettagli sul repository, consulta README del repository

L'utilizzo dei repository ha il seguente formato:

repo command options

Gli elementi facoltativi sono mostrati tra parentesi []. Ad esempio, molti comandi prendono project-list come argomento. Puoi specificare project-list come elenco di nomi o come elenco di percorsi verso le 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 per il comando repo. Puoi vedere informazioni dettagliate su un comando repository 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

Inizia

repo init -u url [options]

Installa il repository nella directory attuale. Questo comando crea una directory .repo/ con repository Git per il codice sorgente del repository e i file manifest Android standard.

Opzioni:

  • -u: specifica un URL da cui recuperare un repository di manifest. Il file manifest comune si trova all'indirizzo https://android.googlesource.com/platform/manifest.

  • -m: seleziona un file manifest all'interno del repository. Se non è 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, ottenendo in pratica git fetch in 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 è equivalente a git clone; tutti i rami nel repository remoto vengono copiati nella directory del progetto locale.

  • Se il progetto è stato sincronizzato in precedenza, il valore repo sync equivale a:

    git remote update
    git rebase origin/branch
    

    Dove branch è il ramo di check-out attuale nella directory del progetto locale. Se il ramo locale non sta monitorando 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 chiave:

  • -c: recupera solo il ramo manifest attuale dal server.
  • -d: riporta i progetti specificati alla revisione del file manifest. Questa opzione è utile se il progetto si trova in un ramo di argomento, ma la revisione del manifest è temporaneamente necessaria.
  • -f: procedi con la sincronizzazione degli altri progetti anche se la sincronizzazione di un progetto non va a buon fine.
  • threadcount: suddividi la sincronizzazione tra i thread per un completamento più rapido. Assicurati di non sovraccaricare la macchina: lascia alcune CPU riservate per altre attività. Per vedere il numero di CPU disponibili, esegui prima nproc --all.
  • -q: esecuzione silenziosa eliminando i messaggi di stato.
  • -s: viene eseguita la sincronizzazione con una build nota come specificato dall'elemento manifest-server nel manifest attuale.

Per ulteriori opzioni, esegui repo help sync.

massima

repo upload [project-list]

Carica le modifiche sul server delle recensioni. Per i progetti specificati, il repository confronta i rami locali con quelli remoti aggiornati durante l'ultima sincronizzazione del repository. 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. Devi configurare una password HTTPS per abilitare l'autorizzazione del caricamento. Per generare una nuova coppia nome utente/password da utilizzare tramite HTTPS, visita la pagina Password generator.

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 più commit di checkpoint in un unico commit, utilizza git rebase -i prima di eseguire il caricamento.

Se esegui repo upload senza argomenti, la ricerca 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 commit locali. Una volta apportate le modifiche:

  • Verifica che il ramo aggiornato sia quello attualmente selezionato.
  • Usa repo upload --replace PROJECT per aprire l'editor che corrisponde alle modifiche.
  • Per ogni commit della serie, inserisci l'ID modifica Gerrit all'interno delle 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, per le modifiche è stata impostata un'ulteriore patch.

Se vuoi caricare solo il ramo Git attualmente controllato, utilizza 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.

scaricare

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 change 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 controllare il ramo remoto utilizzando git checkout m/main.

Forall

repo forall [project-list] -c command

Esegue il comando 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 nel file manifest.
  • REPO_LREV è il nome della revisione del file manifest, tradotto in un ramo di monitoraggio locale. Usa questa variabile se devi passare la revisione del manifest a un comando Git eseguito localmente.
  • REPO_RREV è il nome della revisione nel file manifest, esattamente come scritto nel file manifest.

Opzioni:

  • -c: comando e argomenti da eseguire. Il comando viene valutato tramite /bin/sh e gli eventuali argomenti dopo essere stati trasmessi come parametri di posizione della shell.
  • -p: mostra le intestazioni del progetto prima dell'output del comando specificato. A questo scopo, associa le pipeline ai flussi stdin, stdout e sterr del comando e tutto l'output in un flusso continuo che viene visualizzato in un'unica sessione di pagina.
  • -v: mostra i messaggi che il comando scrive in stderr.

prugna

repo prune [project-list]

Elimina (elimina) gli argomenti già uniti.

partenza

repo start branch-name [project-list]

Avvia 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 provando ad apportare ai progetti. In caso di dubbi, puoi utilizzare il nome default.

L'argomento project-list specifica i progetti che partecipano a questo ramo di argomento.

status

repo status [project-list]

Confronta l'albero di lavoro con l'area di gestione temporanea (indice) e il commit più recente su questo ramo (HEAD) in ogni progetto specificato. Visualizza una riga di riepilogo per ogni file in cui esiste una differenza tra questi tre stati.

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

Nella prima colonna, una lettera maiuscola indica le differenze tra l'area di gestione temporanea e l'ultimo stato di cui è stato eseguito il commit.

Lettera Significato Descrizione
- Nessuna influenza Lo stesso in HEAD e indice
A Opzione aggiunta Non in HEAD, nell'indice
L Data di modifica In HEAD, modificato nell'indice
D Eliminati In HEAD, non nell'indice
Dx Rinominato Non in HEAD, percorso modificato nell'indice
C Copiato Non in HEAD, copiato da un altro indice
T Modalità modificata Stessi contenuti in HEAD e indice, modalità modificata
U Divisa Conflitto tra HEAD e indice; risoluzione richiesta

Nella seconda colonna, una lettera minuscola indica le differenze tra la directory di lavoro e l'indice.

Lettera Significato Descrizione
- Nuovo/sconosciuto Non nell'indice, nell'albero del lavoro
M Data di modifica Modificato nell'indice, nell'albero di lavoro
d Eliminati Nell'indice, non nell'albero di lavoro

Gestire gli errori dei 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 il ripristino, puoi controllare l'ID commit, avviare un nuovo ramo e quindi unirlo.