DivisionCero

Proceso de Control de Versiones

Lineamientos para la gestión de versiones del software.

Quieres aprender más?

📋 Información General

Documento: Proceso de Control de Versiones
Versión: 1.0.0
Fecha: Enero 2025
Clasificación: Confidencial
Audiencia: Desarrolladores, DevOps Engineers, Arquitectos de Software, QA Team, Project Managers

🎯 Propósito

Establecer los lineamientos para la gestión, control y seguimiento de versiones de código fuente, documentación y artefactos de software en DivisionCero, garantizando la integridad, trazabilidad y colaboración efectiva en el desarrollo de aplicaciones y sistemas.

🏢 Alcance

Esta política aplica a:

  • Todo el código fuente de aplicaciones desarrolladas internamente
  • Scripts de automatización e Infrastructure as Code
  • Documentación técnica y de arquitectura
  • Configuraciones de sistemas y aplicaciones
  • Schemas de bases de datos y migraciones
  • Assets de frontend (CSS, JavaScript, imágenes)
  • Artefactos de CI/CD y deployment

📚 Definiciones

  • Control de Versiones: Sistema que registra cambios en archivos a lo largo del tiempo
  • Repository (Repo): Espacio centralizado donde se almacena y gestiona el código
  • Branch: Línea de desarrollo independiente que permite trabajo paralelo
  • Commit: Snapshot de cambios con mensaje descriptivo y metadata
  • Merge: Proceso de integrar cambios de una branch a otra
  • Tag: Marca que identifica un punto específico en la historia del repositorio

🛡️ Política

Sistemas de Control de Versiones Aprobados

Sistema Principal: Git

Plataformas Autorizadas:

  • GitHub Enterprise (repositorios privados corporativos)
  • GitLab (instancia self-hosted para proyectos críticos)
  • Azure DevOps (integración con ecosistema Microsoft)

Características Requeridas:

  • Autenticación multifactor obligatoria
  • Integración con Active Directory corporativo
  • Logs de auditoría completos
  • Capacidades de backup y disaster recovery

Sistemas Complementarios

Subversion (SVN): Solo para proyectos legacy en proceso de migración Perforce: Para assets binarios grandes (diseño, multimedia)

Estructura de Repositorios

Clasificación por Criticidad

Repositorios Críticos:

  • Aplicaciones de producción con datos de clientes
  • APIs y servicios core de negocio
  • Infrastructure as Code para entornos productivos
  • Sistemas de seguridad y monitoreo

Repositorios Estándar:

  • Aplicaciones internas y herramientas
  • Scripts de automatización no críticos
  • Proyectos de investigación y desarrollo
  • Documentación y wikis

Nomenclatura Estándar

Formato de Nombres:

[tipo]-[proyecto]-[componente]
Ejemplos:
- app-customer-portal
- api-payment-service
- infra-production-terraform
- docs-security-policies

Tipos Permitidos:

  • app: Aplicaciones web y móviles
  • api: APIs y microservicios
  • lib: Librerías y componentes reutilizables
  • infra: Infrastructure as Code
  • docs: Documentación técnica
  • tools: Herramientas y scripts internos

Estrategia de Branching

GitFlow para Proyectos Críticos

Branches Principales:

  • main/master: Código de producción, siempre estable
  • develop: Integración de nuevas funcionalidades
  • release/x.y.z: Preparación de releases específicos
  • hotfix/descripcion: Correcciones urgentes a producción

Branches de Trabajo:

  • feature/TICKET-descripcion: Nuevas funcionalidades
  • bugfix/TICKET-descripcion: Corrección de bugs
  • chore/descripcion: Tareas de mantenimiento

GitHub Flow para Proyectos Ágiles

Estructura Simplificada:

  • main: Branch principal, siempre deployable
  • feature/descripcion: Branches de trabajo temporal
  • Integración directa vía Pull Requests

Convenciones de Commits

Formato Estándar de Mensajes

Estructura Obligatoria:

<tipo>(<scope>): <descripción breve>

<descripción detallada opcional>

<footer opcional con referencias a tickets>

Tipos de Commit:

  • feat: Nueva funcionalidad
  • fix: Corrección de bug
  • docs: Cambios en documentación
  • style: Cambios de formato sin afectar lógica
  • refactor: Refactorización de código
  • test: Adición o modificación de tests
  • chore: Tareas de mantenimiento

Ejemplos Válidos:

feat(auth): add two-factor authentication support

Implement TOTP-based 2FA for user accounts with backup codes
and recovery options. Includes unit tests and documentation.

Closes #AUTH-123, #AUTH-124
fix(payment): resolve timeout issue in credit card processing

Increase timeout from 30s to 60s and add retry logic for
temporary payment gateway failures.

Fixes #PAY-456

Reglas de Calidad

Validaciones Automáticas:

  • Mensaje no puede estar vacío
  • Primera línea máximo 72 caracteres
  • Tipo debe ser uno de los permitidos
  • Debe referenciar ticket cuando aplique

Gestión de Branches

Protección de Branches Críticas

Branch Protection Rules para main/master:

  • Require pull request reviews (mínimo 2 aprobaciones)
  • Dismiss stale reviews when new commits are pushed
  • Require status checks to pass (CI/CD, tests, security scans)
  • Require branches to be up to date before merging
  • Restrict pushes that create new commits

Revisores Obligatorios:

  • Al menos un Senior Developer o Tech Lead
  • Code owner del área afectada (CODEOWNERS file)
  • Security review para cambios en autenticación/autorización

Proceso de Pull Requests

Checklist de PR (template obligatorio):

## Descripción
Breve descripción de los cambios realizados

## Tipo de cambio
- [ ] Bug fix (cambio que corrige un issue)
- [ ] Nueva funcionalidad (cambio que añade funcionalidad)
- [ ] Breaking change (fix o feature que causa cambios incompatibles)
- [ ] Documentación (cambios solo en documentación)

## Testing
- [ ] Tests unitarios pasan
- [ ] Tests de integración pasan
- [ ] Testing manual completado

## Security
- [ ] No introduce vulnerabilidades conocidas
- [ ] Cumple con políticas de seguridad
- [ ] Secrets/credentials no están hardcoded

## Checklist
- [ ] Código sigue convenciones del proyecto
- [ ] Self-review completado
- [ ] Documentación actualizada si es necesario

Versionado Semántico

Esquema de Versionado (SemVer)

Formato: MAJOR.MINOR.PATCH

  • MAJOR: Cambios incompatibles en API
  • MINOR: Nueva funcionalidad compatible hacia atrás
  • PATCH: Bug fixes compatibles hacia atrás

Ejemplos:

  • 1.0.01.0.1 (bug fix)
  • 1.0.11.1.0 (nueva funcionalidad)
  • 1.1.02.0.0 (breaking changes)

Pre-releases y Builds

Sufijos Permitidos:

  • alpha: Versión muy temprana, no estable
  • beta: Versión feature-complete, en testing
  • rc: Release candidate, casi lista para producción

Ejemplos:

  • 2.0.0-alpha.1
  • 2.0.0-beta.3
  • 2.0.0-rc.1

Tagging de Releases

Convenciones de Tags:

# Tags de release
git tag -a v1.2.3 -m "Release version 1.2.3"

# Tags con notas de release
git tag -a v1.2.3 -m "Release 1.2.3

- feat: Add user dashboard
- fix: Resolve login timeout issue
- docs: Update API documentation"

Seguridad en Repositorios

Gestión de Secrets

Prohibiciones Estrictas:

  • Passwords, API keys, tokens en código fuente
  • Certificados y llaves privadas
  • Strings de conexión con credenciales
  • Información personal identificable (PII)

Herramientas de Detección:

  • GitHub Secret Scanning habilitado
  • Pre-commit hooks con detección de secrets
  • GitLeaks o TruffleHog en CI/CD pipeline
  • Alertas automáticas para commits sospechosos

Gestión de Dependencias

Scanning de Vulnerabilidades:

  • Dependabot o Renovate para actualizaciones automáticas
  • Snyk o OWASP Dependency Check en CI/CD
  • License compliance checking
  • Alertas de seguridad de GitHub habilitadas

Políticas de Dependencias:

  • Solo dependencias de fuentes confiables
  • Aprobación requerida para nuevas dependencias críticas
  • Actualización regular de dependencias de seguridad
  • Documentación de rationale para dependencias específicas

Integración con CI/CD

Hooks y Automatización

Pre-commit Hooks:

  • Linting de código (ESLint, PyLint, etc.)
  • Formateo automático (Prettier, Black)
  • Detección de secrets
  • Validación de mensajes de commit

Post-commit Actions:

  • Ejecución automática de tests
  • Build y empaquetado de artefactos
  • Security scanning (SAST/DAST)
  • Deployment automático a entornos de testing

Pipeline de Calidad

Checks Obligatorios:

# Ejemplo GitHub Actions
name: Quality Pipeline
on: [push, pull_request]

jobs:
  code-quality:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run linter
        run: npm run lint
      - name: Run tests
        run: npm run test
      - name: Security scan
        run: npm audit
      - name: License check
        run: npm run license-check

Backup y Disaster Recovery

Estrategia de Backup

Repositorios Críticos:

  • Backup diario a múltiples ubicaciones geográficas
  • Replicación en tiempo real entre data centers
  • Export semanal a formato archive
  • Testing mensual de procesos de restore

Retención de Datos:

  • Backups incrementales: 30 días
  • Backups completos: 1 año
  • Archive histórico: 7 años para proyectos críticos
  • Tags y releases: permanente

Procedimientos de Recovery

RTO (Recovery Time Objective): 4 horas para repositorios críticos RPO (Recovery Point Objective): 1 hora máximo de pérdida de datos

Proceso de Restauración:

  1. Identificación del scope del problema
  2. Selección del backup point apropiado
  3. Restauración en entorno de testing
  4. Validación de integridad de datos
  5. Migración controlada a producción

Auditoría y Compliance

Logging y Monitoreo

Eventos Auditados:

  • Todos los commits y push operations
  • Creación y eliminación de branches
  • Cambios en configuración de repositorios
  • Accesos y permisos modificados
  • Downloads y clones de repositorios

Retención de Logs:

  • Actividad de desarrollo: 2 años
  • Cambios administrativos: 5 años
  • Incidentes de seguridad: 7 años

Reportes de Compliance

Reportes Automáticos:

  • Actividad mensual por desarrollador
  • Cumplimiento de políticas de branching
  • Estado de vulnerabilidades en dependencias
  • Métricas de calidad de código

Métricas Clave:

  • Número de commits por proyecto/desarrollador
  • Tiempo promedio de review de PRs
  • Porcentaje de cobertura de tests
  • Número de vulnerabilidades detectadas y resueltas

👥 Roles y Responsabilidades

  • Development Manager: Definir estrategias de branching y aprobar excepciones
  • Tech Leads: Supervisar cumplimiento de convenciones y quality gates
  • Senior Developers: Realizar code reviews y mentoring en mejores prácticas
  • DevOps Engineers: Mantener infraestructura de repositorios y CI/CD
  • Security Team: Auditar repositorios y gestionar políticas de seguridad
  • Developers: Seguir convenciones y procedimientos establecidos

📊 Cumplimiento y Medición

Métricas de Calidad

  • 100% de commits siguen convenciones de mensaje
  • 95% de PRs aprobados en primera revisión
  • 0 secrets detectados en código fuente
  • 90% de dependencias actualizadas en últimos 6 meses

Indicadores de Productividad

  • Tiempo promedio de merge de PRs: < 24 horas
  • Número de conflictos de merge por sprint: < 5
  • Cobertura de tests: > 80% para repositorios críticos
  • Tiempo de build de CI/CD: < 10 minutos

Auditorías y Verificaciones

  • Revisión semanal de alertas de seguridad
  • Auditoría mensual de permisos de repositorios
  • Evaluación trimestral de cumplimiento de políticas
  • Auditoría anual externa de procesos de desarrollo

🚨 Incumplimiento

Violaciones de Seguridad

Commit de Secrets:

  • Revert inmediato del commit
  • Rotación de credenciales expuestas
  • Investigación del alcance de exposición
  • Capacitación adicional obligatoria

Incumplimiento de Procesos

Bypass de Code Reviews:

  • Reversión de cambios no autorizados
  • Revisión disciplinaria con supervisor
  • Restricción temporal de permisos de push

Mensajes de Commit Inadecuados:

  • Capacitación en convenciones de commit
  • Supervisión intensificada por 30 días
  • Uso obligatorio de commit templates

📖 Referencias

📝 Control de Versiones

VersiónFechaCambiosAutor
1.0.0Enero 2025Versión inicialEquipo Development

¿Te ha resultado útil esta página?

Última modificación: 25 de agosto de 2025