Flujo de trabajo de control de fuente

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:

  1. Inicie una nueva rama de tema usando repo start .
  2. Edite los archivos.
  3. Cambios de etapa usando git add .
  4. Confirme los cambios usando git commit .
  5. 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:

  1. Vea los archivos que no están fusionados (código de estado = U).
  2. Edite las regiones en conflicto según sea necesario.
  3. 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
    
  4. 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.