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:
- Inicia una rama nueva de tema con
repo start
. - Edita los archivos.
- Almacena los cambios en etapa intermedia con
git add
. - Confirma los cambios con
git commit
. - 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 |
Almacena los archivos en etapa intermedia. |
git commit |
Confirma los archivos que se habían almacenado en etapa intermedia. |
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 almacenaron en etapa intermedia. |
git diff --cached |
Muestra la diferencia de los cambios que se almacenaron en etapa intermedia. |
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 almacenar archivos en etapa intermedia
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 almacenar los cambios en etapa intermedia, 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 almacenar en etapa intermedia 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 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, 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:
- Detecta los archivos que están separados (código de estado = U).
- Edita las regiones de conflicto según sea necesario.
- Cambia al directorio del proyecto relevante. Agrega y confirma los archivos afectados y, luego, reajusta los cambios:
git add .
git commit
git rebase --continue
- 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.