martes, febrero 03, 2009

SVN, Out of date in transaction y las putadas de ser Case insensitive

SVN es una herramienta potentisima de control de versiones. Consiste en un servidor que se puede ejecutar como demonio o como módulo dentro de Apache y una serie de aplicaciones que sirven para mantener los repositorios y las copias con las que trabajamos. No me extenderé mucho sobre él ya que hay cantidades ingentes de información y literatura por internet sobre las ventajas de usar SVN, tan solo dejo aquí el link al manual oficial y paso a lo que quería postear:

http://svnbook.red-bean.com/

Hoy posteo sobre un error que me he encontrado y que es de fácil solución. Trabajando en un ERP que estoy implementando para mi empresa me he encontrado con lo siguiente:


[root@intra ERP]# svn commit -m "Intranet"
Sending contabilidad_bills_show.php
Sending themes/vg/main.php
Transmitting file data ..svn: Commit failed (details follow):
svn: Out of date: 'themes/vg/main.php' in transaction '108-1'


No entraré en demasiados detalles de por qué se produce este error, por lo que he podido ver significa que el directorio no está en su última revisión, de manera que no puedes realizar cambios sobre él con un svn update.
Para solucionarlo tan solo hay que ejecutar un svn update en el proyecto que da error y acto seguido un svn commit y todo volverá a funcionar correctamente.

Igualmente, los problemas tras esto han continuado, así que sigo con soluciones a problemas chorras que te salvan la vida cuando te pasa algo y recuerdas que en tu blog apuntaste 4 paridas como esta.
Problemas con archivos repetidos en Windows: Este me pareció curioso, sobretodo a estas alturas. Tenía una foto (un banner de empresa) que se llamaba logo_1280.gif. Lo acababa de crear partiendo de otro de menor tamaño y decidí guardarlo en la carpeta de imágenes del proyecto. Al guardarlo se guardó exáctamente igual salvo un detalle: La extensión pasó a ser .GIF en vez de .gif. Bueno, no pasa nada, estoy usando wamp para hacer pruebas antes de subir las cosas al servidor, Windows se traga lo que le eches y aquí no pasa nada. Entonces decido hacer el commit de la carpeta del proyecto, entro en el servidor y hago un update. Todo bien... hasta que abro el navegador y miro la página en cuestión y veo que no aparece ni logo ni banner ni nada, una mierda que me como.
Como muchos sabréis Linux (todos los *NIX de hecho) son case sensitive, esto hace que cuando existe un fichero .GIF y tu estas haciendo referencia a un .gif te comes los mocos porque no es lo mismo. Bueno, sin problemas, entramos en la carpeta de imágenes, renombramos el .GIF a .gif y listos, otro commit para que no suceda si descargo el proyecto para trabajar en casa, por ejemplo. ¡Pues tampoco! 2 piedras. Cuando todo vuelve a funcionar correctamente y vuelves al entorno de pruebas de tu PC de oficina y haces un update (es decir, teóricamente descargo la foto con formato .gif y 2 o 3 tonterias que modificas sobre la marcha) el SVN de Windows (en mi caso TortoiseSVN) me dice que no puede efectuar la operación ya que existen 2 ficheros con el mismo nombre. Uno aquí se plantea por qué eligió la carrera de informática, donde parece que las herramientas más potentes creadas con el fin de beneficiar a la humanidad son vilipendiadas por poderes oscuros que apenas llegamos a comprender.
En fin, no hay que rallarse demasiado. Basta con utilizar svn delete nombre-del-fichero.GIF y lo borrará de la HEAD. Y a otra cosa...

Etiquetas: , , , , , ,