Referencia del comando Repo

Repo complementa a Git al simplificar el trabajo en múltiples repositorios. Consulte Herramientas de control de código fuente para obtener una explicación de la relación entre Repo y Git. Para obtener más detalles sobre Repo, consulte el archivo README del repositorio .

El uso del repositorio toma la siguiente forma:

repo command options

Los elementos opcionales se muestran entre paréntesis [ ]. Por ejemplo, muchos comandos toman project-list como argumento. Puede especificar project-list como una lista de nombres o una lista de rutas a directorios de origen locales para los proyectos:

repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

ayuda

Esta página simplemente destaca las opciones clave. Consulte la ayuda de la línea de comandos para obtener todos los detalles. Cuando Repo está instalado, puede encontrar la documentación más reciente comenzando con un resumen de todos los comandos ejecutando:

repo help

Puede ver información detallada sobre cualquier comando ejecutando esto dentro de un árbol de repositorio:

repo help command

Por ejemplo, el siguiente comando proporciona una descripción y una lista de opciones para el argumento init de Repo, que inicializa Repo en el directorio actual. (Consulte inicio para obtener más detalles).

repo help init

O para ver sólo la lista de opciones disponibles, ejecute:

repo command --help
Por ejemplo:
repo init --help

en eso

repo init -u url [options]

Instala Repo en el directorio actual. Esto crea un directorio .repo/ con repositorios Git para el código fuente de Repo y los archivos de manifiesto estándar de Android.

Opciones:

  • -u : especifica una URL desde la cual recuperar un repositorio de manifiesto. El manifiesto común se encuentra en https://android.googlesource.com/platform/manifest .
  • -m : selecciona un archivo de manifiesto dentro del repositorio. Si no se selecciona ningún nombre de manifiesto, el valor predeterminado es default.xml .
  • -b : especifica una revisión, es decir, una manifest-branch particular.

Nota: Para todos los comandos restantes de Repo, el directorio de trabajo actual debe ser el directorio principal de .repo/ o un subdirectorio del directorio principal.

sincronizar

repo sync [project-list]

Descarga nuevos cambios y actualiza los archivos de trabajo en su entorno local, esencialmente logrando git fetch en todos los repositorios de Git. Si ejecuta repo sync sin argumentos, sincroniza los archivos de todos los proyectos.

Cuando ejecutas repo sync , esto es lo que sucede:

  • Si el proyecto nunca se ha sincronizado, entonces repo sync es equivalente a git clone . Todas las ramas del repositorio remoto se copian en el directorio del proyecto local.

  • Si el proyecto se ha sincronizado antes, repo sync es equivalente a:

    git remote update
    git rebase origin/branch
    

    donde branch es la rama actualmente desprotegida en el directorio del proyecto local. Si la sucursal local no realiza un seguimiento de una sucursal en el repositorio remoto, no se produce ninguna sincronización para el proyecto.

  • Si la operación de rebase de Git genera conflictos de fusión, utilice los comandos normales de Git (por ejemplo, git rebase --continue ) para resolver los conflictos.

Después de una ejecución exitosa de repo sync , el código de los proyectos especificados está actualizado y sincronizado con el código del repositorio remoto.

Aquí hay opciones clave. Consulte repo help sync para obtener más información:

  • -c : recupera solo la rama del manifiesto actual del servidor.

  • -d : cambia los proyectos especificados a la revisión del manifiesto. Esto es útil si el proyecto se encuentra actualmente en una rama temática, pero la revisión del manifiesto se necesita temporalmente.

  • -f : continúa con la sincronización de otros proyectos incluso si un proyecto no se sincroniza.

  • -j threadcount : divide la sincronización entre subprocesos para una finalización más rápida. Asegúrese de no saturar su máquina; deje algo de CPU reservada para otras tareas. Para ver la cantidad de CPU disponibles, primero ejecute: nproc --all

  • -q : se ejecuta silenciosamente suprimiendo los mensajes de estado.

  • -s : sincronización con una compilación buena conocida según lo especificado por el elemento manifest-server en el manifiesto actual.

subir

repo upload [project-list]

Para los proyectos especificados, Repo compara las sucursales locales con las sucursales remotas actualizadas durante la última sincronización del Repo. Repo le solicita que seleccione una o más de las ramas que no se han cargado para su revisión.

Todas las confirmaciones en las ramas seleccionadas se transmiten a Gerrit a través de una conexión HTTPS. Debe configurar una contraseña HTTPS para habilitar la autorización de carga. Visite el Generador de contraseñas para generar un nuevo par de nombre de usuario/contraseña para usar a través de HTTPS.

Cuando Gerrit recibe los datos del objeto a través de su servidor, convierte cada confirmación en un cambio para que los revisores puedan comentar sobre una confirmación específica. Para combinar varias confirmaciones de puntos de control en una sola confirmación, use git rebase -i antes de ejecutar la carga.

Si ejecuta repo upload sin argumentos, busca en todos los proyectos cambios para cargar.

Para editar los cambios después de haberlos cargado, use una herramienta como git rebase -i o git commit --amend para actualizar sus confirmaciones locales. Una vez completadas las ediciones:

  • Verifique que la rama actualizada sea la rama actualmente desprotegida.
  • Utilice repo upload --replace PROJECT para abrir el editor de coincidencia de cambios.
  • Para cada confirmación de la serie, ingrese el ID de cambio de Gerrit dentro de los corchetes:
    # 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.
    

Una vez completada la carga, los cambios tienen un conjunto de parches adicional.

Si desea cargar solo la rama Git actualmente desprotegida, use la bandera --current-branch (o --cbr para abreviar).

diferencia

repo diff [project-list]

Muestra cambios destacados entre la confirmación y el árbol de trabajo usando git diff .

descargar

repo download target change

Descarga el cambio especificado del sistema de revisión y lo pone a disposición en el directorio de trabajo local de su proyecto.

Por ejemplo, para descargar el cambio 23823 en su directorio de plataforma/compilación:

repo download platform/build 23823

La ejecución repo sync elimina cualquier confirmación recuperada con repo download . O puede consultar la sucursal remota usando git checkout m/main .

Nota: Hay retrasos en la replicación en todos los servidores del mundo, por lo que hay un ligero retraso en la duplicación entre el momento en que un cambio es visible en la web en Gerrit y el momento en que repo download puede encontrar el cambio para todos los usuarios.

para todos

repo forall [project-list] -c command

Ejecuta el comando de shell dado en cada proyecto. Las siguientes variables de entorno adicionales están disponibles mediante repo forall :

  • REPO_PROJECT se establece con el nombre único del proyecto.

  • REPO_PATH es la ruta relativa a la raíz del cliente.

  • REPO_REMOTE es el nombre del sistema remoto del manifiesto.

  • REPO_LREV es el nombre de la revisión del manifiesto, traducido a una rama de seguimiento local. Úselo si necesita pasar la revisión del manifiesto a un comando Git ejecutado localmente.

  • REPO_RREV es el nombre de la revisión del manifiesto, exactamente como está escrito en el manifiesto.

Opciones:

  • -c : Comando y argumentos a ejecutar. El comando se evalúa a través de /bin/sh y cualquier argumento posterior se pasa como parámetro posicional del shell.

  • -p : muestra los encabezados del proyecto antes de la salida del comando especificado. Esto se logra vinculando tuberías a las secuencias stdin, stdout y sterr del comando, y canalizando toda la salida en una secuencia continua que se muestra en una única sesión de buscapersonas.

  • -v : muestra los mensajes que el comando escribe en stderr.

ciruela pasa

repo prune [project-list]

Elimina (elimina) temas que ya están fusionados.

comenzar

repo start
branch-name [project-list]

Comienza una nueva rama para el desarrollo, a partir de la revisión especificada en el manifiesto.

El argumento BRANCH_NAME proporciona una breve descripción del cambio que intenta realizar en los proyectos. Si no lo sabe, considere usar el nombre default .

El argumento de la project-list especifica qué proyectos participan en esta rama de tema.

Nota: Un punto ( . ) es una abreviatura del proyecto en el directorio de trabajo actual.

estado

repo status [project-list]

Compara el árbol de trabajo con el área de preparación (índice) y la confirmación más reciente en esta rama (HEAD) en cada proyecto especificado. Muestra una línea de resumen para cada archivo donde hay una diferencia entre estos tres estados.

Para ver el estado solo de la rama actual, ejecute repo status . . La información de estado se enumera por proyecto. Para cada archivo del proyecto, se utiliza un código de dos letras.

En la primera columna, una letra mayúscula indica en qué se diferencia el área de preparación del último estado comprometido.

Carta Significado Descripción
- Ningún cambio Lo mismo en HEAD e índice
A Agregado No en HEAD, en índice
METRO Modificado En HEAD, modificado en índice
D Eliminado En HEAD, no en índice
R Renombrado No en HEAD, la ruta cambió en el índice
C Copiado No en HEAD, copiado de otro en el índice
t Modo cambiado Mismo contenido en HEAD e índice, modo cambiado
Ud. no fusionado Conflicto entre HEAD e índice; resolución requerida

En la segunda columna, una letra minúscula indica en qué se diferencia el directorio de trabajo del índice.

Carta Significado Descripción
- Nuevo/desconocido No en índice, en árbol de trabajo.
metro Modificado En índice, en árbol de trabajo, modificado
d Eliminado En índice, no en árbol de trabajo

Manejo de errores de repositorio

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 .

El error repo: error: no branches ready for upload aparece cuando el comando repo start no se ejecutó al inicio de la sesión. Para recuperar, puede verificar la identificación de confirmación, iniciar una nueva rama y luego fusionarla.