|
Subject: Re: versioning Newsgroups: gmane.comp.web.spip.devel Date: 2005-01-08 21:44:10 GMT (4 years, 25 weeks, 2 days, 19 hours and 52 minutes ago) Le samedi 08 janvier 2005 à 16:38 +0100, Mathieu Lecarme a écrit : > comment fait-on pour purger le versioning des articles pour ne garder > que les n dernières versions, ou pour bazarder les versions de plus de n > mois? On écrit le code pour ! Tu as un accès CVS ;) > Il y a bien la fonction supprimer_versions() dans lab_revision.php, mais > les numéros de versions ne sont pas décalé aprés nettoyage, du coup, > aprés un permier nettoyage, il n'y a plus moyen de garder simplement les > n dernières versions. Comment ça ? Il y a une entrée par version et par article dans spip_versions, datées et numérotées par ordre croissant. Ca ne devrait pas être difficile de savoir quelles sont les N plus récentes... > Existe-t-il un bout de doc pour expliquer la liaison entre article, > version et versions_fragments? Non, mais c'est pas très difficile à comprendre. Un article (id_article) peut avoir k versions. Un fragment suit l'évolution d'un morceau de l'article (un paragraphe) au fil des versions. Une version (id_version) d'un article (id_article) est constituée d'un agencement des différents fragments correspondant à cette version de cet article. Cela permet de gérer efficacement le déplacement de paragraphes, car seul l'agencement des fragments est modifié. Le format de stockage des fragments est un peu spécial : un certain nombre de versions successives d'un même fragment sont stockés dans un tableau PHP qui sera sérialisé puis compressé, ce qui donne un taux de compression très efficace : en effet, les fragments sont en général assez courts et ils changent peu d'une version à l'autre, ce qui donne une forte redondance à des intervalles assez proches. De plus, les versions d'un fragment ne présentant pas de changement ne sont pas répétées, c'est-à-dire que le tableau PHP n'a pas d'entrée correspondant à l'id_version correspondant : il faut alors utiliser la version antérieure la plus proche. Tout cela se retrouve assez clairement dans le code. a+ Antoine. |
|
|