/logo_header.png

Control de versiones

Data bajo un control de versiones

Una idea clave de frontweb consiste en tener el directorio data, el que tiene todos los datos de los usuarios, bajo un sistema control de versiones.

Esto permite que los usuarios puedan administrar sus archivos y a la vez le permite a fronweb conocer la fecha de edición de cada artículo y su historial de cambios.

Un ejemplo, el plugin log

Uno de los plugins de ejemplo que incluye frontweb es log. Este plugin imprime una lista de todos los cambios que se han realizado sobre el directorio data, independientemente del control de versiones que utilice.

Actualmente frontweb puede explorar en repositorios mercurial y git. Pero dá un error si el directorio data no llega a estar versionado con alguno de ellos.

El archivo que le permite gestionar repositorios a frontweb es frontweblib/control_version.py.

¿Cómo solicitar el historial?

Si sos desarrollador y tu plugin tiene que explorar el historial del sitio, es conveniente que utilices alguna de las funciones que frontweb te provee.

Por ejemplo, el módulo utils tiene una función que obtiene todos los cambios del directorio data en formato de lista.

La función se llama utils.log(path), donde path es la ruta sobre la que se quiere hacer la consulta de cambios. Utilice '' o nada si quiere ver todos los cambios del directorio data completo.

El resultado de la consulta es una lista donde cada elemento es un diccionario que describe un commit. Por ejemplo:

[
    {
        rev: '1233',
        autor: 'pepe <pepe@email.com>,
        date: '....',
        comment: 'cambios en los ar...',
        files: ['home.rst', 'otro/nuevo.rst']
    },
    {
        rev: '3311',
        [...]

Es decir, cada diccionario tiene varias claves como rev o comment, y la clave files tiene una lista de archivos que se modificaron en ese commit.