Configuración de Proyectos de Software con Git y GitHub
Resumen
¿Cómo integrar herramientas de Git y GitHub en un proyecto real?
El mundo del desarrollo de software se enriquece con herramientas colaborativas que facilitan el trabajo en equipo y la gestión de proyectos. Git y GitHub son dos de estos recursos esenciales que, cuando se integran correctamente, facilitan la colaboración y aseguran un flujo de trabajo eficiente. Aquí exploraremos cómo aprovechar al máximo estas herramientas y unirlas en un proyecto real.
¿Cómo crear un repositorio en GitHub y clonarlo de manera local?
Para comenzar, necesitas crear un repositorio en GitHub y clonarlo en tu entorno local. Asegúrate de contar con un README.md para documentar tu proyecto desde el inicio. Una vez en tu máquina local, abre el repositorio en un editor de código como Visual Studio Code. Este será el punto de partida para organizar tu desarrollo.
Crear el directorio .github: Usa este directorio para almacenar plantillas y otras configuraciones.
Agregar plantillas: Añade un archivo como pull-request-template.md para formalizar los procesos colaborativos y asegurarte de que todos los miembros del equipo siguen las mismas pautas al crear un pull request.
¿Cómo gestionar ramas y commits de manera efectiva?
En Git, siempre es recomendable trabajar en ramas diferentes al main para evitar conflictos y mantener el código base seguro. Crea una nueva rama para cada característica o tarea que estés desarrollando.
Crear una nueva rama:
Siempre asegúrate de estar fuera de la rama principal cuando desarrolles nuevas características.
Usa un nombre descriptivo para la rama que refleje la tarea que estás realizando.
git checkout -b mi-nueva-rama
Realizar commits: Asegúrate de que cada commit describa claramente los cambios realizados.
gitadd.git commit -m "Implementación de nueva API"
¿Cómo desarrollar y probar una API en Python?
Hemos hablado sobre la configuración del entorno de desarrollo; ahora, toca desarrollar una simple API en Python.
Configurar la estructura del proyecto:
Crea una carpeta dedicada para tu API, por ejemplo, api.
Añade un archivo app.py y requirements.txt en la raíz de tu carpeta de API.
Instalar las dependencias necesarias:
Asegúrate de que requirements.txt contenga todos los paquetes necesarios.
pip3 install -r requirements.txt
Desplegar la API:
Usa herramientas como uvicorn para lanzar tu servidor y verificar que todo funcione correctamente.
uvicorn app:app --reload
¿Cómo efectuar un pull request en GitHub?
Al finalizar tus cambios y haberlos probado adecuadamente, es hora de subirlos a GitHub y abrir un pull request. Esto no solo integra tus cambios al repositorio principal, sino que también permite revisiones de tus compañeros de equipo.
Subir cambios a GitHub:
Asegúrate de estar en la rama correcta y empuja tus cambios.
git push -u origin mi-nueva-rama
Crear un pull request:
Utiliza el archivo pull-request-template.md para seguir una guía estructurada en el momento de realizar el pull request.
Compartir una base común, usando las plantillas y el flujo de trabajo explicados, asegura que todos los miembros del equipo estén alineados y que el proyecto avance sin contratiempos.
Consejos adicionales
Nunca trabajes directamente en main: Esto protege la integridad del proyecto principal y permite un flujo de desarrollo más organizado.
Utiliza plantillas: Tanto para issues como para pull requests, asegurando que toda la comunicación sea clara y relevante.
Revisión de código colaborativo: Anima a tus compañeros a revisar el código antes de fusionarlo en el main, esto ayuda a detectar errores más temprano y aprender de los diferentes enfoques en el equipo.
Este proceso asegura no solo una correcta integración de herramientas, sino que también fomenta un ambiente de trabajo colaborativo y organizado, esencial en todo proyecto de software.
### Descripción del cambioPor favor, proporciona una descripción detallada de los cambios realizados en este PR.
### ¿Cuál es el contexto de este cambio?Explica el contexto y por qué se necesita este cambio.
### ¿Cómo se probaron estos cambios?Describe los pasos que tomaste para probar que los cambios funcionan como se espera.
### ¿Existen tickets relacionados?Víncula cualquier ticket o issue relacionado con este PR.
### Captura de pantalla (si aplica)Si los cammbios afectan a la interfaz de usuario, por favor adjunta capturas de pantalla.
### Checklist- [] He seguido las convenciones de estilo de código de este repositorio.
- [] He añadido pruebas unitarias para los cmabios que lo requieren.
- [] Todos los tests pasan correctamente.
- [] He documentado adecuadamente los cambios en el código.
### Otros comentariosAgrega cualquier otra información relevante aquí.
Gracias por tu aporte
Genial! Gracias
Hola
Les comparto el markdown de pull_request_template.md, el cual obtuve usando ChatGPT
### **Descripción del Cambio**
Por favor, proporciona una descripción detallada de los cambios realizados en este PR.
### **¿Cuál es el contexto de este cambio?**
Explica el contexto y por qué se necesita este cambio.
### **¿Cómo se probaron estos cambios?**
Describe los pasos que tomaste para probar que los cambios funcionan como se espera.
### **¿Existen tickets relacionados?**
Vincula cualquier ticket o issue relacionado con este PR.
### **Capturas de Pantalla (si aplica)**
Si los cambios afectan a la interfaz de usuario, por favor adjunta capturas de pantalla.
### **Checklist**
- [ ] He seguido las convenciones de estilo de código de este repositorio.
- [ ] He añadido pruebas unitarias para los cambios que lo requieren.
- [ ] Todos los tests pasan correctamente.
- [ ] He documentado adecuadamente los cambios en el código.
### **Otros Comentarios**
Agrega cualquier otra información relevante aquí.
Gracias por tu aporte
Muchisimas Gracias!
Me molesta demasiado que diga que hay algo en los recursos de la clase y no esté. Y ha pasado en la mayoría de las clases en las que lo ha dicho.
Eso sería un buen Issue
aiiññ siii ... y quita mucho tiempo andar buscando y a veces no se encuentran ni en comentarios u.u
Y recuerden amigos... siempre trabajen con su propia rama 😉
Hola tengo un error que no me deja avanzar y no se como solucionarlo```js
pip3 install -r requirements.txt
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Pythonpackage,create a virtual environment using python3 -m venv path/to/venv.Then use path/to/venv/bin/python and path/to/venv/bin/pip.Makesure you have python3-full installed.If you wish to install a non-Debian packaged Python application,it may be easiest to use pipx install xyz, which will manage a
virtual environment for you.Make sure you have pipx installed.See/usr/share/doc/python3.12/README.venvfor more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
````pip3 install -r requirements.txt`
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.12/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Hola, pudiste solucionarlo?
Tengo el mismo error
Es necesario crear un entorno virtual de python
primero se debe instalar el paquete para realizar entornos virtuales en python:
sudo apt install python3.12-venv
Una vez instalado, el paquete se crea un entorno virtual de python donde instalaremos los paquetes específicos del cada proyecto, para el caso del ejemplo requirements.txt
python3 -m venv .venv
Luego se activa el entorno virtual
source .venv/bin/activate
y por último en el entorno virtual creado se instalan los paquetes requeridos
python3 -m pip install -r requirements.txt
Estoy repitiendo el curso, pero Fredy tenia una clase de Alias, muy buenas para acortar comandos, no se si lo han visto muy innecesario y no querian hacer el curso muy largo, pero siento que es importante.
Si un comando de Git es muy largo y lo usas frecuentemente, puedes crear un alias para acortarlo.
🔹 1. Crear un alias en Git
Ejecuta este comando para definir un alias en la configuración global de Git:
No quiero instalar una cantidad de cosas que no voy a usar así que hice todo desde codespaces y quedó melo.
¿Por qué es mejor usar plantillas PR?
Las plantillas de Pull Request actúan como un formulario estandarizado para tu equipo. Al crear un archivo pull-request-template.md dentro de la carpeta oculta .github, obligas a que cualquier persona que intente fusionar código responda preguntas clave antes de solicitar una revisión.
Imagina que es como el triaje en un hospital: antes de que el médico (el revisor) vea al paciente (el código), necesita saber los síntomas, qué pruebas se hicieron y qué problema resuelve. Esto evita el clásico problema de recibir un PR vacío donde nadie sabe qué hace el código.
En la práctica, esto ahorra horas de comunicación innecesaria. El revisor no tiene que adivinar si ya probaste los cambios o qué issue estás resolviendo, porque la plantilla exige esa información desde el primer segundo. Es una de las formas más efectivas de escalar la calidad en proyectos de software reales.
acá les paso el texto
## Descripción del Cambio Por favor, proporciona una descripción detallada de los cambios realizados en este PR.
### ¿Cuál es el contexto de este cambio? Explica el contexto y por qué se necesita este cambio. ### ¿Cómo se probaron estos cambios? Describe los pasos que tomaste para probar que los cambios funcionan como se espera.
### ¿Existen tickets relacionados? Vincula cualquier ticket o issue relacionado con este PR.
### Capturas de Pantalla (si aplica) Si los cambios afectan a la interfaz de usuario, por favor adjunta capturas de pantalla.
### Checklist
- [ ] He seguido las convenciones de estilo de código de este repositorio.
- [ ] He añadido pruebas unitarias para los cambios que lo requieren.
- [ ] Todos los tests pasan correctamente.
- [ ] He documentado adecuadamente los cambios en el código.
### Otros Comentarios Agrega cualquier otra información relevante aquí.
Excelente aporte, muchas gracias.
Clase 37
¿Cómo pruebo mi código localmente antes?
Probar tu código localmente requiere levantar un entorno que simule las condiciones de producción directamente en tu máquina. En proyectos de Python, esto generalmente implica instalar las dependencias exactas y ejecutar un servidor de desarrollo.
Primero, asegúrate de estar en el directorio correcto usando comandos como cd. Luego, instala las herramientas necesarias ejecutando pip3 install -r requirements.txt. Esto lee tu archivo de configuración y descarga todo lo que tu aplicación necesita para vivir.
Después, utilizas un servidor ligero ejecutando un comando como uvicorn app:app --reload. El flag --reload es magia pura: hace que el servidor se reinicie automáticamente cada vez que guardas un cambio en tu código, permitiéndote ver los resultados en tiempo real en tu navegador (usualmente en localhost:8000). Es el paso crítico para confirmar que tu lógica funciona antes de empaquetarla y enviarla a GitHub.
Aquí esta la API que menciona
Tambien se puede crear un subdirectorio PULL_REQUEST_TEMPLATE en la carpeta .github para contener múltiples plantillas de pull requests. El archivo .github/PULL_REQUEST_TEMPLATE.md se aplica por defecto y los archivos dentro de .github/PULL_REQUEST_TEMPLATE/ aparecen como opciones adicionales.
Documentación: Creating a pull request template for your repository - GitHub Docs
El pull request es fundamental en el desarrollo colaborativo porque permite revisar, discutir y aprobar cambios antes de integrarlos al código principal. Fomenta la comunicación entre los miembros del equipo y ayuda a evitar conflictos en el código, asegurando que las contribuciones sean de alta calidad. Además, facilita la documentación de cambios y la trazabilidad del proyecto en GitHub.
Hola estaba intentando ejecutar este código me daba error
uvicorn app:app --reload
Intenten este código a mi me funciono
python3 -m uvicorn app:app --reload
Por si no tienen instalado python
sudo apt install python3-pip
Que buen video, Gracias Profesor, Gracias Platzi.
No pude desde la terminal (uso Bash y PowerShell), pero si pude desde la terminal de VsCode.
Con tan solo 3 simples pasos:
"Ejecutar archivo de python en terminal"
desde la terminal de VsCode fui a la carpeta de API
cd API
uvicorn app:app --reload
El comando:
pip3 install -r requirements.txt
Me dío el error:
Command 'pip3' not found, but can be installed with:
sudo apt install python3-pip
Ejecute el comando que me pidío:
sudo apt install python3-pip
Volví a intentar el codigo pip3 install -r requirements.txt y ahora si se instalo pero al intentar levantar el servidor me salío el error:
Command 'uvicorn' not found, but can be installed with:
sudo apt install uvicorn
Ejecute el comando:
sudo apt install uvicorn
Volví a intentar levantar el servidor y ahora si funciono: