Este es un sistema de gestión de librerías desarrollado en PHP sin el uso de frameworks. Utiliza Docker para manejar el entorno de desarrollo con Apache y PostgreSQL.
Asegúrate de tener Docker instalados en tu sistema. Despues de esto recuerda que es importante ejecutar Docker para su funcionamiento
Esto es necesario para asegurarte de que los archivos tengan saltos de línea compatibles con entornos Linux (LF).
- Abre Visual Studio Code.
- Ve a: Archivo > Preferencias > Configuración.
- En la barra de búsqueda, escribe
eol. - Encuentra la configuración Files: Eol y cámbiala de
autoa\n (LF).
Esto evita que Git convierta los saltos de línea automáticamente al formato CRLF al clonar o extraer repositorios.
- Abre una terminal Git.
- Ejecuta el siguiente comando:
Esto asegura que Git conserve los saltos de línea en el formato original (
git config --global core.autocrlf input
LF) del repositorio.
- Clonar el repositorio:
git clone <URL del repositorio> cd Paco-librery
Esto es necesario para que el archivo entrypoint.sh pueda ejecutarse dentro del contenedor.
-
Abre una terminal en Visual Studio Code.
-
Asegurate que la terminal sea bash
-
Asegúrate de estar en el directorio raíz de tu proyecto.
-
Ejecuta el siguiente comando:
chmod +x ./docker/entrypoint.sh
Esto asignará permisos de ejecución al archivo.
-
Crear el archivo de entorno: Crea un archivo
.enven la raíz del proyecto con las siguientes variables de entorno:# Configuración general del entorno APP_ENV= APP_DEBUG= # Configuración de la base de datos DB_CONNECTION= DB_HOST= DB_PORT= DB_DATABASE= DB_USERNAME= DB_PASSWORD=
- Desarrollo: Configura
APP_ENV=developmentyAPP_DEBUG=trueen.envpara ver los errores y advertencias. - Producción: Cambia a
APP_ENV=productionyAPP_DEBUG=falsepara ocultar errores y advertencias en el entorno de producción.
-
Si es la primera vez iniciando Docker, ejecuta este comando:
docker-compose up --build
-
Iniciar los contenedores: Ejecuta el siguiente comando para iniciar el entorno:
docker-compose up -d
-
Acceder al proyecto: Una vez que los contenedores estén en ejecución, abre el navegador y accede a la URL:
-
Ejecutar migraciones de la base de datos: Las migraciones se ejecutan automáticamente al iniciar el contenedor. Si deseas ejecutarlas manualmente, usa el archivo
src/migrations/init.sql. -
Apagar el proyecto: Para detener los contenedores, ejecuta:
docker-compose down
-
Las ramas que se estan utilizando se pueden activar con:
git checkout -b busqueda-libro remotes/origin/busqueda-libro
git checkout -b develop remotes/origin/develop
git checkout -b factura remotes/origin/factura
git checkout -b inicio-sesion-cliente remotes/origin/inicio-sesion-cliente
git checkout -b inicio-sesion-admin remotes/origin/inicio-sesion-admin
git checkout -b registro-admin remotes/origin/registro-admin
git checkout -b registro-cliente remotes/origin/registro-cliente
Se tendria que navegar dependiendo de lo que se quiera programar
- src/public/: Contiene los archivos frontend (HTML, CSS, JS) y el archivo
home.php. - src/app/: Contiene la lógica de backend, organizada en controladores, modelos, vistas y helpers.
- src/config/: Configuración del proyecto, incluyendo la conexión a la base de datos.
- docker/: Archivos de configuración de Docker, como el Dockerfile y configuraciones de Apache.
- logs/: Carpeta para almacenar los logs de Apache y PHP.
- Apache logs: Los logs de Apache se encuentran en
logs/apache/. - PHP logs: Los logs de PHP están en
logs/php/. - Estos logs son útiles para depurar y solucionar problemas en el proyecto.
- La base de datos persiste en un volumen llamado
db_data, por lo que los datos no se perderán cuando se apaguen los contenedores. - Cualquier cambio en la carpeta
srcse refleja automáticamente en el contenedor.
El archivo .gitignore está configurado para ignorar archivos sensibles o innecesarios en el repositorio, incluyendo:
# Archivos y carpetas del sistema
.DS_Store
Thumbs.db
# Archivos de entorno
.env
docker-compose.override.yml
docker/Dockerfile.override
# Archivos de logs
logs/
logs/*
# Configuración de Docker
docker/db_data
# Archivos de bases de datos y backups
*.sql
*.tar.gz
*.gz
# Archivos temporales de PHP
*.log
*.cache
# Directorios generados por Composer y dependencias
/vendor/
# Archivos y directorios que contienen configuraciones específicas de desarrollo
# Ignorar archivos de configuración de Apache o Nginx si es necesario
# Ignorar archivos de configuración en src
src/.migraciones_completadas
# Ignorar archivos de pruebas o ejemplos (si no son necesarios en producción)
tests/
examples/
# Archivos de configuración de entorno de Docker (si contienen credenciales sensibles)
docker-compose.yml
docker/* # Ignorar el directorio Docker entero si contiene configuraciones sensibles
El comando git fetch permite traer los últimos cambios del repositorio remoto sin aplicarlos automáticamente en las ramas locales. Esto es útil para revisar los cambios antes de fusionarlos y evitar conflictos inesperados.
git fetch origin
Esto actualizará la referencia de las ramas remotas en tu repositorio local (como origin/busqueda-libro, origin/develop, etc.) sin modificar tus ramas locales.
Para inspeccionar los cambios antes de aplicarlos, puedes comparar tus ramas locales con las versiones en el remoto. Esto es útil para identificar posibles conflictos antes de la fusión.
git diff <rama-local> origin/<rama-remota>
Ejemplo para la rama develop:
git diff develop origin/develop
Utilizar rebase en lugar de merge ayuda a mantener un historial de cambios más limpio y facilita la resolución de conflictos. Sigue estos pasos para actualizar tu rama:
-
Cambia a la rama local que deseas actualizar:
git checkout <rama-local> -
Usa
rebasepara aplicar los cambios de la rama remota:git rebase origin/<rama-remota>Ejemplo para
develop:git checkout develop #esto es para moverte entre las ramas que existen en este caso develop git rebase origin/developSi hay conflictos, Git solicitará que los resuelvas uno por uno. Después de resolver cada conflicto, usa:
git add <archivo-con-conflicto> git rebase --continueSi deseas abortar el rebase en cualquier momento, puedes usar:
git rebase --abort
Evita trabajar directamente en las ramas principales como main o develop. En su lugar, utiliza ramas de características (feature branches) para cada tarea específica, por ejemplo, busqueda-libro o registro-cliente. Esto permite que los cambios se prueben y validen antes de fusionarlos en las ramas principales.
Antes de subir tus cambios al repositorio remoto:
- Asegúrate de que todo funcione correctamente en tu entorno local.
- Haz un último
git fetchygit rebaseen tu rama de trabajo para asegurarte de que tienes la última versión del remoto y evitar conflictos de último momento.
Para subir tus cambios:
git push origin <rama-local>
Aquí tienes un ejemplo del flujo completo, usando la rama busqueda-libro como ejemplo:
-
Trae los cambios del remoto:
git fetch origin -
Rebasa tu rama
busqueda-librosobredevelopdel remoto para mantenerla actualizada:git checkout busqueda-libro git rebase origin/develop -
Resuelve cualquier conflicto si es necesario, luego:
git add <archivo-con-conflicto> git rebase --continue -
Finalmente, sube tus cambios:
git push origin busqueda-libro
Siguiendo estos pasos, el equipo puede mantener el repositorio sincronizado y minimizar los conflictos en el proceso de colaboración. Si tienes dudas, consulta con el equipo antes de proceder.