Flujo de trabajo de control de fuente

Para trabajar con código de Android, necesitas usar 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 en Git). En Herramientas de control de fuente, puedes obtener una explicación sobre la relación entre Repo y Git, y vínculos a documentación de asistencia para cada herramienta.

Flujo

El desarrollo de Android implica el siguiente flujo de trabajo básico:

  1. Inicia una rama nueva de tema con repo start.
  2. Edita los archivos.
  3. Agregar los cambios a la etapa previa con git add.
  4. Confirma los cambios con git commit.
  5. Sube los cambios al servidor de revisión con repo upload.

Tareas

Trabajar con Git y Repo en repositorios de código de Android implica realizar las siguientes tareas comunes.

Comando Descripción
repo init Inicializa un cliente nuevo.
repo sync Sincroniza el cliente con los repositorios.
repo start Inicia una nueva rama.
repo status Muestra el estado de la rama actual.
repo upload Sube los cambios al servidor de revisión.
git add Agrega los archivos a la etapa previa.
git commit Confirma los archivos que se habían agregado a la etapa previa.
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] Agrega [branch] en la rama actual.
git diff Muestra la diferencia de los cambios que no se agregaron a la etapa previa.
git diff --cached Muestra la diferencia de los cambios que se agregaron a la etapa previa.
git log Muestra el historial de la rama actual.
git log m/[codeline].. Muestra las confirmaciones que no se envían.

Si quieres obtener información sobre el uso de Repo para descargar la fuente, consulta Cómo descargar la fuente y la Referencia de comandos de Repo.

Sincronización de clientes

Para sincronizar los archivos de todos los proyectos disponibles, ejecuta lo siguiente:

repo sync

Para sincronizar los archivos de los proyectos seleccionados, ejecuta lo siguiente:

repo sync PROJECT0 PROJECT1 ... PROJECTN

Cómo crear ramas de temas

Inicia una rama de tema en tu entorno de trabajo local cada vez que comiences con un cambio (por ejemplo, si quieres trabajar en un error o una función nueva). Una rama de tema no es una copia de los archivos originales, sino que funciona como puntero de una confirmación en particular; por lo tanto, crear ramas locales y alternar entre ellas es una operación simple. Cuando usas ramas, puedes aislar un aspecto de tu trabajo de los demás. Lee este artículo interesante sobre cómo usar ramas de tema: Separating topic branches.

Para iniciar una rama de tema con Repo, navega al proyecto y ejecuta lo siguiente:

repo start BRANCH_NAME .

El punto final ( .) representa el proyecto en el directorio de trabajo actual.

Para verificar que se haya creado la rama nueva, ejecuta lo siguiente:

repo status .

Cómo usar ramas de temas

Para asignar la rama a un proyecto específico, ejecuta lo siguiente:

repo start BRANCH_NAME PROJECT_NAME

Puedes ver la lista completa de proyectos en android.googlesource.com. Si ya navegaste al directorio del proyecto, solo usa un punto para representar el proyecto actual.

Para cambiar a otra rama en tu entorno de trabajo local, ejecuta lo siguiente:

git checkout BRANCH_NAME

Para ver una lista de las ramas existentes, ejecuta lo siguiente:

git branch

o

repo branches

Ambos comandos devuelven la lista de las ramas existentes con el nombre de la rama actual precedido por un asterisco (*).

Cómo agregar archivos a la etapa previa

De forma predeterminada, Git detecta los cambios que realizas en un proyecto, pero no hace un seguimiento de ellos. Para indicarle a Git que conserve los cambios, debes marcarlos o almacenarlos en etapa intermedia, para que luego se incluyan en una confirmación.

Para agregar los cambios a la etapa previa, ejecuta lo siguiente:

git add

El comando acepta argumentos para archivos o directorios que están dentro del directorio del proyecto. A pesar del nombre, git add no solo agrega archivos al repositorio de Git; también se puede usar para agregar a la etapa previa modificaciones y eliminaciones de archivos.

Cómo ver el estado del cliente

Para ver el estado de los archivos, ejecuta lo siguiente:

repo status

Para ver ediciones no confirmadas (ediciones locales que no están marcadas para su confirmación), ejecuta lo siguiente:

repo diff

Para ver las ediciones confirmadas (ediciones ubicadas que están marcadas para su confirmación), asegúrate de estar en el directorio del proyecto y ejecutar git diff con el argumento cached:

cd ~/WORKING_DIRECTORY/PROJECT
git diff --cached

Cómo confirmar cambios

Una confirmación es la unidad básica de control de revisiones en Git y consiste en un resumen de la estructura del directorio y el contenido de los archivos de todo el proyecto. Para crear una confirmación en Git, usa este comando:

git commit

Cuando se solicite un mensaje de confirmación, proporciona uno que sea corto (pero útil) para los cambios enviados al AOSP. Si no agregas un mensaje de confirmación, la confirmación fallará.

.

Cómo subir cambios a Gerrit

Actualiza a la última revisión y, luego, sube el cambio:

repo sync
repo upload

Estos comandos devuelven la lista de cambios que confirmaste y solicitan que selecciones las ramas que subirás al servidor de revisión. Si solo hay una rama, verás un mensaje y/n simple.

Cómo resolver conflictos de sincronización

Si el comando repo sync devuelve conflictos de sincronización, ejecuta lo siguiente:

  1. Detecta los archivos que están separados (código de estado = U).
  2. Edita las regiones de conflicto según sea necesario.
  3. Cambia al directorio del proyecto relevante. Agrega y confirma los archivos afectados y, luego, reajusta los cambios:
    git add .
    git commit
    git rebase --continue
    
  4. Después de que se complete el ajuste, vuelve a iniciar por completo la sincronización:
    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

Cómo limpiar clientes

Después de combinar los cambios en Gerrit, actualiza el directorio de trabajo local y usa repo prune para quitar las ramas de temas inactivas de manera segura:

repo sync
repo prune

Cómo borrar clientes

Como se almacena toda la información de estado en tu cliente, solo tienes que borrar el directorio de tu sistema de archivos:

rm -rf WORKING_DIRECTORY

Si borras un cliente, se borrarán de forma permanente los cambios que no hayas subido para revisión.