Archivo de la categoría: Subversion

Evitar comentarios vacíos en los commits de SVN

De más está decir que la intención de los comentarios en un commit es para que, si hay que trazar una modificación, exista una aclaración o especificación coloquial de lo que se estuvo haciendo.

A veces, ya sea por vagos o distraídos, puede ser que se nos pase por alto ingresar el comentario al commit que estamos realizando.

Si bien podríamos considerar esto como una mala práctica (el no ingresar los comentarios), en pequeños desarrollos, en los cuales trabajemos solos (o casi), esto no traería mayores consecuencias.

Muy distinto es el efecto si llevamos ésta cuestión a proyectos grandes (tanto en código como en personas).

Para evitar que se filtren los comentarios vacíos, podemos ajustar nuestro repositorio para que valide dicha condición y nos impida ingresar el commit.

Para empezar, vamos al directorio

cd /path/a/mi/repositorio/hooks

Dentro del directorio vamos a ver los varios archivos .tmpl que tiene nuestro repositorio por defecto. A nosotros nos va a interesar trabajar con pre-commit. Veamos paso a paso como habilitarlo y aplicar nuestra regla para evitar comentarios vacíos.

Copiamos pre-commit.tmpl y le damos permiso de ejecución a nuestra copia.

cp pre-commit.tmpl pre-commit
chmod +x pre-commit

Sigue leyendo

Relocalización de repositorios SVN

Retomo nuevamente el tema repositorios, y en particular con Subversion.

El comando svn que vamos a ver hoy se llama switch.

Con ésta herramienta podemos ir alternando nuestro proyecto (o parte de él) con los distintos branches que tenga el repositorio, y también podemos apuntar el proyecto entero a otra dirección de repositorio.

Yo me voy a centrar en ésta última parte, en la de la relocalización de un repositorio entero.

La primera pregunta sería: ¿por qué tengo que relocalizar el repositorio?. El escenario más común podría consistir en que por cuestiones externas al desarrollador, la dirección inicial usada para el checkout ya no esté disponible y ahora el mismo repositorio esté accesible a través de otra url.

Si éste es nuestro caso, para poder seguir trabajando sin tener que hacer un nuevo checkout y padecer todos los problemas que ello implique, basta con volver a apuntar nuestra copia local con la nueva url.

La forma de hacerlo sería la siguiente.

cd /path/a/copia/local
svn switch --relocate http://url.original/repositorio/trunk http://url.nueva/repositorio/trunk .

Espero que el ejemplo sea claro.

Primero, nos paramos en el directorio en el cual se encuentra nuestra copia de trabajo, y luego corremos el comando agregándole el parámetro –relocate junto con la url original y seguida a esa, la nueva url.

Un detalle, el punto final es parte del comando.

Otro detalle, y el último, es que lo que cambia es la url, pero no el repositorio físico. El repositorio físico debe ser el mismo con el que estábamos trabajando.

Ejemplo de repositorio con SVN con un proyecto Magento

Hace ya un buen tiempo, estuvimos charlando con Pablo Montero (compañero de andadas en cuanto a Magento se refiere) sobre cómo estructurar un repositorio (con Subversion) para trabajar con la plataforma.

Vale aclarar que el ejemplo que voy a armar, es sólo eso: un ejemplo. Otra aclaración oportuna, sería que si bien el ejemplo lo aplico con Magento, puede pensarse para cualquier otro proyecto y sería más o menos válido (hay mucho de decisiones arbitrarias al momento de crear un repositorio).

Antes de continuar, voy a dar por sentado que mínimamente tenemos una noción del uso de los trunk, tags y branches en SVN.

A manera de repaso simple (intencionalmente demasiado simple), vamos a considerar que:

  • trunk: es la rama principal del proyecto y es dónde se alojará la versión productiva.
  • tags: se utiliza para dejar marcada, por ejemplo, una implementación; y de esa forma poder volver a ese punto sin mayores problemas.
  • branches: suelen utilizarse como líneas de desarrollo independientes del trunk, las cuales en algún momento pueden volver a mergearse con la línea principal.

De seguro podríamos hablar mucho más sobre los branches, pero lo vamos a dejar para otro post. La idea hoy es armar un repositorio para que podamos trabajar con nuestra plataforma de ecommerce favorita.

Antes de pasar a la estructura propuesta, vamos a introducir un término/concepto adicional dentro de los branches que es el de vendor. Dentro de ésta carpeta, podríamos incluir el software de terceros que usamos para nuestro proyecto.

Sigue leyendo

Notificaciones por correo desde Subversion

El escenario es el siguiente. Varios desarrolladores, con una carga importante de trabajo, y alguien que tiene que intentar controlar el código que se commitea al respositorio.

Sumémosle a ese alguien, la tarea de desarrollar y tener sus propias actividades.

Bajo ese escenario, se hace casi imposible llevar un control de las modificaciones que se realizan al código.

Para quienes nos identificamos con ese alguien, y que, además, usamos Subversion, existe una funcionalidad que podemos explotar desde el repositorio, para evitar perderle los pasos a la situación.

Vamos a configurar un poquito el repositorio para que, luego de cada commit, nos envíe un correo informándonos de lo sucedido.

Para eso, empezemos por ingresar a la carpeta hooks del repositorio.

cd /path/a/mi/repositorio/hooks

Sigue leyendo

Repositorio SVN con WebDav en 14 simples pasos

Vamos a implementar nuestro primer repositorio Subversion, haciendolo accesible vía http gracias a WebDav.

1) Instalamos Subversion y Apache

apt-get install subversion apache2 libapache2-svn

2) Creamos el directorio donde vamos a guardar nuestro repositorio y otros archivos de configuración

mkdir /home/svn

3) Creamos el directorio donde se van a guardar el repositorio

mkdir /home/svn/repositorios

4) Creamos el directorio donde vamos a guardar las políticas de acceso a nuestro repositorio

mkdir /home/svn/permisos

5) Nos paramos dentro de la carpeta de repositorios

cd /home/svn/repositorios

6) Creamos nuestro repositorio

svnadmin create proyecto

Sigue leyendo