Archive for June, 2008

Gestión de Branches y Tags con Git (II)

Written on June 13th, 2008
.

Continuo la serie de articulos sobre Git, echa un vistazo a la anterior entrega donde hablamos de creción de repositorios y una pequeña introducción. En esta ocasión indagaré un poco más en el ciclo de vida de nuestro software donde mostraré como crear branches, tags y como Git gestiona todo esto de manera increíble y es realmente lo que lo hace, bajo mi punto de vista, el mejor SCM que he probado.

Internalidades de Git

Esquema del arbol de repositorio de GitGit internamente gestiona los distintos commits en forma de arbol, donde cada “hoja”, que el llama blob son los distintos archivos en un instante determinado y los “nodos”, que llama tree son los distintos directorios. Siguiendo este esquema la gestión del repositorio se simplifica mucho.
En el esquema anterior podemos ver como se pueden diferenciar 2 arboles de objetos y nodos distintos, el primero que referenciamos mediante un tag (con una rama descendente única y que contiene dos directorios y un archivo), y el segundo sería exactamente el mismo arbol anterior pero añadiendole un nuevo archivo. Además el segundo es la copia actual en nuestro directorio de trabajo.

Creación de Tags

Entonces y deduciendo un poco la creación de tags en Git es inmediata, basta crear un “puntero” que nos apunte, valga la redundancia, a el commit deseado.

$git-tag -a nombre-tag -m "Creación de Tag nombre-tag"

Si no proporcionas el parámetro -m, simplemente se abrirá tu editor $EDITOR y podrás proporcionar una descripción a el tag en cuestión.
Se pueden hacer múltiples acciones sobre un tag, en el caso anterior se crea un tag sin firmar con GPG pero podemos hacerlo firmado (con el parametro -s) para la posterior identificación de su creador. Para llevar a cabo el firmado se usa el parámetro signingkey de nuestro .gitconfig

[user]
    signingkey =

También podemos eliminar un tag con el parámetro -d, y demás. git-tag(1)
Por lo tanto la creación de Tags como hemos visto es sencilla y directa, y lo más importante sin crear copias innecesarias de archivos.

Read the rest of this entry »

Control de versiones con Git (I)

Written on June 4th, 2008
.

git scm1 Control de versiones con Git (I)En el ciclo de vida de un producto software siempre se debe contar con herramientas que nos faciliten la ayuda a los desarrolladores, y en ese sentido los sistemas de control de versiones, como Subversion, CVS o Mercurial, son de utilización obligatoria aunque desarrolle sólo una persona.
En este post relataré mi experiencia con un sistema de control de versiones que lleva ya algun tiempo haciendo ruido en internet y que ciertamente, adelanto ahora mismo, supone un paso adelante en los sistemas de control de versiones y en particular en su gestión de branches.
Yo venía utilizando Subversion y como todos veía muy pobre su sistema de gestión de tags y branches y el intercambio entre ellos, obligandote a mantener varias copias de todo un proyecto para cada branch y para tag.
Git a diferencia de otros SCMs permite commits locales y remotos, no hace falta conexión permanente con un repositorio central, porque simplemente ese repositorio no existe, en cambio la funcionalidad del mismo se distribuye en distintos equipos sin una jerarquía especial.
github Control de versiones con Git (I)Si bien no existe un servidor central, si tenemos la posibilidad de definir varios repositorios remotos desde los cuales sincronizar todos los commits entre distintas personas, para tal ejemplo tenemos github.com que ofrece servicio gratuito para proyectos de fuente abierta o servicios de pago para repositorios privados.

Read the rest of this entry »