Jan 21

Aprendiendo a cabezazos

Pues acabo de aprender una cosa nueva. Cómo no, una cosa que NO debo hacer, porque hoy me ha tocado sufrir las consecuencias.

Hace aproximadamente un año tuve que hacer un cambio importante en un proyecto. Un cambio en unos pocos ficheros fuente, pero que podían dejar "descojonado" el sistema durante una buena temporada hasta que se volviera a afinar. Así que me decidí a abrir una rama de CVS para hacer mis cambios, de forma que cuando en esa rama todo estuviera adecuadamente depurado, juntarlo con la rama principal con ciertas garantías.

Pues bien, comencé los cambios y lo dejé después de un par de semanas de trabajo casi todo a punto… pero me interrumpieron con otra de esas labores super importantes que no pueden esperar a otro día … y aquella rama se quedó sin juntar … hasta ahora.

Hoy me he puesto a intentar juntar aquella rama con la principal y es un verdadero lio. En parte por recordar qué es lo que había tocado, pero principalmente he tenido que sufrir una de mis pequñas manías. Tengo la manía de refactorizar el código que toco, comentar lo que está sin comentar, arreglar los sangrados, eliminar warnings, etc, etc. Pues bien, eso ha hecho que sea prácticamente imposible ver qué cambios reales de código se hicieron entre la rama principal y la rama secundaria. Un diff de ambas versiones daba por cambiadas casi todas las líneas, aunque sólo fuera por temas de sangrado.

Así que ya sé dos cosas que NO debo hacer:

  1. Dedicarme a hacer refactoring en una rama. En las ramas hay que tocar lo mínimo imprescindible para facilitar la tarea de unirlas a la rama principal.
  2. No dejar tanto tiempo hasta integrar la rama. Si dejas mucho tiempo, es posible incluso que se te ocurra hacer refactoring y comentar el código de la rama principal, aunque no lo hagas en la secundaria, con lo que el efecto es el mismo.

Y de paso, sé una cosa que no deben hacer NUNCA los jefes

  1. Interrumpir a un currito cuando tiene algo a medias con otra cosa muy importante. Y menos interrumpirlo durante un año.

Oct 04

Nueva oportunidad a Subversion

Aunque llevaba tiempo pensándolo, por fin me he decidido a poner un sistema de control de versiones en casa.

Primero intenté con CVSNT, pero no me funciona el "control panel" sobre Window Vista. Mirando en google, he visto que a más gente le pasa lo mismo y no he visto que lo hayan solucionado. Así que dejo aparte lo de CVS y lo vuelvo a intentar con Subversion.

En la página de Subversión me costó encontrar el instalable para Windows. El sitio al que te lleva el enlace que dice "instalable para windows" te lleva a un sitio raro donde hay cosas de ¿svn con phyton para windows?. Sonaba un poco raro, así que me pongo a jugar con el árbolito que sale a la izquierda y, por fin, encuentro un fichero con un nombre normal que se parece a lo que yo quiero: svn-1.4.5-setup.exe. A descargar e instalar.

Todo estupendo. No me fastidió el Apache. Hace tiempo había instalado ya Subversión y lo primero que hizo fue tocarme el fichero de configuración de Apache y fastidiarlo para que no arrancara nunca más. Parece que ese problema ya está solucionado, no se si porque lo han solucionado o porque yo tengo el Apache más escondido y no ha sido capaz de encontrarlo.

La creación de repositorio y el meter y sacar un proyecto en él fue todo estupendo. No tuve ningún problema. Cuando había hecho pruebas hace tiempo con Subversion, se acabó fastidiando el repositorio el solito.

Y la prueba de fuego. Instalar el plugin para eclipse "subclipse". Increible, también funcionó a la primera. La otra vez se instaló, pero luego me decía que el plugin y el servidor de Subversion eran incompatibles y no funcionaba nada.

Ahora sólo queda usarlo una temporada, para acostumbrarme a él y ver si realmente merece la pena respecto a CVS. Si decido que sí, me llevaré el "experimento" al trabajo. Ya me tienen pánico desde que decidí que hicieramos ramas en CVS, así que esto va a ser ya la releche: cambiarles la herramienta de control de versiones. Por cierto, he visto por ahí que hay un cvs2svn, por lo que si funciona bien, se podrían migrar los repositorios de CVS a Subversion.

Oct 03

Ramas en CVS

Estamos usando ramas de CVS y he aquí lo que nos ha pasado:

Respecto a CVS, funciona bien y hace lo que se espera de él una vez que se entiende cómo trabaja. Es un poco rollo estar trabajando en dos ramas, reptiendo trozos de código dos veces -una en cada rama- o andar haciendo merges. Hay alguna cosilla rara que me he encontrado, pero no puedo acharlo a fallo de CVS. Quizás no sepa bien todavía cómo funciona el tema.

Sin embargo, ha sido un pequeño desastre a pesar de avisar oportunamente a la gente, decirles cual es el modo de trabajo, aconsejarles que hagan dos checkouts distintos, uno por rama, con dos espacios de trabajo distintos en eclipse. A muchos lo de las ramas les ha sonado a chino, así que se han leído los correos por encima, sin hacer mucho caso. Han empezado a meter en la rama principal lo que debían meter por la rama secundaria, luego se han acordado del tema de las ramas y entonces han seguido metiendo por la secundaria. En fin, un lio de tres pares de narices.

Lo que quiero decir con esto es que muchas veces hay herramientas muy buenas y potentes, pero que al final es la gente las que las usa. Trabajar con ramas en CVS requiere una disciplina muy estricta, ser muy cuidadoso y desde luego, nosotros no lo somos.