Contribuyendo a omegaUp
¡Gracias por su interés en contribuir con omegaUp! Esta guía lo guiará a través del proceso de envío de su primera contribución.
Descripción general del proceso de desarrollo
La rama main en tu bifurcación siempre debe mantenerse actualizada con la rama main del repositorio omegaUp. Nunca te comprometas directamente con main. En su lugar, cree una rama separada para cada cambio que planee enviar mediante una solicitud de extracción.
Requisitos previos
Antes de comenzar:
- ✅ Configura tu entorno de desarrollo
- ✅ Lea las Pautas de codificación
- ✅ Comprenda cómo obtener ayuda si se queda atascado
Requisito de asignación de problemas
Requerido antes de abrir PR
Cada solicitud de extracción debe estar vinculada a un problema de GitHub existente que le esté asignado.
Pasos para asignar el problema
- Buscar o crear un problema:
- Examinar problemas existentes
-
O crear una nueva edición describiendo la corrección de errores o la característica
-
Expresar interés:
- Comentar el tema expresando su interés en trabajar en él.
-
Espere a que un mantenedor se lo asigne.
-
Empiece a trabajar:
- Una vez asignado, puedes crear tu sucursal y comenzar a codificar.
- Haga referencia al problema en su descripción de PR usando:
Fixes #1234oCloses #1234
Las relaciones públicas fracasarán sin la asignación de problemas
Si su PR no está vinculado a un problema asignado, las comprobaciones automáticas fallarán y su PR no se podrá fusionar.
Configuración de su horquilla y controles remotos
Sólo necesitas hacer esto una vez:
1. Bifurcar el repositorio
Visite github.com/omegaup/omegaup y haga clic en el botón "Bifurcar".
2. Clona tu bifurcación
git clone https://github.com/YOURUSERNAME/omegaup.git
cd omegaup
3. Configurar controles remotos
Verifique sus controles remotos actuales:
git remote -v
origin https://github.com/YOURUSERNAME/omegaup.git (fetch)
origin https://github.com/YOURUSERNAME/omegaup.git (push)
origin:
git remote add origin https://github.com/omegaup/omegaup.git
upstream:
git remote add upstream https://github.com/YOURUSERNAME/omegaup.git
origin https://github.com/omegaup/omegaup.git (fetch)
origin https://github.com/omegaup/omegaup.git (push)
upstream https://github.com/YOURUSERNAME/omegaup.git (fetch)
upstream https://github.com/YOURUSERNAME/omegaup.git (push)
Actualizando tu sucursal principal
Mantenga su rama main sincronizada con main de omegaUp:
git checkout main # Switch to main branch
git fetch origin # Fetch latest changes
git pull --rebase origin main # Sync with omegaUp/main
git push upstream # Update your fork
Advertencia de empuje forzado
Si git push upstream falla, significa que realizó cambios directamente en main. Utilice git push upstream -f para forzar el envío, pero evite realizar cambios en main en el futuro.
Comenzando un nuevo cambio
1. Crear una rama de funciones
Cree una nueva rama desde origin/main:
git checkout -b feature-name origin/main
git push upstream feature-name
Nombrar sucursales
Utilice nombres de rama descriptivos como fix-login-bug o add-dark-mode-toggle.
2. Haga sus cambios
- Escribe tu código siguiendo las pautas de codificación
- Escribe pruebas para tus cambios.
- Asegurarse de que todas las pruebas pasen
3. Confirme sus cambios
git add .
git commit -m "Write a clear description of your changes"
Confirmar mensajes
Escriba mensajes de confirmación claros y descriptivos. Consulte Confirmaciones convencionales para conocer las mejores prácticas.
4. Ejecutar validadores
Antes de presionar, ejecute el script linting:
./stuff/lint.sh
Ganchos de preempuje
Este script también se ejecuta automáticamente a través de enlaces previos al envío, pero ejecutarlo manualmente garantiza que los cambios cumplan con los estándares.
5. Configurar el usuario de Git (solo la primera vez)
Si no ha configurado la información de usuario de Git:
git config --global user.email "your-email@domain.com"
git config --global user.name "Your Name"
Creando una solicitud de extracción
1. Impulsa tus cambios
git push -u upstream feature-name
-u configura el seguimiento entre su sucursal local y la sucursal remota.
2. Abrir solicitud de extracción en GitHub
- Vaya a github.com/YOURUSERNAME/omegaup
- Haga clic en "Sucursal" y seleccione su sucursal.
- Haga clic en "Solicitud de extracción"
- Complete la descripción del PR
3. Plantilla de descripción de relaciones públicas
La descripción de su PR debe incluir:
## Description
Brief description of what this PR does.
## Related Issue
Fixes #1234 <!-- Replace with your issue number -->
## Changes Made
- Change 1
- Change 2
- Change 3
## Testing
Describe how you tested your changes.
## Screenshots (if applicable)
Add screenshots if your changes affect the UI.
Se requiere referencia del problema
Incluya siempre Fixes #1234 o Closes #1234 en su descripción de PR. Esto cierra automáticamente el problema cuando se fusiona el PR.
Actualizando su solicitud de extracción
Si necesita realizar cambios después de crear el PR:
git add .
git commit -m "Description of additional changes"
git push # No -u flag needed after first push
¿Qué sucede después del envío?
- Verificaciones automatizadas: GitHub Actions ejecutará pruebas y validaciones.
- Revisión de código: un mantenedor revisará su código
- Comentarios de direcciones: realice los cambios solicitados y envíe actualizaciones
- Fusionar: una vez aprobado, su PR se fusionará
- Implementación: los cambios se implementan los fines de semana.
Implementaciones de fin de semana
Los RP fusionados se implementan en producción durante las implementaciones de fin de semana. Verá sus cambios en vivo después de la próxima implementación.
Eliminando ramas
Después de fusionar su PR:
Eliminar sucursal local
git branch -D feature-name
Eliminar rama remota
- Vaya a GitHub y haga clic en "Sucursales".
- Encuentra tu sucursal y haz clic en el ícono de eliminar.
O usa Git:
git push upstream --delete feature-name
Limpiar referencias remotas
Elimine las referencias obsoletas a ramas remotas:
git remote prune upstream --dry-run # Preview what will be removed
git remote prune upstream # Actually remove them
Configuraciones adicionales
Configuración regional
Es posible que la máquina virtual no tenga en_US.UTF-8 como configuración regional predeterminada. Para solucionar este problema, siga esta guía.
Dependencias del compositor
En la primera configuración, instale las dependencias de PHP:
composer install
Configuración de MySQL
Si encuentra errores de MySQL al enviar, instalar y configurar MySQL:
sudo apt install mysql-client mysql-server
cat > ~/.mysql.docker.cnf <<EOF
[client]
port=13306
host=127.0.0.1
protocol=tcp
user=root
password=omegaup
EOF
ln -sf ~/.mysql.docker.cnf .my.cnf
Recursos
- Pautas de codificación - Nuestros estándares de codificación
- Comandos útiles - Referencia de comandos de desarrollo
- Guía de pruebas - Cómo escribir y ejecutar pruebas
- Cómo obtener ayuda - Dónde hacer preguntas
Próximos pasos
- Revise la Descripción general de la arquitectura para comprender el código base.
- Consulte las Guías de desarrollo para obtener guías detalladas.
- Únase a nuestro servidor de Discord para conectarse con la comunidad
¿Listo para hacer tu primera contribución? ¡Elige un problema, crea una rama y envía tu PR!