Directrices de Solicitudes de Cambio
Este documento proporciona directrices exhaustivas para enviar solicitudes de cambio a proyectos XOOPS. Seguir estas directrices asegura revisiones de código sin problemas y tiempos de fusión más rápidos.
Antes de Crear una Solicitud de Cambio
Sección titulada «Antes de Crear una Solicitud de Cambio»Paso 1: Verificar Problemas Existentes
Sección titulada «Paso 1: Verificar Problemas Existentes»1. Visitar el repositorio de GitHub2. Ir a la pestaña de Problemas3. Buscar problemas relacionados con su cambio4. Verificar tanto problemas abiertos como cerradosPaso 2: Hacer Fork y Clonar el Repositorio
Sección titulada «Paso 2: Hacer Fork y Clonar el Repositorio»# Hacer fork del repositorio en GitHub# Hacer clic en botón "Fork" en la página del repositorio
# Clonar su forkgit clone https://github.com/YOUR_USERNAME/XOOPS.gitcd XOOPS
# Agregar remote ascendentegit remote add upstream https://github.com/XOOPS/XOOPS.git
# Verificar remotesgit remote -v# Debe mostrar: origin (su fork) y upstream (oficial)Paso 3: Crear Rama de Característica
Sección titulada «Paso 3: Crear Rama de Característica»# Actualizar rama maingit fetch upstreamgit checkout maingit merge upstream/main
# Crear rama de característica# Usar nombres descriptivos: bugfix/issue-number o feature/descriptiongit checkout -b bugfix/123-fix-database-connectiongit checkout -b feature/add-psr-7-supportPaso 4: Realizar Sus Cambios
Sección titulada «Paso 4: Realizar Sus Cambios»# Realizar cambios en sus archivos# Seguir directrices de estilo de código
# Preparar cambiosgit add .
# Hacer commit con mensaje clarogit commit -m "Fix database connection timeout issue"
# Crear múltiples commits para cambios lógicosgit commit -m "Add connection retry logic"git commit -m "Improve error messages for debugging"Estándares de Mensaje de Commit
Sección titulada «Estándares de Mensaje de Commit»Buenos Mensajes de Commit
Sección titulada «Buenos Mensajes de Commit»Usar mensajes claros y descriptivos siguiendo estos patrones:
# Formato<type>: <subject>
<body>
<footer>
# Ejemplo 1: Arreglo de errorfix: resolve database connection timeout
Add exponential backoff retry mechanism to database connection.Connections now retry up to 3 times with increasing delays.
Fixes #123# Ejemplo 2: Característicafeat: implement PSR-7 HTTP message interfaces
Implement Psr\Http\Message interfaces for request/response handling.Provides type-safe HTTP message handling across the framework.
BREAKING CHANGE: Updated RequestHandler signatureCategorías de Tipo de Commit
Sección titulada «Categorías de Tipo de Commit»| Tipo | Descripción | Ejemplo |
|---|---|---|
feat | Nueva característica | feat: add user dashboard widget |
fix | Arreglo de error | fix: resolve cache invalidation bug |
docs | Documentación | docs: update API reference |
style | Estilo de código (sin cambio de lógica) | style: format imports |
refactor | Refactorización de código | refactor: simplify service layer |
perf | Mejora de rendimiento | perf: optimize database queries |
test | Cambios de prueba | test: add integration tests |
chore | Cambios de construcción/herramientas | chore: update dependencies |
Descripción de Solicitud de Cambio
Sección titulada «Descripción de Solicitud de Cambio»Plantilla de PR
Sección titulada «Plantilla de PR»## DescripciónDescripción clara de cambios realizados y por qué.
## Tipo de Cambio- [ ] Arreglo de error- [ ] Nueva característica- [ ] Cambio importante- [ ] Actualización de documentación
## Problemas RelacionadosCloses #123Related to #456
## Cambios Realizados- Cambio 1- Cambio 2- Cambio 3
## Pruebas- [ ] Probado localmente- [ ] Todas las pruebas pasan- [ ] Se agregaron nuevas pruebas- [ ] Pasos de prueba manual incluidos
## Lista de Verificación- [ ] El código sigue directrices de estilo- [ ] Revisión automática completada- [ ] Comentarios agregados para lógica compleja- [ ] Documentación actualizada- [ ] Sin nuevas advertencias generadas- [ ] Pruebas agregadas para nueva funcionalidad- [ ] Todas las pruebas pasandoRequisitos de Calidad de Código
Sección titulada «Requisitos de Calidad de Código»Estilo de Código
Sección titulada «Estilo de Código»Seguir directrices de Estilo-de-Código:
<?php// Bien: estilo PSR-12namespace MyModule\Controller;
use MyModule\Model\Item;use MyModule\Repository\ItemRepository;
class ItemController{ private ItemRepository $repository;
public function __construct(ItemRepository $repository) { $this->repository = $repository; }
public function indexAction() { $items = $this->repository->findAll(); return $this->render('items', ['items' => $items]); }}Requisitos de Prueba
Sección titulada «Requisitos de Prueba»Pruebas Unitarias
Sección titulada «Pruebas Unitarias»namespace Tests\Feature;
use PHPUnit\Framework\TestCase;use Xoops\Database\XoopsDatabase;
class DatabaseConnectionTest extends TestCase{ private XoopsDatabase $database;
protected function setUp(): void { $this->database = new XoopsDatabase(); }
public function testConnectionWithValidCredentials() { $result = $this->database->connect(); $this->assertTrue($result); }
public function testConnectionWithInvalidCredentials() { $this->database->setCredentials('invalid', 'invalid'); $result = $this->database->connect(); $this->assertFalse($result); }}Ejecutar Pruebas
Sección titulada «Ejecutar Pruebas»# Ejecutar todas las pruebasvendor/bin/phpunit
# Ejecutar archivo de prueba específicovendor/bin/phpunit tests/Feature/DatabaseConnectionTest.php
# Ejecutar con coberturavendor/bin/phpunit --coverage-html coverage/Trabajar con Ramas
Sección titulada «Trabajar con Ramas»Mantener Rama Actualizada
Sección titulada «Mantener Rama Actualizada»# Obtener lo último de upstreamgit fetch upstream
# Hacer rebase sobre el main más recientegit rebase upstream/main
# O fusionar si lo prefieregit merge upstream/main
# Force push si se hizo rebase (¡advertencia: solo en su rama!)git push -f origin bugfix/123-fix-database-connectionCrear la Solicitud de Cambio
Sección titulada «Crear la Solicitud de Cambio»Formato de Título de PR
Sección titulada «Formato de Título de PR»[Tipo] Descripción corta (fix/feature/docs)
Ejemplos:- [FIX] Resolve database connection timeout issue (#123)- [FEATURE] Implement PSR-7 HTTP message interfaces- [DOCS] Update API reference for Criteria classProceso de Revisión de Código
Sección titulada «Proceso de Revisión de Código»Qué Buscan los Revisores
Sección titulada «Qué Buscan los Revisores»-
Corrección
- ¿El código resuelve el problema indicado?
- ¿Se manejan casos límite?
- ¿Es el manejo de errores apropiado?
-
Calidad
- ¿Sigue estándares de codificación?
- ¿Es mantenible?
- ¿Está bien probado?
-
Rendimiento
- ¿Alguna regresión de rendimiento?
- ¿Las consultas están optimizadas?
- ¿El uso de memoria es razonable?
-
Seguridad
- ¿Validación de entrada?
- ¿Prevención de inyección SQL?
- ¿Autenticación/autorización?
Responder a Retroalimentación
Sección titulada «Responder a Retroalimentación»# Abordar retroalimentación# Editar archivos basados en comentarios de revisión
# Hacer commit de cambiosgit commit -m "Address code review feedback
- Add additional error handling- Improve test coverage for edge cases- Update documentation"
# Enviar cambiosgit push origin bugfix/123-fix-database-connectionProblemas Comunes de PR y Soluciones
Sección titulada «Problemas Comunes de PR y Soluciones»Problema 1: PR es Demasiado Grande
Sección titulada «Problema 1: PR es Demasiado Grande»Problema: Los revisores no pueden revisar PRs masivos de manera efectiva
Solución: Dividir en PRs más pequeños
- Primer PR: Cambios principales
- Segundo PR: Pruebas
- Tercer PR: Documentación
Problema 2: Sin Pruebas Incluidas
Sección titulada «Problema 2: Sin Pruebas Incluidas»Problema: Los revisores no pueden verificar funcionalidad
Solución: Agregar pruebas exhaustivas antes de enviar
Problema 3: Conflictos con Main
Sección titulada «Problema 3: Conflictos con Main»Problema: Su rama está fuera de sincronización con main
Solución: Hacer rebase sobre el main más reciente
git fetch upstreamgit rebase upstream/maingit push -f origin your-branchDespués de Fusionar
Sección titulada «Después de Fusionar»Limpieza
Sección titulada «Limpieza»# Cambiar a maingit checkout main
# Actualizar maingit pull upstream main
# Eliminar rama localgit branch -d bugfix/123-fix-database-connection
# Eliminar rama remotagit push origin --delete bugfix/123-fix-database-connectionResumen de Mejores Prácticas
Sección titulada «Resumen de Mejores Prácticas»- Crear mensajes de commit descriptivos
- Hacer PRs enfocados y de propósito único
- Incluir pruebas para nueva funcionalidad
- Actualizar documentación
- Referenciar problemas relacionados
- Mantener descripciones de PR claras
- Responder rápidamente a revisiones
- Incluir cambios no relacionados
- Fusionar main en su rama (usar rebase)
- Hacer force push después de que comience la revisión
- Omitir pruebas
- Enviar trabajo en progreso
- Ignorar retroalimentación de revisión de código
Documentación Relacionada
Sección titulada «Documentación Relacionada»- ../Contributing - Descripción general de contribución
- Code-Style - Directrices de estilo de código
- ../../03-Module-Development/Best-Practices/Testing - Mejores prácticas de prueba
- ../Architecture-Decisions/ADR-Index - Directrices arquitectónicas
Recursos
Sección titulada «Recursos»Última Actualización: 2026-01-31 Se Aplica A: Todos los proyectos XOOPS Repositorio: https://github.com/XOOPS/XOOPS