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 enhttps://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 esdefault.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 agit 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 ejecutenproc --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 elementomanifest-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.