Il existe des formats qui sont en réalité des fichiers zip déguisés, par ex. docx ou odt. Si je les stocke directement dans le contrôle de version, ils sont traités comme des fichiers binaires. Ma solution idéale seraitFichiers zippés contrôlant la version (docx, odt)
- un crochet qui crée un répertoire
foo.docx/
pour chaquefoo.docx
fichiers engagent avant, décompressez tous les fichiers dans ce - le cas échéant, un crochet qui réindentera les fichiers xml
- ont un crochet recréant
foo.docx
des fichiers stockés après la mise à jour
Je ne veux pas les docx fichiers eux-mêmes être sous contrôle de version. (J'ai connaissance d'un related question où une approche différente avec un diff personnalisé a été suggérée.)
Est-ce faisable? Est-ce faisable avec mercurial?
MISE À JOUR:
Je sais à propos de crochets. Je suis intéressé par les détails. Voici une session pour démontrer le comportement attendu.
> hg add foo.docx
> hg status
A foo.docx
> hg commit
> # Change foo.docx with external editor
> hg status
M foo.docx
> hg diff
+++ foo.docx/word/document.xml
- <w:t>An idea</w:t>
+ <w:t>A much better idea</w:t>
'git' a le comportement de crochet qui permettra ceci, mais je ne sais pas à propos de hg – Daenyth
Concernant votre deuxième point: Sachez que ces formats de document (en particulier .xslx et ODF) ne traitent pas les espaces comme spécifié par la norme XML, mais - principalement à des fins pratiques - conserve les espaces même si cela n'est pas indiqué.Par conséquent, réindigner un fichier peut changer le contenu. –
Pourquoi ne voulez-vous pas que les fichiers au format zip soient contrôlés? Quel est le problème que vous voulez résoudre? – Rudi