12.15.2008

Buenas prácticas en el uso de subversion

Aparte de saber manejar subversion, conviene saber una serie de normas básicas a seguir que facilitan bastante la vida del programador sobretodo a futuro. El futuro se puede definir como el momento en el que necesitas saber que hiciste pero no te acuerdas :).
Al grano:

- Cada commit con su tema: Intenta no mezclar código con ficheros de datos o ficheros de proyecto. Es preferible hacer muchos commits con pocas cosas que ahorrarte medio minuto en no mirar lo que tienes y subirlo todo de una vez.

- Dios los cría y ellos se juntan. Si una serie de ficheros tienen que ver con un determinado tema, por ejemplo una corrección de bug, súbelos en el mismo commit. Esto es muy útil por si luego quieres mezclar esa revisión a otra rama para corregir el bug.

- Pon comentario en todos los commits: sobra decir que comentarios del tipo "commit", "subido" no son descriptivos y no ayudan :).

- Haz TAGS. Tags para todo, cuando envíes una demo, cuando saques una release, cuando termine el año. Los tags son gratis, así que úsalos y meta-etiquetalos bien.

- Automatiza la creación de tags con cada release. Puedes usar un script parecido a este:

import subprocess;
SVN = 'svn'
SERVER = 'svn://localhost/agroguia/TAGS/'
version = open("scripts/instalation/version.txt").read().split(':')[-1].strip();
cmd = [SVN, 'copy', '.', SERVER + version , '-m', '"released version '+ version + '"'];
print " ".join(cmd);
subprocess.call(cmd);


Además, si lo haces así podrás automatizar otras muchas cosas, como por ejemplo obtener los binarios de una release en concreto (con svn export). Puedes usar otras cosas como make, rake o lo que te de la gana.

Son unas pocas normas, aplicables a cualquier sistema de control de versiones, pero si se aplican bien mejoran mucho el uso de subversion.

6 comentarios:

Francisco dijo...

La verdad es que uno no se da cuenta de la utilidad de cosas como los tags y los branches de subversion hasta que no los usa por primera vez.

Bien usados te ahorran un montón de trabajo y la verdad es que con un buen IDE como eclipse y un plugin como subversive se ahorra mucho más trabajo.

patoroco dijo...

El tema de tags y branches la verdad que no he usado, aunque de momento solo hice cositas pequeñitas (lo más gordo que utilicé con subversión, fue editar el theme de wordpress para mi blog, asiqe...).
A ver si estas navidades me pongo un poco al día, aunque según me comentaste en el blog, svn va a ser relevado por un tal git, que a mi me sigue sonando a 'git-ano', pero bueno ^^

javi santana dijo...

@patoroco: yo no sé si svn será relevado por git, ahora los c00ls (aparte de los desarrolladores de linux) usan git. Es posible que haya una transición suave hacia git, como pasó desde CVS a subversion.

De todas formas hay otros muchos, mercurial, perforce, plastic (hecho en Valladolid por cierto)

kanotengu dijo...

En ese aspecto el Perforce (otro gestor de versiones) tiene una utilidad llamada "Changelists"
Los cambios realizados en los distintos archivos se agrupan en Changelists que tienen una descripción; de ese modo, puedes ver que ficheros fueron tocados para realizar cierto "cambio".
Incluso es posible aplicar un changelist a otro branch, lo que ahorra mucho trabajo cuando se trabaja con varias versiones

david santos dijo...

Bueno menu! Gracias por hacerlo!

Quería desearte una feliz navidad y que siendo amigos en el 2009!

Abrazos y no bajes los brazos nunca.

Tecsisa dijo...

Acabamos de publicar un artículo que amplía la buenas prácticas de gestión de versiones con Subversion.

Está disponible en:
http://www.tecsisa.com/index.igw?item=1651