lunes 2 de agosto de 2010

Utilizar Git con Subversion

Inicialmente implantamos el uso de Subversion en la empresa porque habían varias personas ya familiarizadas con él y era la única opción que nos ofrecía Dreamhost.

Sin embargo el Subversion presenta algunos problemillas e ineficiencias por las cuales yo personalmente uso Git en mi máquina, dado que permite conectar con repositorios subversion sin problemas, manteniendo a nivel local todas las ventajas que me ofrece el Git.

Y aunque vamos a migrar enteramente a Git próximamente, entretanto trabajaremos con él localmente, mientras seguimos usando como repositorio central el Subversion de Dreamhost.

¿Por qué Git?

  • El uso de este sistema de control de versiones cada vez está más extendido, sobre todo en el mundo del OpenSource. Cada vez más proyectos están alojados en Github.

  • Es mucho más cómodo de usar incluso desde una consola de comandos. Y más listo: se acabó el dar ordenes explícitas con comandos subversion para borrar o mover archivos; podemos realizar esas operaciones con normalidad desde nuestra interfaz preferida, que Git se da cuenta por si mismo de que lo has hecho. Crear ramas (branches) se vuelve mucho más fácil también y menos costoso en espacio de almacenamiento.

  • Mayor control sobre los cambios realizados, pudiendo especificar con exactitud que cambios se suben al repositorio principal y cuales no, incluso dentro de un mismo fichero.

  • Git está pensado para entornos de trabajo altamente distribuidos, por lo que el repositorio reside en nuestra propia máquina, pudiendo trabajar sin necesidad de conectarnos al repositorio central, al que subiremos los cambios cuando los tengamos pulidos (y posiblemente seamos autorizados por alguien que supervise dichas operaciones), o nos conectaremos para pillar los cambios que hayan subido los otros.

  • Instalación de Git

    Mac OS X

    Desde la sección de descargas de la página, existe un enlace para la versión instalable para Mac (Leopard). Instalar como cualquier aplicación de Mac.

    Aunque el git viene por defecto con el gitk y git-gui como herramientas gráficas, en el Mac podemos también descargar el GitX

    Linux (Ubuntu)

    En Ubuntu, hay que instalar los paquetes git-core, git-svn y para asegurarnos que no hay errores, subversion-perl.

    Windows (XP)

    Hay varias formas de instalarlo, quizás la más sencilla sea descargar e instalar msysgit..

    Una vez descargado, tras el doble click pertinente para ejecutar el instalador y un par de pulsaciones en el botón Next para avanzar, llegamos a la selección de componentes para la instalación. Allí marcar un botón que dice Conext menu entries y luego otra vez Next. Cuando lleguemos a otra pantalla donde se nos dan más opciones a elegir, seleccionar Run Git from the Windows Command Prompt. La siguiente opción se deja como está (Checkout Windows-style, commit Unix-....).

    Para usarlo, en el explorador de archivos pulsamos con botón derecho sobre la carpeta en la que queramos volcar nuestros repositorios, y seleccionamos la opción git bash here.

    Trabajar con Git contra un repositorio central Subversion

    Hablaré de las tres operaciones básicas a realizar, a saber: el checkout inicial del proyecto detro de una carpeta administrada por git, los commit tanto a nuestro repositorio local como al central (en Subversion), y las operaciones de actualización de nuestra copia con los últimos cambios subidos por nuestros compañeros de equipo.

    Usaré la interfaz de línea de comandos para realizar dichas operaciones habituales.

    Checkout

    Si hemos creado el repositorio subversion con la estructura clásica (trunk, branches, tags), basta con hacer:

    git svn clone --prefix svn/ -s http://direcciondemirepositorio.com/nombre_de_proyecto

    Esto crea una carpeta denominada nombre_de_proyecto, en la cual se van a volcar todos los cambios realizados en el repositorio central hasta ese momento, preservando por tanto el historial.

    Commit

    En Subversion, cuando hacemos commit desde una carpeta y sin especificar ficheros concretos, sube todos los cambios que hayan presentes. La filosofía de Git es distinta: primero decimos que ficheros (o cambios dentro de ficheros) queremos meter en el próximo commit (git add -i para acceder a una herramienta interactiva donde indicar lo que queremos meter), y luego realizamos el commit propiamente dicho.

    Ojo que en el Git cuando se hace un commit, se hace en el repositorio local. Cuando queramos subir los commit realizados al repositorio subversion, usaremos git svn dcommit

    Update

    Para actualizar hay dos maneras de hacerlo, una es bajar los cambios y después fusionarlos, y la segunda es una fusión de ambas y por tanto la más usada:

    git svn rebase

    Conclusiones

    Aunque el git tiene sus detractores, y ya he leído varios artículos de gente que se iba a pasar al Mercurial, yo me siento mucho más cómodo con él que con el Subversion.

    0 comentarios:

    Publicar un comentario en la entrada