August 13, 2013

Actualizando CodeIgniter en un repositorio vivo

by ZeroDragon
Categories: tecnologia
Tags: , , ,
Comments: 1 Comment

Este también es una auto-referencia, pero también tiene algo de contexto.
Hace unos días estaba trabajando con un repositorio de un cliente, el cual lo trabajé usando CodeIgniter. Todo iba bien, hasta que se me ocurrió ver que versión del framework estaba usando; me di cuenta que mi versión era un poco atrás, para evitar problemas de compatibilidad o yo que se, me dispuse a hacer una actualización.

Mientras estaba en el IRC de #CodeIgniter, Marcomonteiro me pasó un link con una guía para actualizar el puro framework usando GIT, algo que uso en todos mis repositorios.

La guía la pueden encontrar aqui. Pero si el Inglés no se les da o tienen algún imprevisto, continúen leyendo.

Paso 1: Agregar un remote con el código fresco de CodeIgniter.

Desde la línea de comando es muy sencillo:

 $ git remote add codeigniter git://github.com/EllisLab/CodeIgniter.git

Si lo hicieron bien, pueden ver un resultado parecido a esto:

$ git remote
codeigniter
origin

Paso 2: Crear una nueva branch

Ok, si no han salvado su trabajo, es tiempo de hacer un commit y hacer una nueva branch, la cual nos servirá para hacer el merge con el código nuevo.

 $ git branch CodeIgniterUpgrade

Paso 3: Crear una nueva branch desde el nuevo remote

Vamos a traer todo el código original desde el repositorio de elislab, en concreto estamos buscando el branch 2.1-stable (o el más nuevo para cuando estés leyendo esto).

Es aquí donde se pone interesante. Si eres como yo, que en vez de hacer un clone, bajaste el zip desde elislab y te pusiste a trabajar encima, no tienes las referencias necesarias, así que hay que hacer un fetch:

$ git fetch codeigniter 2.1-stable:refs/remotes/codeigniter/2.1-stable

Con esto ya puedes hacer tu nuevo branch simplemente con:

$ git branch 2.1-stable codeigniter/2.1-stable

Felicidades, acabas de importar el código fresco, sigue al siguiente nivel

Paso 4: Incorporar el nuevo código con el tuyo

Ok para eso hicimos nuestra branch CodeIgniterUpgrade
Lo que vamos a hacer es ponernos en la branch CodeIgniterUpgrade y hacer un merge de la branch 2.1-stable:

$ git checkout CodeIgniterUpgrade
$ git merge 2.1-stable

Lo más seguro es que tengas conflictos de incorporación. Pero solo es cuestión de aventarte un mergetool observando que código es tuyo y que código es el que quieres incorporar (suena más dificil de lo que es)

$ git mergetool

Dependiendo de tu herramienta para hacer merges, puede que tengas que limpiar tu repositorio de archivos .orig antes de terminar el commit. Esto lo logras simplemente con

$ git clean

Terminando con esto, ya puedes simplemente pararte en tu branch master (después de hacer el commit de tu merge, claro) y repetir el merge desde CodeIgniterUpgrade, En esta ocasión ya no habrá conflictos.

$ git checkout master
$ git merge CodeIgniterUpgrade

Listo ya has terminado de incorporar el nuevo Framework en tu repositorio vivo. Ahora vamos a limpiar antes de terminar

Paso 5: Limpieza

Este paso es opcional, pero yo lo recomiendo para no dejar cabos sueltos.
Primero vamos a eliminar el branch 2.2-stable que ya no necesitamos:

$ git branch -d 2.1-stable

Ahora vamos por el branch CodeIgniterUpgrade

$ git branch -d CodeIgniterUpgrade

Listo ahora solo vamos a eliminar el remote

$ git remote rm codeigniter

Listo, como si nada hubiera pasado. Ya puedes continuar tu desarrollo sabiendo que tienes la más actualizada versión (estable) del framework.

Espero les sea de ayuda como lo es para mi regularmente :P

Zero out.