Home » Sistemas de Gestión » Ingeniería de Sistemas » PrestaShop está en GitHub

Una de las claves de trabajar como un profesional es tener un entorno profesional, y una pieza importante de ese entorno es un repositorio (un sitio centralizado donde se almacenan y mantienen los ficheros de un proyecto informático) con las distintas versiones del software que se está desarrollando. Para ello existen varias herramientas: SVN, Mercurial, Tortoise, Git, y más. En esta entrada pretendo hacer una introducción a Git y Github. Puede argumentarse o rebatirse su tecnología o facilidad de uso, pero en el momento de escribir esto hay un hecho cierto: el código de PrestaShop está alojado en GitHub.

¿Qué es Git?

Es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código fuente. Wikipedia http://es.wikipedia.org/wiki/Git

Git es un sistema distribuido de control de código fuente o SCM (Source Code Management). “Código fuente” puede ser muchas cosas: ficheros HTML / CSS / Javascript, ficheros PHP, ficheros de la plantilla (o theme), documentación y manuales, etc.

¿Qué problema resuelve un SCM?

Vamos a ponernos en situación: imagínate que acabas de comprarte un nuevo tema o módulo para tu PrestaSHop. Está muy bien, y con ese componente tienes resuelto el 80% de las necesidades del proyecto que estás haciendo. Ahora sólo te falta desarrollar el 20% restante. Para hacerlo, tendrás que modificar el código fuente que has adquirido:

  • Seguramente tengas que modificar la hoja de estilos CSS o algún fichero de la plantilla para adaptarla a tu diseño.
  • Tendrás que utilizar alguno de los hooks para implementar la funcionalidad que te falta.
  • Quizás incluso tengas que sobrecargar algunas clases o controladores

Cuando terminas, subes tu código al servidor y publicas tu nuevo proyecto o se lo entregas al cliente. En este momento, el código fuente ya no es el mismo que adquiriste, lo has cambiado. Es ahora cuando te hago las siguientes preguntas:

  • ¿Sabrías decir dentro de 6 meses qué es exactamente lo que has cambiado del código del módulo del que partiste?
  • Resulta que tu módulo inicial se ha actualizado y ha pasado de la versión 1.5.1 a la versión 1.6 ¿Serías capaz de incorporar todas las mejoras y novedades a tu versión personalizada (en un tiempo corto, no hacerlo todo otra vez)?
  •  Con el paso del tiempo el cliente te pide una actualización, se la subes a su servidor y dos días después te dice que lo dejes como estaba porque no funciona bien o no es eso lo que realmente quería ¿Podrías volver atrás de forma rápida? ¿Te acordarás de qué líneas de código has modificado con precisión para depurar rápidamente dónde está el error que has introducido en el sistema?
  • El cliente llama a los tres meses diciendo que no funciona su tienda prestaShop ¿Serías capaz de determinar de forma rápida si el cliente ha modificado el código fuente del proyecto por su cuenta y se lo ha cargado él? ¿O realmente es un bug que no ha salido en tres meses? La pregunta es importante porque el coste del arreglo no sería el mismo según el tipo de mantenimiento o garantía que hayas acordado con tu cliente.

Un SCM es la herramienta que nos permite responder positivamente a estas preguntas (y a muchas más!).

¿Qué aporta Git?

  • Auditoría del código: saber quién ha tocado qué y cuándo.
  • Control sobre cómo ha cambiado nuestro proyecto con el paso del tiempo.
  • Volver hacia atrás de una forma rápida.
  • Control de versiones a través de etiquetas: versión 1.0, versión 1.0.1, versión 1.1, etc. Sabremos exactamente que había en cada una de ellas y las diferencias entre cualquiera de ellas dos.
  • Seguridad: todas las estructuras internas de datos están firmadas con SHA1. No se puede cambiar el código sin que nos enteremos.
  • Mejora nuestra capacidad de trabajar en equipo, asignando a cada equipo o desarrollador una “rama”.
  • Branching (crear una rama o entorno para trabajar en paralelo) y merging (agregar a una rama los cambios realizados en otra rama) extremadamente eficientes.

Ciertamente la mayor potencia de Git se manifiesta cuando el proyecto es grande, hay muchos ficheros y muchos programadores en ubicaciones diferentes. No obstante, para un programador individual y un proyecto modesto, una herramienta como Git para llevar el control de cambios realizados en el código es una herramienta de productividad y de competencia profesional.

Y ¿qué es Github?

GitHub es una forja (plataforma de desarrollo colaborativo de software; se enfoca hacia la cooperación entre desarrolladores para la difusión de software y el soporte al usuario.) para alojar proyectos utilizando el sistema de control de versiones Git. (…) El código se almacena de forma pública, aunque también se puede hacer de forma privada, creando una cuenta de pago. Wikipedia http://es.wikipedia.org/wiki/Github

Que Git sea distribuido quiere decir que está preparado para poder trabajar en equipos distribuidos (es decir, cada uno en su casa u oficina) de forma eficiente. Imagínate que tú estás en España y yo en México ¿Cómo hacemos para coordinarnos? ¿Cómo sé yo qué código has tocado tú y viceversa? GitHub proporciona herramientas de colaboración, manejo de incidentes y control de trabajo.

Este problema Git lo resuelve con herramientas un poco complicadas de configurar si no tienes la experiencia y conocimientos adecuados (Servidores SSH, claves públicas y privadas, etc.). Si eres administrador de sistemas y tienes tu propio servidor, no tardarías mucho en hacerlo. En caso contrario, GitHub te facilita toda la infraestructura para trabajar en equipos distribuidos a través de una interfaz web muy cómodo y amigable.

¿Y me interesa usar GitHub si trabajo yo sólo? Yo lo hago, por la sencilla razón de que si tienes una copia de tu código fuente en GitHub, tienes un backup de todo el proyecto completo. Ese backup incluye no sólo el código que tienes ahora sino también de todo el historial de modificaciones que el código ha sufrido desde el primer día. Esta copia la puedes recuperar en cualquier momento y continuar trabajando desde cualquier ordenador como si nada.

PrestaShop en GitHub

Desde hace algún tiempo, PrestaShop está en la plataforma GitHub y personas de todo el mundo han podido contribuir a mejorar el código de PrestaShope directamente en GitHub.

Antes de contribuir, es importante conocer la documentación que hay a tu disposición. Esta documentación te ayudará a realizar tu contribución de forma eficiente, facilitando los intercambios y las validaciones:

Más información: Blog de PrestaShop

Conclusión

1.- Para dueños de una tienda prestaShop

Más allá de la jerga técnica, debe comprender hacia dónde va el proyecto PrestaShop, y tener criterios para evaluar la competencia técnica de los desarrolladores que colaboran con su empresa.

2.- Para desarrolladores PrestaShop

Manejar Git y GitHub es una herramienta de productividad para desarrollo de código, que además da acceso directo a lo último en el código y a la comunidad internacional de desarrolladores PrestaShop.

Work smarter, not harder!

Deja un comentario

Si te gustó este Artículo, lo mejor que puedes hacer por el Blog es compartirlo en tu Red Social y darle un "Me Gusta".

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>