Piston On SVN

January 5th, 2008

Hace unos meses comencé a trabajar en un proyecto bastante grande. Éste se compone de varias aplicaciones Rails. Cada aplicación usa algunos plugins típicos como el acts_as_list, acts_as_tree y el acts_as_authenticated, además de otros desarrollados por nosotros. El gran punto fue como mantener todas las versiones de los plugins actualizadas. Para este inconveniente decidí en principio usar la propiedad svn:external de Subversion, pero rapidamente me pareció que no escalaba, al menos para lo que yo necesitaba. Miré un poco por ahí, y me acordé de lo que me había comentado Luis alguna vez: Piston.

Ventajas de utilizar Piston:
  • El código externo se guarda en un único repositorio. Esto disminuye la probabilidad de error al momento del deploy usando Capistrano, ya que la caida de algun repo externo no tiene efecto en el deploy de la aplicación.
  • Las actualizaciones de los componentes externos del repositorio se actualizan cuando uno lo decide, y no cuando se hace svn update.
  • Está escrito en Ruby.

Vamos a los bifes:

Instalar Pistón:

sudo gem install -y piston 

Importación de un recurso externo.

cd MI_APP_RAILS

Si el recurso usa svn:external simplemente es necesario ejecutar:

piston convert

En cambio, si se los copiaron previamente, es necesario removerlos primero.

svn rm vendor/plugins/labeled_form_helper
$ svn commit vendor/plugins/labeled_form_helper -m "Labeled Form Helper eliminado provisoriamente" 

Y luego importarlos con el siguiente comando:

piston import http://svn.techno-weenie.net/projects/plugins/labeled_form_helper/ vendor/plugins/labeled_form_helper
svn commit vendor/plugins/labeled_form_helper -m "Labeled Form Helper Pistoneado" 

Para ver los recursos que Piston maneja:

piston status

Para ver actualizar todos los recursos:

piston update

Simple, no?

NOTA: El Piston no realiza commit de nada. Solo trabaja con la copia actual. Así que después de cada operación, si están conformes con los resultados, solo… svn commit ….

El funcionamiento de Piston es simple. Piston guarda en cada carpeta monitoreada por él unas propiedades (svn) que le indican adonde tiene que ir a buscar la información de actualización a la hora de ejecutar: piston update.

Más información puede ser encontrada aquí.

Sorry, comments are closed for this article.