Trabajar con código de Android requiere el uso de Git (un sistema de control de versiones de código abierto) y Repo (una herramienta de administración de repositorios creada por Google que se ejecuta sobre Git). Consulte Herramientas de control de código fuente para obtener una explicación de la relación entre Repo y Git y enlaces a la documentación de respaldo para cada herramienta.
Fluir
El desarrollo de Android implica el siguiente flujo de trabajo básico:
- Inicie una nueva rama de tema usando
repo start
. - Edite los archivos.
- Cambios de etapa usando
git add
. - Confirme los cambios usando
git commit
. - Cargue los cambios al servidor de revisión mediante
repo upload
.
Tareas
Trabajar con Git y Repo en los repositorios de código de Android implica realizar las siguientes tareas comunes.
Dominio | Descripción |
---|---|
repo init | Inicializa un nuevo cliente. |
repo sync | Sincroniza el cliente con los repositorios. |
repo start | Inicia una nueva sucursal. |
repo status | Muestra el estado de la sucursal actual. |
repo upload | Carga cambios en el servidor de revisión. |
git add | Prepara los archivos. |
git commit | Confirma los archivos preparados. |
git branch | Muestra las ramas actuales. |
git branch [branch] | Crea una nueva rama de tema. |
git checkout [branch] | Cambia HEAD a la rama especificada. |
git merge [branch] | Fusiona [branch] con la rama actual. |
git diff | Muestra diferencias de los cambios no realizados. |
git diff --cached | Muestra diferencias de los cambios escenificados. |
git log | Muestra el historial de la sucursal actual. |
git log m/[codeline].. | Muestra las confirmaciones que no se envían. |
Para obtener información sobre el uso de Repo para descargar el código fuente, consulte Descarga del código fuente y Referencia de comandos de Repo .
Sincronización de clientes
Para sincronizar los archivos de todos los proyectos disponibles:
repo sync
Para sincronizar los archivos de los proyectos seleccionados:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Crear ramas temáticas
Inicie una rama de tema en su entorno de trabajo local cada vez que comience un cambio, como cuando comience a trabajar en un error o una nueva característica. Una rama de tema no es una copia de los archivos originales; es un puntero a una confirmación particular, lo que hace que crear sucursales locales y cambiar entre ellas sea una operación liviana. Al utilizar ramas, puedes aislar un aspecto de tu trabajo de los demás. Para obtener un artículo interesante sobre el uso de ramas de temas, consulte Separación de ramas de temas .
Para iniciar una rama de tema usando Repo, navegue hasta el proyecto y ejecute:
repo start BRANCH_NAME .
El punto final ( .
) representa el proyecto en el directorio de trabajo actual.
Para verificar que se creó la nueva rama:
repo status .
Usando ramas temáticas
Para asignar la rama a un proyecto específico:
repo start BRANCH_NAME PROJECT_NAME
Para obtener una lista de todos los proyectos, consulte android.googlesource.com . Si ya navegó al directorio del proyecto, simplemente use un punto para representar el proyecto actual.
Para cambiar a otra sucursal en su entorno de trabajo local:
git checkout BRANCH_NAME
Para ver una lista de sucursales existentes:
git branch
o
repo branches
Ambos comandos devuelven la lista de sucursales existentes con el nombre de la sucursal actual precedido por un asterisco (*).
Archivos provisionales
De forma predeterminada, Git nota pero no realiza un seguimiento de los cambios que realizas en un proyecto. Para indicarle a Git que conserve sus cambios, debe marcar o preparar esos cambios para incluirlos en una confirmación.
Para realizar cambios en escena:
git add
Este comando acepta argumentos para archivos o directorios dentro del directorio del proyecto. A pesar del nombre, git add
no solo agrega archivos al repositorio de Git; También se puede utilizar para realizar modificaciones y eliminaciones de archivos.
Ver el estado del cliente
Para enumerar el estado de los archivos:
repo status
Para ver ediciones no confirmadas (ediciones locales que no están marcadas para confirmación):
repo diff
Para ver las ediciones confirmadas (ediciones ubicadas que están marcadas para confirmación), asegúrese de estar en el directorio del proyecto y luego ejecute git diff
con el argumento cached
:
cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached
Cometer cambios
Una confirmación es la unidad básica de control de revisiones en Git y consta de una instantánea de la estructura del directorio y el contenido del archivo para todo el proyecto. Utilice este comando para crear una confirmación en Git:
git commit
Cuando se le solicite un mensaje de confirmación, proporcione un mensaje breve (pero útil) para los cambios enviados a AOSP. Si no agrega un mensaje de confirmación, la confirmación falla.
Subiendo cambios a Gerrit
Actualice a la última revisión y luego cargue el cambio:
repo sync
repo upload
Estos comandos devuelven una lista de los cambios que ha realizado y le solicitan que seleccione las ramas para cargar en el servidor de revisión. Si solo hay una rama, verá un mensaje simple y/n
.
Resolver conflictos de sincronización
Si el comando repo sync
devuelve conflictos de sincronización:
- Vea los archivos que no están fusionados (código de estado = U).
- Edite las regiones en conflicto según sea necesario.
- Cambie al directorio del proyecto correspondiente. Agregue y confirme los archivos afectados, luego cambie la base de los cambios:
git add .
git commit
git rebase --continue
- Una vez que se complete la rebase, inicie toda la sincronización nuevamente:
repo sync PROJECT0 PROJECT1 ... PROJECTN
Limpiando clientes
Después de fusionar los cambios en Gerrit, actualice su directorio de trabajo local y luego use repo prune
para eliminar de forma segura las ramas de temas obsoletas:
repo sync
repo prune
Eliminar clientes
Debido a que toda la información de estado se almacena en su cliente, solo necesita eliminar el directorio de su sistema de archivos:
rm -rf WORKING_DIRECTORY
Al eliminar un cliente, se eliminan permanentemente todos los cambios que no haya cargado para su revisión.