• # LO + git + XSLT

    Posté par . En réponse au journal Feuille de style pour CSV. Évalué à 5.

    Mais je n'étais pas totalement satisfait car beaucoup d'informations inutiles étaient stockées dans le gestionnaire de versions (et venait donc polluer ma comparaison).

    Moi aussi, donc j'ai poussé un peu plus loin : un script XSLT qui efface tout ce bordel inutile, utilisé comme filtre au moment du checkin (gitattributes(1)). Le script en question, lo-strip-config.xsl :

    <?xml version="1.0" encoding="UTF-8"?\>
    <xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
     >
    <xsl:output encoding="UTF-8"/>
    <xsl:template match="office:document/office:settings"/>
    <xsl:template match="office:document/office:scripts"/>
    <xsl:template match="@*|node()"\>
     <xsl:copy>
     <xsl:apply-templates select="@*|node()"/>
     </xsl:copy>
    </xsl:template>
    </xsl:stylesheet>

    La fin, c'est la formule « identité » d'XSLT, la « magie » est dans les deux templates vides qui matchent les balises à supprimer.

    Ensuite on crée un filtre qui utilise ce script lors du checkin, dans .git/config :

    [filter "lo-noconfig"]
     clean = xsltproc lo-strip-config.xsl -
    

    Et on indique de l'utiliser pour tous les fichiers fodt (c'était pour Document, pas Spreadsheet, dans mon cas, mais le script est agnostique) dans un .gitattributes dans le dépôt :

    *.fodt filter=lo-noconfig
    

    Et voilà, tu as ainsi des fichiers LibreOffice « propres » dans ton dépôt.