Introducción

Mantener codebases legacy es un dolor de cabeza recurrente en DevOps: dependencias desactualizadas, frameworks obsoletos y migraciones postergadas por el alto costo de tiempo. Un repositorio con React 15, Less y Bootstrap de 2016 no es rareza en entornos de infraestructura, especialmente en proyectos internos o herramientas de apoyo. La modernización manual de estos sistemas puede tomar semanas, con riesgo de introducir breaking changes en código crítico. Las Stacked Sessions y los pull requests integrados en la app de GitHub Copilot ofrecen una forma sistemática de abordar este problema, descomponiendo la migración en tareas incrementales y gestionables.

Esta guía te muestra cómo usar estas funcionalidades para actualizar un repositorio paso a paso, desde la planificación hasta la creación de PRs automáticos, minimizando el riesgo y el esfuerzo manual. El enfoque es aplicable a cualquier proyecto, pero resulta especialmente útil para equipos que mantienen aplicaciones en EKS o otros entornos cloud donde la estabilidad es prioridad.

Qué es y para qué sirve

Stacked Sessions son sesiones de GitHub Copilot que se ejecutan secuencialmente, donde cada una parte del estado final de la anterior. Esto permite dividingr una tarea compleja (como modernizar un codebase) en subtareas lógicas: actualizar dependencias, migrar el frontend, refactorizar APIs, etc. Cada sesión genera un commit, y al final se crea un pull request que agrupa todos los cambios.

El flujo es:

  1. Planificación: Definís una lista de tareas ordenadas (ej: «Actualizar React a v18», «Reemplazar Less por Sass»).
  2. Ejecución: GitHub Copilot procesa cada tarea en una sesión separada, reutilizando el contexto de la anterior.
  3. Revisión: Cada session genera un diff que podés revisar antes de continuar.
  4. Integración: Al finalizar, se crea un PR con todos los commits, listo para code review.

El beneficio clave es reduir la complejidad: en lugar de abordar todo de una vez (y lidiar con conflictos masivos), cada paso trabaja sobre un estado estable. Además, los PRs automáticos facilitan la revisión incremental y el control de calidad.

Prerequisitos

  • GitHub Copilot app (no el extension de VS Code): instalada desde github.com (requiere suscripción a Copilot Pro o Enterprise).
  • Repositorio en GitHub: con acceso de escritura para tu usuario.
  • Branch base: un branch estable (ej: main o master) desde el cual crear las sesiones. Asegurate de que:
– No tenga conflictos no resueltos.

– Sea el branch que usás en producción (para evitar divergencias).

  • Conocimientos básicos:
– Git (commits, branches, pull requests).

– Gestión de dependencias en tu lenguaje/ecosistema (ej: npm para Node.js, pip para Python).

  • Permisos: Habilitar GitHub Copilot workspace en el repository settings (Settings > Features > Copilot).

Guía paso a paso

1. Analizar el estado actual

Antes de empezar, evaluá el scope del trabajo:

# Ejemplo para un proyecto Node.js
npx npm-check-updates --depth=0
npm outdated

Anotá las dependencias obsoletoas y versiones objetivo. En el caso del ejemplo original: React 15 → 18, Less → Sass, react-bootstrap → v2.

Resultado esperado: Lista de dependencias a actualizar y tecnologías a migrar.

2. Crear un branch de trabajo

git checkout -b modernizacion-2024 main
git push -u origin modernizacion-2024

Usá un nombre descriptivo para rastrear el progreso.

3. Iniciar una Stacked Session en GitHub Copilot app

  1. Abrí la app de GitHub Copilot y seleccioná tu repositorio.
  2. Hacé clic en «New session» > «Stacked sessions».
  3. Elegí el branch modernizacion-2024 como base.

4. Definir las tareas

En el campo de prompt, describí la lista de tareas en orden. Ejemplo para el caso React:

Modernizar un app React legacy. Seguí este orden:

1. Actualizar React a v18 y React DOM a v18. Elimina el package `less` y reemplazalo por `sass`.
2. Actualizar todas las dependencias de react-bootstrap a la versión 2.x. Ajustá el código para compatibilidad.
3. Reemplazar todos los archivos .less por .scss, actualizando la sintaxis y imports.
4. Actualizar Babel y Webpack a versiones compatibles con React 18.
5. Ejecutar `npm test` y fixear errores de tests.

Cré un pull request al finalizar.
Error común: No ordenar las tareas correctamente. Si migrás el CSS antes de actualizar React, podés introducir incompatibilidades. Siempre poné las dependencias base primero.

5. Ejecutar la primera tarea

  1. Hacé clic en «Start session» para la primera tarea.
  2. GitHub Copilot analizará el repo y propondrá cambios. Revisá el diff:
– Verificá que los versionados en package.json sean correctos.

– Asegurate de que no se hayan modificado archivos no relacionados.

  1. Si todo está bien, hacé clic en «Accept and add to stack‘. GitHub Copilot creará un commit automático.
Resultado esperado: Primer commit con React y Sass actualizados, package.json y package-lock.json modificados.

6. Revisar y ajustar

Antes de continuar:

git checkout modernizacion-2024
npm install
npm start

Verificá que la app levante sin errores críticos. Si hay problemas:

  • Revertí el commit: git revert <commit-hash>.
  • Ajustá el prompt para la tarea y reiniciá la session.
Error común: No testear entre tareas. Un error no detectado temprano puede propagarse a las sessions siguientes.

7. Continuar con las tareas restantes

Repetí el proceso para cada tarea en orden:

  1. Hacé clic en «Next task» en la session stacked.
  2. Revisá el diff, testea los cambios y aceptá.
  3. Verificá que la app funcione después de cada commit.
Tip: Si una tarea es muy grande (ej: migrar 50 archivos .less), podés subdividirla:
3a. Convertir archivos .less en /src/components/ a .scss
3b. Convertir archivos .less en /src/pages/ a .scss

8. Crear el pull request

Al completar la última tarea, GitHub Copilot preguntará si querés crear un PR. Aceptá y completá:

  • Title: «Modernización: actualizar React 18 y migrar a Sass».
  • Description: Detallá los cambios principales y pruebas realizadas.
  • Reviewers: Asigná a miembros del equipo.
Resultado esperado: Un PR con todos los commits de la stacked session, listo para revisión.

Consideraciones y buenas prácticas

Dividí en tasks pequeñas: Cada session debe abordar un cambio atómico (ej: «Actualizar dependencias de testing»). Tasks demasiado grandes generan diffs difíciles de revisar y aumentan el riesgo de errores.Testea entre sessions: Ejecutá los tests y verificá el build después de cada commit. En entornos EKS, podés deployear temporalmente a un namespace de staging para validar integración con la infra.Manejá conflictos: Si una session falla por conflictos con el branch base (porque alguien pushió a main), actualizá tu branch:
git checkout modernizacion-2024
git merge main

Luego reiniciá la stacked session desde el último commit válido.

Documentá decisiones: Si durante el proceso elegís una approach específica (ej: «Usar CSS Modules en lugar de Sass»), agregá un commit con un mensaje claro:
git commit --allow-empty -m "ADR: Usar CSS Modules para estilos"
Limitaciones:
  • Contexto: GitHub Copilot tiene un límite de contexto (32K tokens). Para repositorios muy grandes, dividí el trabajo en múltiples stacked sessions (ej: «Modernizar frontend» y «Modernizar backend»).
  • Tests: No siempre lográ ejecutar tests automáticamente. Configurá un GitHub Actions workflow en tu repo para CI:
# .github/workflows/tests.yml
name: Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '18'
      - run: npm install
      - run: npm test
Alternativas: Si no tenés Copilot Pro, podés simular el flujo manualmente:
  1. Creá un branch por tarea.
  2. Usá GitHub Copilot Chat para generar los cambios en cada branch.
  3. Creamer PRs individuales y mergé los branches en orden.

Conclusión

Las Stacked Sessions de GitHub Copilot transforman la modernización de codebases legacy de un proyecto abrumador a una serie de pasos manejables. Al descomponer el trabajo en tareas secuenciales, cada una partiendo del estado anterior, reducís la complejidad y minimizás el riesgo de breaking changes. La integración con pull requests facilita la revisión incremental y el control de calidad, clave en entornos de infraestructura donde la estabilidad es crítica.

Para equipos que mantienen aplicaciones en EKS o otros entornos cloud, esta approach permite actualizar dependencias y frameworks sin reescribir todo desde cero, liberando recursos para focalizarse en features nuevos. El tiempo invertido en aprender a usar Stacked Sessions se amortiza rápidamente en el primer codebase legacy que modernices.

Fuentes

Stacked sessions and pull requests in the GitHub Copilot app

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *