Guía Práctica: Flujo de Trabajo con Git y GitHub

Introducción a Git y GitHub

Piensa en este proceso como si estuvieras editando un documento muy importante en equipo. No quieres que tus cambios se mezclen con los de los demás sin control. Git es la herramienta que pone orden y GitHub es la plataforma donde ese documento vive en la nube.

Esta guía te ayudará a entender el flujo de trabajo estándar en Orthidal para asegurar una colaboración fluida y sin conflictos.

Parte 1: La "Primera Vez" (Configuración Inicial)

Esto es algo que solo haces una vez en tu ordenador para empezar a trabajar con un nuevo proyecto. El objetivo es obtener una copia local del repositorio de GitHub.

Paso 1: Clonar el repositorio (`git clone`)

¿Qué es? Es como "Descargar" el proyecto completo de GitHub a tu ordenador. Crea una carpeta con todo el código y su historial.

git clone <url del repositorio>
Ejemplo: `git clone https://github.com/Infinityloopsistemas/orthidalsync.git`

Resultado: Tendrás una carpeta en tu PC (ej. orthidalsync) que es una copia exacta del repositorio remoto.

Parte 2: El Ciclo de Trabajo (La "Segunda Vez" y Siguientes)

Esto es lo que harás **cada vez que vayas a empezar una nueva tarea** (una nueva funcionalidad, una corrección, etc.). Este ciclo asegura que siempre trabajes sobre la versión más actualizada del código y que tus cambios estén aislados en su propia "rama".

Paso 1: Sincronizar con la Versión Estable (`git checkout` y `git pull`)

¿Qué es? Antes de empezar a escribir código, tienes que asegurarte de que tienes la última versión del proyecto. Es como "buscar actualizaciones" antes de empezar.

git checkout 12.0
git pull
Te mueves a la rama principal/estable y descargas los cambios de otros.

¿Por qué es crucial? Para evitar conflictos y asegurarte de que no estás trabajando sobre una versión antigua del código.

Paso 2: Crear tu Rama de Trabajo (`git checkout -b`)

¿Qué es? Una "rama" es una copia personal de la rama principal donde puedes hacer tus cambios sin afectar el trabajo de los demás. **Siempre debes crear una nueva rama para cada tarea nueva.**

git checkout -b <nombre-de-tu-rama>
Buenas prácticas para el nombre: usa nombres descriptivos, como `feat/bloqueo-fecha-factura` o `fix/error-calculo-impuestos`.

Paso 3: Trabajar y Guardar tus Cambios (`git add` y `git commit`)

¿Qué es? Aquí es donde creas o modificas los archivos de código. Una vez que has terminado una parte lógica, la "guardas" en el historial de Git.

git add .
git commit -m "Un mensaje que describe lo que has hecho"
git add . prepara todos los archivos modificados. git commit -m "..." guarda los cambios en tu rama local.

Paso 4: Compartir tu Trabajo (`git push`)

¿Qué es? Subes tu rama con tus cambios guardados (commits) al repositorio de GitHub para que los demás puedan verla y, eventualmente, integrarla.

git push
La primera vez que subes una rama nueva, puede que necesites un comando más largo (ej. git push --set-upstream origin <nombre-de-tu-rama>), la terminal te lo sugerirá.

Una vez que has hecho `git push`, tu trabajo para esa tarea ha terminado. Para la siguiente tarea, vuelves a empezar el ciclo desde el **Paso 1: Sincronizar**.

Ejemplo Práctico Completo: Tres Tareas Reales

Vamos a simular el proceso completo desde cero con ejemplos de tareas reales en Odoo.

Tarea 1: La Primera Vez - Clonar el Repositorio

Abres tu terminal en tu carpeta DEV.

# Paso 1: Clonas el repositorio por primera y única vez.
git clone https://github.com/Infinityloopsistemas/orthidalsync.git

# Te mueves dentro de la nueva carpeta.
cd orthidalsync
Resultado: Ya tienes el proyecto en tu PC.

Tarea 2: La Segunda Vez - Añadir Bloqueo de Fecha en Facturas

Tu proveedor te pide que implementes la acción automática que hicimos.

# Paso 1: Te aseguras de estar en la rama principal.
git checkout 12.0

# Paso 1 (cont.): Bajas los últimos cambios (aunque sea la primera vez, es una buena práctica).
git pull

# Paso 2: Creas una nueva rama para esta funcionalidad.
git checkout -b feat/bloqueo-fecha-factura

# Paso 3 (a): Trabajas en el código.
#   - Creas el archivo: orthidalit/data/automation_invoice_date_check.xml
#   - Modificas el archivo: orthidalit/__manifest__.py
#   - ... (implementas la lógica de bloqueo de fecha)

# Paso 3 (b): Verificas y guardas tus cambios.
# Ves qué archivos has modificado.
git status 
# Debería mostrarte los dos archivos anteriores en rojo.

# Preparas los archivos para guardarlos.
git add .

# Guardas los cambios con un mensaje descriptivo.
git commit -m "feat(Contabilidad): Añadir bloqueo automático de fecha en facturas de proveedor"

# Paso 4: Subes tu rama a GitHub.
# La primera vez que subes esta rama, usas el comando completo.
git push --set-upstream origin feat/bloqueo-fecha-factura
Resultado: Has subido tu primera funcionalidad. Tu proveedor la revisará y la integrará en la rama 12.0.

Tarea 3: La Tercera Vez - Añadir un Campo a la Vista de Ventas

Ahora tu proveedor te pide añadir un nuevo campo en los pedidos de venta.

# Paso 1: Vuelves a la rama principal.
git checkout 12.0

# Paso 1 (cont.): ¡MUY IMPORTANTE! Bajas los últimos cambios. 
# Esto descargará a tu rama local la funcionalidad anterior (el bloqueo de facturas) 
# que tu proveedor ya ha integrado.
git pull

# Paso 2: Creas OTRA nueva rama para esta OTRA nueva tarea.
git checkout -b feat/campo-extra-vista-venta

# Paso 3 (a): Trabajas en el código.
#   - Creas un nuevo archivo de vista: orthidalit/views/sale_order_view_extension.xml
#   - Modificas de nuevo el archivo: orthidalit/__manifest__.py para añadir la nueva vista.

# Paso 3 (b): Verificas y guardas tus cambios.
git status
git add .
git commit -m "feat(Ventas): Añadir campo de referencia externa en el formulario de pedido"

# Paso 4: Subes tu nueva rama a GitHub.
git push --set-upstream origin feat/campo-extra-vista-venta
Resultado: Has completado una segunda tarea. Como puedes ver, el ciclo se repite: actualizar, crear rama, trabajar, guardar y subir.