Riferimento al comando Repo

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

L'utilizzo del Repo assume la forma seguente:

repo command options

Gli elementi opzionali sono mostrati tra parentesi [ ]. Ad esempio, molti comandi prendono project-list come argomento. È possibile specificare project-list come una lista di nomi o un elenco di percorsi di 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 tutti i dettagli. Quando Repo è installato, puoi trovare la documentazione più recente che inizia con un riepilogo di tutti i comandi eseguendo:

repo help

È possibile 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' init argomento Repo, che inizializza Repo nella directory corrente. (Vedere 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 .repo/ directory con repository Git per il codice sorgente di Repo ei file manifesto standard di Android.

Opzioni:

  • -u : specificare un URL da cui recuperare un repository manifesto. Il manifesto comune si trova a https://android.googlesource.com/platform/manifest .
  • -m : selezionare un file manifesto all'interno del repository. Se non è selezionato alcun nome manifesta, il valore predefinito è default.xml .
  • -b : specificare una revisione, che è, un particolare manifest-branch .

Nota: Per tutti i restanti comandi di pronti contro termine, la directory di lavoro corrente deve essere o directory principale della .repo/ o di una sottodirectory della directory padre.

sincronizzare

repo sync [project-list]

Download nuovi cambiamenti e aggiorna i file di lavoro nel proprio ambiente locale, essenzialmente realizzare git fetch in tutti i repository Git. Se si esegue repo sync senza argomenti, sincronizza i file per tutti i progetti.

Quando si esegue repo sync , questo è ciò che accade:

  • Se il progetto non è mai stato sincronizzato, quindi repo sync è equivalente a git clone . Tutti i rami nel repository remoto vengono copiati nella directory del progetto locale.

  • Se il progetto è stato sincronizzato prima, allora repo sync è equivalente a:

    git remote update
    git rebase origin/branch
    

    dove branch è il ramo attualmente controllato-out 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 il Git rebase risultati dell'operazione in caso di conflitto di unione, utilizzare i normali comandi Git (ad esempio, git rebase --continue ) per risolvere i conflitti.

Dopo un percorso di successo di repo sync , il codice in progetti specifici sia aggiornato e sincronizzato con il codice nel repository remoto.

Ecco le opzioni chiave. Vedere repo help sync per più:

  • -c : Fetch solo il ramo manifesta corrente dal server.

  • -d : progetti switch specificato indietro alla revisione manifesto. Questo è utile se il progetto è attualmente su un ramo di un argomento, ma la revisione del manifest è temporaneamente necessaria.

  • -f : Procedere con la sincronizzazione altri progetti, anche se un progetto non riesce a sincronizzazione.

  • -j threadcount : Split la sincronizzazione attraverso le discussioni per il completamento più velocemente. Assicurati di non sovraccaricare la tua macchina: lascia un po' di CPU riservata per altre attività. Per visualizzare il numero di CPU disponibili, prima esecuzione: nproc --all

  • -q : eseguire tranquillamente sopprimendo messaggi di stato.

  • -s : Sync per un buon costruire conosciuto come specificato dal manifest-server elemento nel manifesto 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 usare 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 checkpoint in un unico commit, utilizzare git rebase -i prima di eseguire l'upload.

Se si esegue repo upload senza argomenti, cerca tutti i progetti per le modifiche da caricare.

Per modificare le modifiche dopo che sono stati caricati, utilizzare uno strumento come git rebase -i o git commit --amend per aggiornare i commit locali. Al termine delle modifiche:

  • Verificare che il ramo aggiornato sia il ramo attualmente estratto.
  • 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 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 hanno un set di patch aggiuntivo.

Se si desidera caricare solo il momento verificato ramo Git, utilizzare il flag --current-branch (o --cbr in breve).

differenza

repo diff [project-list]

Mostra le modifiche in sospeso tra il commit e l'albero di lavoro utilizzando git diff .

Scarica

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 il cambiamento 23823 nella directory di piattaforma / build:

repo download platform/build 23823

Esecuzione repo sync rimuove qualsiasi impegna recuperato con repo download . Oppure si può controllare il ramo remoto utilizzando git checkout m/master .

Nota: Non ci sono ritardi di replica a tutti i server di tutto il mondo, quindi non c'è un leggero ritardo tra il mirroring quando un cambiamento è visibile sul web in Gerrit e quando repo download riesce a trovare il cambiamento per tutti gli utenti.

per tutti

repo forall [project-list] -c command

Esegue il comando di shell dato in ogni progetto. Le seguenti variabili di ambiente aggiuntive sono resi disponibili repo forall :

  • REPO_PROJECT è impostato il nome univoco del progetto.

  • REPO_PATH è il percorso relativo alla radice del client.

  • REPO_REMOTE è il nome del sistema remoto dal manifesto.

  • REPO_LREV è il nome della revisione del manifesto, tradotto in un ramo di monitoraggio locale. Usalo se devi passare la revisione del manifest a un comando Git eseguito localmente.

  • REPO_RREV è il nome della revisione del manifesto, esattamente come scritto nel manifesto.

Opzioni:

  • -c : Comando e gli argomenti da eseguire. Il comando viene valutata tramite /bin/sh e qualsiasi argomento dopo che sono passati attraverso come parametri posizionali shell.

  • -p : intestazioni Visualizza progetto prima output del comando specificato. Ciò si ottiene associando le 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 di cercapersone.

  • -v : Mostra messaggi il comando scrive su stderr.

fesso

repo prune [project-list]

Elimina (elimina) gli argomenti già uniti.

cominciare

repo start
branch-name [project-list]

Inizia un nuovo ramo per lo sviluppo, a partire dalla revisione specificata nel manifest.

Il BRANCH_NAME argomento fornisce una breve descrizione della modifica che si sta cercando di fare ai progetti. Se non si conosce, è possibile utilizzare il nome default .

Il project-list argomento specifica che i progetti partecipano a questo ramo argomento.

Nota: (.) Periodo A è 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 ogni file in cui è presente una differenza tra questi tre stati.

Per visualizzare lo stato del proprio 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 in che modo l'area di staging differisce dall'ultimo stato impegnato.

Lettera Significato Descrizione
- Nessun cambiamento Lo stesso in HEAD e index
UN Aggiunto Non in HEAD, nell'indice
m Modificato In HEAD, modificato nell'indice
D Eliminato In HEAD, non nell'indice
R Rinominato Non in HEAD, percorso cambiato nell'indice
C copiato Non in HEAD, copiato da un altro nell'indice
T Modalità cambiata Stesso contenuto in HEAD e indice, modalità cambiata
tu non fuso 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 Significato Descrizione
- Nuovo/sconosciuto Non nell'indice, nell'albero di lavoro
m Modificato Nell'indice, nell'albero di 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 appare quando il comando repo start non è stato eseguito all'inizio della sessione. Per recuperare, puoi controllare l'ID commit, avviare un nuovo ramo e quindi unirlo.