Differences
Dernière modification : 2007/08/04 01:30
Cette fonction permet d'afficher les modifications entre deux révisions d'une page.
On peut ainsi voir rapidement ce qui a changé. L'idée est d'avoir un fonctionnement acceptable en gardant la légèreté de TigerWiki
Une beta est disponible la 2.19+4b
Cette fonction va sans doute être intégrée à une prochaine version de TigerWiki (voir le thread sur le forum officiel)
Voir la page TestDiff pour une démo de la fonction :
L'algo est simple et se base sur la fonction standard array_diff de PHP
Des méthodes plus robustes existent mais au prix d'un plus gros code :
On peut ainsi voir rapidement ce qui a changé. L'idée est d'avoir un fonctionnement acceptable en gardant la légèreté de TigerWiki
Une beta est disponible la 2.19+4b
Cette fonction va sans doute être intégrée à une prochaine version de TigerWiki (voir le thread sur le forum officiel)
Accessible depuis :
- la page d'historique pour voir les modifs entre deux révisions arbitraires
- la page des Changements récents pour voir le diff entre les deux dernières versions
Affichage :
- en rouge les lignes effacées entre la plus ancienne et la plus récente
- en vert les lignes ajoutées entre la plus ancienne et la plus récente
- en noir les lignes non modifiées
- les lignes modifiées apparaissent en rouge et en vert
Démo / test :
Voir la page TestDiff pour une démo de la fonction :
- Le jeu de test qui va bien
- Historique
- Changements récents et les nouveaux liens diff
- Ce wiki fonctionne avec la version concernée donc toutes les pages bénéficient du diff
Algo
L'algo est simple et se base sur la fonction standard array_diff de PHP
- Cela permet d'avoir un code compact et sans dépendance
- la gestion du diff est faite au niveau ligne
- Il peut relativement facilement être pris en défaut
Problèmes :
- une ligne peut être vue supprimée/ajoutée à cause des ajouts/suppressions des lignes autour
- les modifs concaténées dans un seul fichier (même minute) posent un peu problème voir par exemple
- si on supprime plusieurs lignes identiques en en laissant une elles ne sont pas vues ! voir diff entre 2208 et 2209
Liste des changements :
- #ligne : explication du code
- 192 : on empêche le remplacement de HISTORY
- 204 : tri inverse de l'historique et ajout des radio buttons
- 312 : action diff entre deux fichiers puis entre les deux plus récents
- 351 : ajout du lien diff dans l'action recent
Plus loin :
Des méthodes plus robustes existent mais au prix d'un plus gros code :
- PHPDiff 79 lignes pour le diff sous forme GNU
- PHP inline diff basé sur PEAR Text_Diff