Referencia del comando Repo

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

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

repo help

Proporciona ayuda sobre el comando repo . Puede ver información detallada sobre un comando de repositorio específico especificando un comando como opción:

repo help command

Por ejemplo, el siguiente comando proporciona una descripción y una lista de opciones para el comando init :

repo help init

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

repo command --help

Por ejemplo:

repo init --help

en eso

repo init -u url [options]

Instala Repo en el directorio actual. Este comando 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.

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 desprotegida actual 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.

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.

Opciones clave:

  • -c : recupera solo la rama del manifiesto actual del servidor.
  • -d : cambia los proyectos especificados a la revisión del manifiesto. Esta opción es útil si el proyecto está 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.
  • 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.

Para obtener más opciones, ejecute repo help sync .

subir

repo upload [project-list]

Carga cambios en el servidor de revisión. 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. Para generar un nuevo par de nombre de usuario/contraseña para usar a través de HTTPS, visite el Generador de contraseñas .

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 desprotegida actual.
  • 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 replacements
    # 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 platform/build :

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 .

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. Utilice esta variable 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.

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 solo el estado 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

Manejar 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 el ID de confirmación, iniciar una nueva rama y luego fusionarla.