Control de Versiones con Subversion

Xab, compañero de la lista Spip-es me propone un trato:

Abro una cuenta con magoya en picasa y testeo el plugin, y a cambio vos "hacés (o recomendás)" un how-to subversion aplicado a Spip

Como tenía unos materiales de una charla que dí en la facu, lo comparto con el pueblo spipero.

Subversion, un software de control de versiones

Subversion es el software de control de versiones más popular de la actualidad. Es robusto, fácil de usar, multiplataforma, libre y gratuito.

Aquí las diapositivas (un tanto frías sin nuestra explicación) que presentamos.

La pregunta del novato: ¿Para qué sirve?. Bueno, para llevar total control del desarrollo de un software (u otros contenidos). Muchos lo hemos hecho manualmente:

— Bueno, hasta aqui funciona. Hago una carpeta nueva, copio los archivos, y sigo.

Así, al cabo de una semana de trabajo, tenemos 10 carpetas con versiones distintas, archivos repetidos, y no sabemos realmente cual es la version en curso. Más complicado aun, si se trabaja desde distintos equipos (por ejemplo, la notebook y la PC de escritorio).

Pero además, sumemos la complicación de trabajar con colegas.

— Ey, Martín, acá te mando la última versión del esqueleto de portada. — ¡Pero cómo! si te avisé que había modificado la portada completamente!

Trabajar en equipo es casi inviable a la vieja usanza. Imaginen proyectos de software grandes, como SPIP. Imposible. Hace falta ayuda: Subversion.

¿Cómo funciona?

Es una aplicación cliente-servidor. El cliente se instala en nuestra/s computadoras y el servidor está, generalmente, online. A este servidor online se le denomina repositorio. A la copia local de los archivos, copia de trabajo. A cada cambio que el repositorio recibe se le llama revisión.

  • Para Windows, el mejor cliente es TortoiseSVN

  • Para GNU/Linux, basta subversion, la versión para línea de comandos, o RapidSVN, una versión gráfica para entornos GTK.

El proceso de trabajo es más o menos así:

  • Si no existe en el repositorio nuestro código, hacemos un import (enviar por primera vez nuestro código al repositorio.

  • Para empezar a trabajar, necesitamos hace un checkout, es decir, decirle a Subversion que convierta nuestra carpeta de código (o la cree si no existe) en copia de trabajo.

  • Ya preparados, el trabajo cotidiano: lo comandos más frecuentes son tres. update, para actualizar la copia local con las ultimas revisiones; commit para enviar nuestras modificaciones locales al repositorio y crear una nueva revisión y add para agregar un archivo que hemos creado, y aun no existe en el repositorio.

Un ejemplo con SPIP-Zone

Spip-zone tiene un servidor subversion (asociado al software Trac que es un gestor integral de proyectos de software) donde se puede alojar cualquier contenido libre que tenga que ver con SPIP. Es abierto para lectura (podés hacer checkouts y updates anonimamente) pero necesitás ser usuario para hacer commits. Podés pedirle un user y pass a Fil.

Paso 0

Suponiendo que sos usuario con clave y password y querés compartir el desarrollo de tus squeletos, los squelettes_maslindos que están en la carpeta squelettes local (por poner un ejemplo).

La dirección del repositorio, arbitraria pero recomendada, sería svn://zone.spip.org/spip-zone/_squelettes_/maslindos

Desde Tortoise, con el boton derecho sobre la carpeta de esqueletos, le damos a la opción Import y ponemos la dire del repo donde la pide.

Desde línea de comandos sería

$ svn import ./squelettes  svn://zone.spip.org/spip-zone/_squelettes_/maslindos -m "importacion de los squeletos más lindos"

Si la importación salió bien, debería poder ver tus archivos en la dirección http://zone.spip.org/trac/spip-zone/browser/_squelettes_/maslindos

Paso 1

Este es el paso inicial para aquellos que quieren probar algo que está en el repositorio, pero sin intenciones de enviar modificaciones (sólo lectura). Tambien deben hacerlo aquellos que sí lo van a hacer, porque la importación no implica que se haya creado una copia de trabajo.

Así que hay que hacer el checkout. Si hiciste el paso anterior, para evitar complicaciones, lo mejor es borrar la carpeta que importaste.

Entonces sí, sobre la carpeta raiz (donde queremos que se cree la otra), hacemo checkout a la dire del repo, definiendo que la copia local será ./squelettes (si no, nos creará una que se llamará maslindos)

La dire del repo es la siempre:

svn://zone.spip.org/spip-zone/_squelettes_/maslindos

Por línea de comandos sería así:

$ svn checkout svn://zone.spip.org/spip-zone/_squelettes_/maslindos ./squelettes

Pasos 2 y 3

Listo, tenemos nuetra copia de trabajo. Cada vez que queramos actualizar a la ultima versión, parados sobre la carpeta, hacemos update

$ svn  update

Si somos desarrolladores, y queremos enviar nuestras modificaciones, hay que hacer commit

$ svn  update

En caso de agregar archivos, hay que indicarselo a Subversion.

$ svn  add archivo1 archivo2 *jpg

Un video vale más que mil palabras

Un ejemplo de flujo de trabajo por línea de comandos

Y otro ejemplo usando una interfaz gráfica.

Spicasa: adjuntá fotos de picasa a un artículo

Con un poco de coca-cola en la sangre, retomé esta madrugada un proyectito que tenía: adjuntar fotos de un album de Picasa a un artículo.

El caso de uso, basado en mi propia necesidad, es el siguiente:

- Uso PicasaWeb para subir mis fotos. A veces son albumes públicos, a veces no. image1 Al subir fotos, generalmente le pongo una descripción. image2 Algunas fotos las subo también a mi blog personal.

La complicación es que tengo que subir las fotos a picasa y tambien a mi web (por ftp si son muchas). Obviamente es ineficiente, y además pierdo los comentarios que hice en Picasa.

Con ustedes, Spicasa

Spicasa intenta solucionar esto. Está basado en el plugin Flickr_cc pero utilizando la excelente biblioteca Lightweight PHP Picasa API de Cameron Hinkle, para interactura con la API de Picasa

Permite buscar fotos públicas en Picasa y asociarlas a un artículo, al igual que Flickr_cc lo hace con Flickr. Pero además, permite ingresar a tu cuenta y adjuntar uno de tus albumes al artículo. Todo con mucho AJAX y dulce de leche.

image3 Por supuesto, aunque cumple sus función básica, es un desarrollo totalmente inacabado que necesita desarrollo y depuración.

Requerimientos

image4 Requiere SPIP 2.0 o superior image5 La biblioteca Lightweight PHP Picasa API está incluída. Sólo requiere PHP5.

TODO y bugs conocidos

image6 [STRIKEOUT:El tamaño máximo de las fotos descargadas es 800px] image7 [STRIKEOUT:No hace búsquedas de más de una palabra] image8 Hay que loguearse cada vez que se quiere adjuntar un álbum nuevo image9 [STRIKEOUT:La ventana modal queda inaccesible si el scroll vertical no está arriba. (bug heredado de Flickr_cc)]

Descarga e instalación

|image11|

Spicasa 0.13

image12 Descromprimilo en la carpeta /plugins de tu sitio spip image13 Activalo desde el panel de administración image14 Al editar un artículo, te aparecerá un link con el logo de Spicasa para adjuntar fotos.

jQuery, una introducción

jQuery, una librería javascript ligera y sumamente útil, desarrollada por el talentoso programador John Resig.

Como se explica en el sitio web:

jQuery es una biblioteca javascript ligera y concisa que simplifica como atraviesas tus documentos HTML, manejas eventos, realizas animaciones, y agregas interacción Ajax a tus páginas web. jQuery está diseñada para cambiar la manera en que escribes JavaScript

¿Necesitamos otra biblioteca?

El Toolkit Dojo está maduro e incluye hasta el los hielos del whisky. Es ampliamente popular y muchas interfaces UI fueron construidas sobre este toolkit, incluyendo script.aculo.us, Rico, y otros. Por supuesto, no podemos dejar afuera a mootools. Su biblioteca UI, moo.fx, puede apoyarse sobre Prototype si lo deseas. Tambiñen está Y!UI the Yahoo! User Interface library. Y tenemos ExtJs, un robusto framework de interfaz que se basa en Y!UI, Prototype, o jQuery.

jQuery

Lo que nos trae a... jQuery. Sí, otro framework JavaScript. jQuery, sin embargo, es a mi criterio el más rápido y elegante del montón. Soporta CSS3, detección del navegador, encadenamiento de métodos, plugins, Ajax, selectores flexibles, y efectos UI basicos. Todo en menos de 30Kb.

Pues bien, engolosinemos los ojos un poco. Hacé click acá para ver lo que jQuery puede hacer con un par de líneas de código.

Wow! Jquery en acción. ¿Lo ves? Ese efecto se logra con este sencillo código:

$("a.intro").click( function() {
    $("div.introtarget").toggle(100);return false;

Esqueletos de aten.org.ar

Hola amigos de SPIP!

Estos esqueletos estan basados en los de www.spip-contrib.net

El sitio de ejemplo esta temporalmente acá

Simplemente descomprimanlo sobre su raiz de spip. Si tienen un archivo mes_fonctions.php3 salvenlo antes.

La palabra clave con id_mot=2 es "DESTACADOS" y los articulos asociacidos a esta salen en el cuadro central gris del sommaire.html . El resto de las palabras claves pueden pertenecer a otro grupo que sea "tematicas".

quedan detallitos por corregir, como el plan.html que faltó, y mejorar un poco la paginacion de articulos. pero creo que todo funciona.

Estos esqueletos son libres bajo . licencia GPL

Espero les sirva. Martin Gaitan. gaitan@gmail.com

spip, el Gestor de Contenidos

SPIP (Sistema de Publicación para una Internet Participativa, de sus siglas en francés) es un software libre (GPL) en PHP y MySql con la estructura ideal para desarrollar sitios tipo revista en línea, pero también potencia y sencillez sufiente para lograr cualquier objetivo. Spip se comoporta como un espacio donde un grupo de colaboradores escribe textos de contenido y los/as lectores/as pueden comentarlos.