en faisant la restauration d'un (gros) spip à partir d'un backup automatique, je m'aperçois que :
. dump complet d'un spip avec les révisions activées : 6.07 Mo... . le même en ayant viré les
données des tables spip_versions et spip_versions_fragments : 1.59 Mo...
(26 194 enregistrements aux total des des 2 tables... pas mal pour environ 6 mois de
rmeplissage intensif !)
Renseignements pris sur #spip :
(21:25:49) _fil_: au départ il était prévu de la purger régulièrement
(21:26:01) _fil_: genre au bout de x mois... et pas toutes les versions
(21:26:10) _fil_: avec les cryaons on la remplit moins
(21:26:27) _fil_: enfin, moins à chaque fois
(21:26:33) _fil_: mais plus souvent
Alors je propose le petit patch suivant suivant en attendant mieux :
. ajouter en fin de cron.php :
// menage des vieilles versions
if ($GLOBALS['meta']["articles_versions"] == "oui")
$taches_generales['menage'] = 3600 * 48;
. ajouter un fichier /ecrire/inc/menage.php contenant :
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined("_ECRIRE_INC_VERSION")) return;
// Nettoyage des versions trop vieilles
function cron_menage ($t) {
$result_menage = spip_query("SELECT id_article FROM spip_versions WHERE date <
DATE_SUB(NOW(), INTERVAL 2 MONTH) GROUP BY id_article");
while ($row_menage = spip_fetch_array($result_menage)) {
$id_article = $row_menage['id_article'];
$result_min = spip_query("SELECT id_version FROM spip_versions WHERE
id_article = $id_article ORDER BY date LIMIT 1");
$row_min = spip_fetch_array($result_min);
$version_min = $row_min['id_version'];
$result_max = spip_query("SELECT id_version FROM spip_versions WHERE
id_article = $id_article ORDER BY date DESC LIMIT 1");
$row_max = spip_fetch_array($result_max);
$version_max = $row_min['id_version'];
supprimer_versions($id_article, $version_min, $version_max);
}
return 1;
}
Bien sur c'est assez primaire comme manière de faire et y'a surement moyen de faire moins
couteux en requêtes mais j'suis un trop pôv codeur en MySQL pour trouver mieux 
D'autre part je ne m'y connait vraiment pas suffisament en matière de spip_cron et
versions/fragments pour effectuer *tous* les tests de ce patch... ni pour saisir toutes les
implications de ce truc...
Ce que je constate quand même sur une SVN 8060 :
. spip.php?var_mode=recalcul ne me donne pas d'erreur même avec
#CACHE{7200}
#SPIP_CRON
...
en tête du fichier /squelettes/sommaire.html
. si je lance "artificiellement la fonction cron_menage dans un pseudo-plugin :
echo '<br>cron_menage retourne : '.cron_menage(0);
non seulement je n'ai pas d'erreur à l'éxécution, mais en plus ça à l'air de fonctionner : tables
spip_versions et spip_versions_fragments purgées des ersions plus vieilles que 2 mois.
Voila, c'était juste parce que de mon côté j'aurais pas le choix : je peux pas me trimballer une
base 300 % plus lourde juste pour que les utilisateurs ils puissent retrouver des modifs de
versions vieilles de mathusalem : 2 mois ça suffira !
alors plutôt que de forker tout seul dans mon coin je me permet de vous en faire profiter
...
A bientôt