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 --helpPor 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 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.
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 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 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.