Ir al contenido principal

Sistemas para Control de Versiones de Software



Hola amigos, bienvenidos a un nuevo post de nuestro blog donde tenemos como  invitado a un muy amigo mio  Osvaldo Alcantara Terrazas  él es Licenciado en Informática Administrativa, tiene una Maestría en Dirección de Sistemas de Información y  más de 10 años de experiencia laborar en el área de Desarrollo y Soluciones de Software. 

Él  es nuestro primer invitado y nos va a platicar de la importancia de tener ordenado nuestro software, porque muchas ocasiones de no hacerlo se nos puede volver un dolor de cabeza. También nos presenta una herramienta de control de versiones la cual por cierto les adelanto es gratuita y siguiendo la temática de este blog nos comparte ejemplos muy completos, seguro los va a convencer de utilizarlo. 

Espero les agrade este post, nos compartan, dejen sus dudas, comentarios, opiniones, retroalimentaciones, sugerencias. 


Leamos a Osvaldo:





Todos en algún momento de hemos tenido que modificar programas, ya sea por mejoras o por correcciones, y la mayoría de nosotros lo que hacemos es crear una carpeta / copia del programa con el mismo nombre pero con terminaciones _Resp, V1, V2, y así según vallamos avanzando en el desarrollo. Esto se complica más cuando dos o más desarrolladores trabajan sobre el mismo programa, o peor, en el mismo archivo.



Los sistemas de control de versiones nos ayudan a resolver estos problemas. Estos sistemas funcionan comparando archivos a bajo nivel contra lo que tienen almacenado, de esta forma guardan el estado de cada archivo en cada versión que se ha generado, lo que nos permite hacer revisiones a través del tiempo y saber que se cambió y quien hizo el cambio.


El sistema del que vamos a comentar es Git.


Git es el sistema de versiones desarrollado por el mismo equipo que desarrolló Linux, por lo que comparte varias características y comandos, en varias distribuciones de Linux Git está instalado por defecto. Para el caso de Windows, Mac-os y otras distribuciones de Linux, el instalador se puede descargar de manera gratuita desde su sitio web (https://www.git-scm.com) ahí también encontraremos documentación y recursos relacionados. Una vez instalado el sistema, usaremos el programa Git Bash, que es la consola de Git.






Veamos cuales son los estados de un archivo en Git


  • Untracked -> archivo que está en el directorio pero que Git no lo tiene en su sistema de control.
  • Tracked -> el archivo es agregado al área stagign* de Git y es donde comienza a ser parte de los archivos controlados por Git
  • Committed -> El archivo pasa del área staging al repositorio de la rama** en la que estemos trabajando.

Algunos conceptos que vamos a utilizar

  • Staging es el área de Git donde guarda temporalmente el archivo en el que estamos trabajando y es desde donde compara con las versiones que ya existen en el repositorio.
  • La rama principal de Git se llama "Master".



Antes de iniciar debemos de realizar algunas configuraciones  de nuestro usuario, ya que Git es una herramienta colaborativa debemos de saber exactamente quién es el responsable de cada cambio. Para ello usamos los siguientes comandos en la consola

Veamos cuales son los estados de un archivo en Git:







Para iniciar el control de versiones de nuestros programas o archivos, debemos de inicializar un repositorio, para ello debemos de abrir la consola de Git y ubicarnos en la carpeta donde están los archivos que vamos a versionar. Estando ahí ejecutamos el comando git init, los principales cambios que vamos a notar en la consola es que Git automáticamente nos coloca en la rama Master y se crea una carpeta oculta .Git que es donde Git tiene sus recursos para controlar el repositorio



Ahora que ya tenemos el repositorio en la carpeta de nuestro programa podemos empezar a agregarlos a la base de versiones. Veamos la forma en que el archivo pasa en cada uno de los estados anteriormente mencionados con los comandos de Git:
Para saber que archivos han sido modificados o no están trackeados o si el repositorio no ha tenido cambios, usamos el comando git status


Hay proyectos que tienen una gran cantidad de archivos, para agregarlos todos usamos el comando Git add .


Como vimos, el comando git add . agrega los datos a staging, para crear la primer versión del ejecutamos el comando git commit -m "Comentario del commit". El comentario es necesario para poder identificar qué es lo lleva esa versión


A cada commit Git le asigna un numero único el cual nos va a servir para poder movernos entre cada una de las versiones. Para conocer el número de los commits usamos el comando git log


O para verlo de una forma simplificada git log --oneline

Supongamos que tenemos un programa al que nos han solicitado realizar un cambio, entonces creamos la rama Desarrollo1 a partir de Master, que es la versión de producción. Durante el desarrollo nos reportan un error que se debe de corregir inmediatamente, entonces creamos una rama que se llama HotFix1 a partir de la rama Master. Para crear las ramas usamos el comando git Branch "Nombre"




Para saber que ramas tenemos ejecutamos el comando git branch, se puede ver que master está resaltado, con esto Git nos indica que el head del repositorio está apuntando a la rama master


Vamos a empezar a hacer cambios en nuestra rama Desarrollo1, para cambiar de ramas usamos el comando git checkout <nombre de la rama>


Si vemos la consola, ya no está entre paréntesis la rama Master, ahora está Desarrollo1, si ejecutamos el comando git branch ahora ya estará resaltada la rama

Vamos a nuestra aplicación y hagamos una función llamada funcionDesarrollo en un módulo existente, esta función solo mandará un mensaje a pantalla

Guardamos la aplicación y regresamos a la consola de Git, usamos el comando git status y vemos los cambios que ya encontró en el repositorio

Vemos que el sistema ya nos indica que hay archivos modificados y que debemos de llevarlos a stagign con git add ., vemos el estatus con git status y hacemos el commit en la rama Desarrollo1



Ahora vamos a cambiar a la rama HotFix1, nuevamente la consola nos indica que estamos en otra rama


Si vemos el log de HotFix1 no vamos a encontrar el commit que se hizo en Desarrollo1


Ahora veamos el programa, Visual Studio nos va a indicar que el archivo cambió y que se debe de recargar, notaremos que la función ya no existe


En esta rama vamos a modificar la función BuscaBase y creamos otra que nos envíe el nombre de la base



Guardamos el cambio, en la consola agregamos el cambio a staging y hacemos el commit



Vamos a regresar a la rama Master, Visual Studio nos va a recargar el archivo sin ninguna modificación

Lo lógico es que traigamos los cambios del HotFix1 a la rama Master, para ello usemos el comando git merge <nombre de la rama>


Veamos el log y encontraremos que ya está el commit de HotFix1 en Master


Veamos el archivo en Visual Studio


Ya se encuentra la modificación a la función BuscaBase y la nueva función nombreBase

Ahora hagamos merge con la rama Desarrollo1 y veamos que pasa


OMG!! El merge falló y la rama master quedó en un estado Merging!!

Lo que pasa es que hay conflictos en la misma línea que Git no puede resolver de forma automática, regresemos a Visual Studio y veamos cómo nos muestra los conflictos


La mayoría de los editores modernos ya nos ayudan a gestionar los conflictos, en este caso nos indica con la etiqueta

<<<<<<< HEAD
============

Lo que tenemos en la rama en la que estamos ubicados, en este caso es Master; y con la etiqueta

>>>>>>> Desarrollo1

Lo que tenemos en la rama Desarrollo1

Lo que toca hacer es resolver el conflicto de forma manual y guardar el archivo


Lo que hicimos fue dejar las dos nuevas funciones y el parámetro agregado a la función existente.

Regresemos a la consola y veamos el estatus del programa


Agregamos el archivo con git add ., y ejecutemos el commit


¿Por qué hicimos un commit? La función merge lo que hace es escribir los cambios y luego hace un commit para guardar la versión generada con el merge, al fallar el merge por el conflicto nos toca hacer el commit en un segundo paso

Ahora veamos el log


Vemos que en Master están los commits que se hicieron en HotFix1, en Desarrollo1 y el commit para resolver los conflictos

Por último usemos el comando git log --all --graph --decorate --oneline



Lo que nos muestra es una gráfica de lo que realizamos.

Estas son las funciones básicas de Git, sin embargo aún se pueden hacer muchas más cosas como:

  • Importar repositorios
  • Exportar repositorios
  • Trabajar con repositorios remotos, usualmente con repositorios en GitHub
  • Trabajar con llaves criptográficas
  • Elegir commits.
  • Y un considerable etc.

Hasta aquí mi colaboración a este interesantísimo blog, aprovecho para felicitar a Ana por compartirnos una de sus pasiones en la vida y ojalá que este, su blog, se siga consolidando como fuente fiable de información.

No olvide compartirnos y seguirnos en este blog o en Facebook.

Comentarios

Entradas más populares de este blog

Graficar funciones en Python con dataframes

Bienvenidos a un nuevo post, en esta semana, en esta ocasión les quiero platicar acerca de una librería en Python que se llama  matplotlib  que nos sirve para gráfica funciones de  matemáticas. Habitualmente en Python existen muchas librerías, lo que hay que hacer es primero investigar si ya existe alguna que nos ayude y entenderla antes de inventar el hilo negro, en mi caso encontré la librería  Matplotlib Para instalar deben utilizar el comando PIP en 2.7 Instalando en Python 3.7 Si tienen Python 2.7 deben realizar la ejecución de estos 2 comandos desde consola python -m pip install -U pip python -m pip install -U matplotlib Aunque lo más recomendable es utilizar la versión 3.7 o superior de Python. Programa para graficar en Python import matplotlib.pyplot as plt import numpy as np import math as mt def move_spines():     """Esta funcion divide pone al eje y en el valor      0 de x para dividir claramente los valores positivos y     negativos.&quo

Ejemplo Macro en Word

Hola: ¿Sabían que no solo en Excel pueden hacer Macros?  ¡¡¡También en Outlook, Word, Power Point,Access  es posible hacer Macros!!!  ☺️ Ya que Word, Excel, Power Point,Access son de familia Microsoft y Visual Basic también es que podemos programar nuestras macros en esta paquetería. Como hemos visto antes, para poder programar nuestras macros, necesitamos primero configurar la Barra de tareas de Developer o Desarrollador Seleccionan el Menu File>Options>Customize Ribbon o en Español Archivo>Opciones>barra de tareas Despues la parte de seguridad de las macros Menu File>Options>Trus Center o Archivo>Opciones>Centro de Seguridad y marcamos como se ve en la imagen, la cuarta opción y el combo Ejemplo Vamos hacer un ejemplo donde, tengamos que generar varios diplomas de fin de curso, pero con una lista de Nombres , entonces vamos a crear un nuevo archivo en Word y le vamos a guardar como tipo Macro  Tenemos una plantill

Ejemplo Python para leer imagen y transformarla en una matriz

Como hemos visto en otros post, Python nos permite hacer programas de manera más rápida, en esta ocasión quiero compartirles un ejemplo para leer un archivo de imagen y como convertirlo en una matriz o un arreglo. Aplicaciones Poder hacer ingeniería de datos, es decir poder convertir una misma imagen en diferentes todos y utilizarlos para machine learning para reconocimiento de gatos, para ello hay que mostrar muchas imágenes a nuestro modelo es decir entrenarlo, para ello hay que colocarle imágenes claras y imagenes que no sean tan claras por ejemplo, se pone la imagen original y se agrega "ruido" para que se vea en rojos, grises, verdes. Se pudo utilizar para un mapa , para poder ver datos a detalle Se puede aplicar para manipular imágenes, por ejemplo agregar efectos  Seguramente a ustedes se les pueden ocurrir más aplicaciones Les comparto el ejemplo de como hacerlo en Jupiter y para hacer el ejemplo voy a utilizar el logo del blog es una imagen de 500x500 pixeles Los Pas