Control de Versiones
Se suele observar todavía muchos entornos de programación donde el proceso de desarrollo presenta un único repositorio central de archivos en el cual varios programadores se encuentran trabajando al mismo tiempo. Lo anterior lleva a varios problemas como conflictos entre versiones de código, sobreescritura de código, imposibilidad para devolverse a versiones anteriores de funcionalidad, dificultad para trabajar en diferentes funcionalidades al mismo tiempo, entre muchos otros más. Yo he estado ahí!
Hace ya algunos años desde que tuve la suerte de empezar a trabajar en proyectos donde el uso de un sistema de control de versiones es requerido sin excepción, esta experiencia ha sido genial.
Básicamente un sistema para control de versiones facilita la administración de las distintas versiones para un proyecto en desarrollo. Los sistemas de almacenamiento centralizado son los más comunes, entre ellos tenemos SVN y CVS, estos crean un repositorio central en el cual el proyecto es almacenado, por otro lado, los desarrolladores pueden generar copias locales de trabajo donde deben introducir sus cambios y luego enviarlos [ o commitearlos diría el spanglish
] al repositorio central.
Otra gran ventaja que ofrecen estas herramientas es la generación automática de un historial de cambios. Por ejemplo algunas de las cosas que puedes ver serían: quién modificó cierto archivo? cuando? porqué? qué cambios hizo?, diferencias entre revisiones específicas, y muchas más.
Algunas herramientas como Trac, brindan interfaces que facilitan la interacción con SVN.
Para aquellos que han estado pensando en entrarle y nunca se han decidido, vale la pena probarlo!


Una de las grandes ventajas de Sub-version es tener las propiedades automaticas (auto-props). La que mas me gusta es “Id” la cual despues de cada commit edita el archivo con un comentario que contiene la fecha de la ultima modificacion, revision y autor.
Para que Id de auto-props este habilitado, hay que hacer lo siguiente:
1. En el archivo que se desea implementar: (cualquier archivo texto no necesariamente PHP)
Archivo.php
/**
* @version $Id$
*/
En el archivo de configuracion de SVN
[auto-props]
*.* = svn:keywords=Id
ó desde la linea de comando:
svn propset svn:keywords Id archivo.php
Listo, despues del siguiente commit la linea $Id$ sera remplazada por:
/**
* @version $Id: Archivo.php 123 2008-01-11 16:28:06Z pviquez $
*/
Comentario by Pablo Viquez — Enero 11, 2008 @ 4:28 pm
me cago en wordpress me borro mi entry original…
BUeno como sea cuando estas en un equipo grande (compuesto algunas veces de unas yeguas) el control de versiones es lo mejor ya recuerdo los tiempos en donde todos editavamos a la vez un shared disk…. y cuando al malp**** team lead se le ocurria hacer cleanup sin avisa…. (aka programe de nuevo mijo)
Comentario by H — Enero 12, 2008 @ 11:59 pm
Continuando con el tema, llevandolo a la discusion, hay un video de Linus criticando fuertemente a los sistemas convencionales de manejo de versiones.
El tiene una alternativa que se llama GIT, http://git.or.cz/
Comentario by Jose H — Enero 14, 2008 @ 2:56 pm
Para proyectos bien estructurados les recomiendo Unfuddle.com es un site dnode en sus versiones gratuita y empresarial te permite acceder a un servidor SVN con WebDAV ademas de un sistema de tickets bastante completo el cual está vinculado con el SVN de manera que en una sola pagina pueder ver el ticket y las modificaciones de los archivos relacionados con la solicitud.
Se los recomiendo.
Comentario by Roberto Montero Ortiz — Enero 29, 2008 @ 9:48 am