Actualmente estas viendo el weblog personal de Carlos Montalvo, un profesional en el desarrollo web con sede en la ciudad de Lima, Perú.

Suscribete a posts o comentarios

Sigueme en Twitter

Buenas prácticas utilizando control de versiones

26 Aug

Escrito por hace 1 semana y 1 día | 1 Comentario

Sistemas de control de versiones hay muchos y muy variados: CVS, Subversion, Darcs, StarTeam, etc. Son herramientas muy valiosas, tanto que ningún programador puede omitirlas. En la siguiente nota voy a comentar algunos hábitos que he observado en la gente que las utiliza:

No utilices el control de versiones como si fuera un backup

Este es uno de los mayores errores a la hora de utilizar estas herramientas. Frecuentemente oigo la frase: ¿has puesto a salvo tu código en el repositorio?. ¡Mal! Almacenar el código en un repositorio no es sinónimo de seguridad, la seguridad la proporciona una copia de respaldo de ese código, no el repositorio en sí.

Tomaremos como ejemplo Darcs, un sistema de control de versiones no muy conocido. Este soft funciona en local, como un proceso más, sin necesidad de centralizar el control en un servidor como ocurre con otros sistemas como CVS o Subversion. En este caso, un fallo de disco podría echar a perder tu trabajo; por esta razón debes hacer copias de seguridad, el sistema de control de versiones no tiene nada que hacer ante este tipo de contingentes.

Los desarrolladores que utilizan el control de versiones con el rol de sistema de backup frecuentemente hacen un commit de su trabajo al día, por ejemplo cuando termina su jornada laboral, como una forma de respaldo diario. Esta no es una práctica aceptable, especialmente si formas parte de un equipo de desarrollo. Imagina que sólo actualizas tu proyecto por la mañana, cuando empieza tu jornada, y remites los cambios al finalizarla. Cada mañana perderás mucho tiempo únicamente lidiando con todos los cambios que enviaron tus compañeros el día anterior y que entran en conflicto con los que tu hiciste. No es una práctica muy inteligente, ¿no crees?

Remite los cambios tan pronto como conformen una unidad lógica

¿Cada cuanto debo remitir los cambios?. Hay que llegar a un término medio: no remitas cada línea que escribes ni lo hagas después de todo el día trabajando. Debes hacer un commit tan pronto como los cambios conformen una unidad lógica, por ejemplo cada vez que un conjunto de cambios tengan sentido.

Estas unidades lógicas responden en la mayoría de los casos a tu plan de desarrollo: encuentras un bug en la rama de desarrollo actual, planeas una estrategia para solucionarlo, lo arreglas y ahí tienes tu unidad lógica: envía los cambios al repositorio. El commit cobra sentido porque soluciona un bug específico; la versión X tiene un bug y la versión X+1 ya no.

No tengas miedo de remitir pequeños cambios con mucha frecuencia, nadie se enfadará porque seas conciso solucionando cosas pequeñas. Considera la situación extrema en la que, después de meses de desarrollo, necesitas recordar cuál fue la revisión en la que se solucionó aquella falta de ortografía en una cadena de depuración. Si utilizaste correctamente el patrón de "una solución, un envío" no tienes más que investigar la lista de envíos para descubrir cuál de ellos estas buscando.

Frecuentemente ocurre que estás trabajando en una "unidad lógica" cuando descubres que hay un error en otra parte del código y lo corriges, y envías la corrección junto con tus cambios todo dentro de un mismo commit haciendo que esta corrección pierda visibilidad. Esto debe evitarse en la medida de lo posible.

(Leer más »)

Categorizado :Desarrollo Web

Etiquetado :SVN,CVS

En la organización de desarrollo de software, conocí Assembla que es un buen servicio seguimiento de errores de software, que brinda un plan con SVN y trac gratuitamente pero con algunas limitaciones, hoy encontré una gran alternativa y es Projectlocker, la cual tiene menos limitaciones que Assembla y aparte brinda Git Hosting como alternativa a SVN.

Instalar Lamp + SVN + Trac en Ubuntu II

16 Apr

Escrito por hace 1 año y 4 meses | 3 Comentarios

En la entrada anterior pudimos instalar un Servidor Web ahora veremos la instalación y configuración de SVN (Subversion).

ulamp

Instalación de SVN

Abrimos la consola (Terminal) y escribimos lo siguiente.

sudo apt-get install subversion
sudo a2enmod dav
sudo /etc/init.d/apache2 restart
sudo apt-get install libapache2-svn
sudo /etc/init.d/apache2 restart

subversion: Con esto instalamos subversion.
a2enmod dav: Activamos el modulo de Apache usado para hacer que los repositorios estén disponible a otros a través de una red.
/etc/init.d/apache2 restart: Reiniciamos el servidor web, esto es necesario para poder ver los cambios realizados.
libapache2-svn: Contiene los módulos que capacitan a Apache funcionar como un servidor de Subversion además del módulo de identificación.

Creación de Repositorio

Primero creamos el directorio:

sudo mkdir /var/svn

A continuación indicarle al Subversion que es un repositorio:

sudo svnadmin create /var/svn/repos

A continuación, abrir el archivo /etc/apache2/httpd.conf y añada las siguientes líneas:

<location>
DAV svn
SVNPath /var/svn/repos
AuthType Basic
AuthName "Repositorio Subversion"
AuthUserFile /etc/subversion/passwd
Require valid-user
</location>

Asignamos permisos para que el servidor web pueda modificar el repositorio:

sudo chown -R www-data /var/svn

Añadimos un usuario le asignamos la contraseña y reiniciamos el servidor web.

sudo htpasswd -c /etc/subversion/passwd calinsoft
sudo /etc/init.d/apache2 restart

Añadimos nuestro proyecto al repositorio, en mi caso mi proyecto lo tengo en esta dirección /home/calinsoft/bobi-system

svn import -m "Mi Primer Proyecto" /home/calinsoft/bobi-system file:///var/svn/repos/bobi-system/trunk

Ahora nos dirigimos a http://localhost/repos y nos pedira el usuario y password que hayamos asignado.

Si necesita un Cliente SVN similar a TortoiseSVN les recomiendo NautilusSVN

Continuara...

Categorizado :Informatica

Etiquetado :php,Linux,Ubuntu,MySQL,SVN,Track

« 1 »