Flujo de trabajo de control de fuente

Para trabajar con código de Android, necesitas Git (sistema de control de versiones de código abierto) y Repo (herramienta de administración de repositorios creada por Google que se ejecuta en Git). En Herramientas de control de código 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 nueva rama de tema con repo start.
  2. Edita los archivos.
  3. Habilita a etapa los cambios con git add.
  4. Confirma los cambios con git commit.
  5. Sube los cambios en el servidor de revisión con repo upload.

Tareas

Trabajar con Git y Repo en los 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 Habilita a etapa los archivos.
git commit Confirma los archivos habilitados a etapa.
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 sin habilitar a etapa.
git diff --cached Muestra la diferencia de los cambios habilitados a etapa.
git log Muestra el historial de la rama 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, consulta Descarga de código fuente y la Referencia de comandos de Repo.

Sincronización de clientes

A fin de sincronizar los archivos para todos los proyectos disponibles, ejecuta lo siguiente:

repo sync

A fin de sincronizar los archivos para los proyectos seleccionados, ejecuta lo siguiente:

    repo sync PROJECT0 PROJECT1 ... PROJECTN
    

Cómo crear de ramas de tema

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

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 que se encuentra en el directorio de trabajo actual.

Para verificar que se creó la nueva rama, 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 ingresa 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 muestran la lista de las ramas existentes con el nombre de la rama actual precedido por un asterisco (*).

Cómo habilitar archivos a etapa

De forma predeterminada, Git detecta, pero no hace un seguimiento de los cambios que realizas en un proyecto. Para indicarle a Git que conserve los cambios, debes marcarlos o habilitarlos a etapa a fin de incluirlos en una confirmación.

Para habilitar los cambios a etapa, ejecuta lo siguiente:

    git add
    

Este comando acepta argumentos para archivos o directorios que se encuentran 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 habilitar a etapa 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 la confirmación), ejecuta lo siguiente:

    repo diff
    

Para ver las ediciones confirmadas (ediciones ubicadas que están marcadas para confirmar), 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

La confirmación es la unidad básica de control de revisiones en Git y consiste en una instantánea de la estructura del directorio y el contenido de los archivos de todo el proyecto. Para crear una confirmación en Git, ejecuta lo siguiente:

    git commit
    

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

Cómo subir cambios a Gerrit

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

    repo sync
    repo upload
    

Estos comandos muestran la lista de cambios que confirmaste y te 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 muestra 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, ajusta 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 tu directorio de trabajo local y usa repo prune para quitar de manera segura las ramas de temas inactivas:

    repo sync
    repo prune
    

Cómo borrar clientes

Como en tu cliente se almacena toda la información de estado, 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 su revisión.