Je suis en charge de plusieurs fichiers Excel et schémas SQL. Comment dois-je effectuer un meilleur contrôle de la version des documents sur ces fichiers?
J'ai besoin de connaître la partie modifiée (partie différente) de ces fichiers et de conserver toutes les versions pour référence. Actuellement, j'ajoute l'horodatage sur le nom du fichier, mais j'ai trouvé qu'il semblait inefficace.
Existe-t-il un moyen ou une bonne pratique de mieux contrôler les versions de documents?
En passant, les éditeurs m'envoient les fichiers par courrier électronique.
Puisque vous avez marqué votre question avec git , je suppose que vous vous interrogez sur l'utilisation de Git pour cela.
Les dumps SQL sont des fichiers texte normaux, il est donc logique de les suivre avec Git. Créez simplement un référentiel et stockez-les dans celui-ci. Lorsque vous obtenez une nouvelle version d'un fichier, écrasez-la et validez-la. Git trouvera tout pour vous. Vous pourrez voir les dates de modification, extraire des versions spécifiques de ce fichier et comparer différentes versions.
Il en va de même pour .xlsx
Si vous les décompressez. Les fichiers .xlsx
Sont des répertoires compressés de fichiers XML (Voir Comment assembler correctement un fichier xlsx valide à partir de ses sous-composants internes?). Git les verra comme binaires à moins d'être décompressés. Il est possible de décompresser le .xlsx
Et de suivre les modifications apportées aux fichiers XML individuels à l'intérieur de l'archive.
Vous pouvez également le faire avec les fichiers .xls
, Mais le problème ici est que le format .xls
Est binaire, vous ne pouvez donc pas obtenir de différences significatives. Mais vous pourrez toujours voir l'historique des modifications et extraire des versions spécifiques.
La réponse que j'ai écrite ici peut être appliquée dans ce cas. Un outil appelé xls2txt peut fournir une sortie lisible par l'homme à partir de fichiers .xls. En bref, vous devriez mettre ceci dans votre fichier .gitattributes:
*.xls diff=xls
Et dans le .git/config:
[diff "xls"]
binary = true
textconv = /path/to/xls2txt
Bien sûr, je suis sûr que vous pouvez trouver des outils similaires pour d’autres types de fichiers, ce qui rend git diff
un outil très utile pour les documents bureautiques. C'est ce que j'ai actuellement dans mon global .gitconfig:
[diff "xls"]
binary = true
textconv = /usr/bin/py_xls2txt
[diff "pdf"]
binary = true
textconv = /usr/bin/pdf2txt
[diff "doc"]
binary = true
textconv = /usr/bin/catdoc
[diff "docx"]
binary = true
textconv = /usr/bin/docx2txt
Le livre Pro Git contient un bon chapitre sur le sujet: 8.2 Personnalisation de Git - Attributs Git
Je me bats avec ce problème depuis quelques jours et j’ai écrit un petit utilitaire .NET pour extraire et normaliser les fichiers Excel de manière à ce qu’ils soient beaucoup plus faciles à stocker dans le contrôle de code source. J'ai publié l'exécutable ici:
https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe
..et la source ici:
https://bitbucket.org/htilabs/ooxmlunpack
S'il y a un intérêt, je suis heureux de rendre cela plus configurable, mais pour le moment, vous devriez placer l'exécutable dans un dossier (par exemple, la racine de votre référentiel source). Lorsque vous l'exécuterez, il:
Il est évident que toutes ces choses ne sont pas nécessaires, mais le résultat final est un fichier de feuille de calcul qui sera toujours ouvert dans Excel, mais qui est beaucoup plus propice à la compression différentielle et incrémentale. En outre, le stockage des fichiers extraits rend également beaucoup plus évident dans l'historique des versions les modifications apportées à chaque version.
S'il y a de l'appétit, je suis heureux de rendre l'outil plus configurable car je suppose que tout le monde ne voudra pas que le contenu soit extrait, ou peut-être les valeurs supprimées des cellules de formule, mais cela m'est très utile pour le moment.
Lors des tests, une feuille de calcul de 2 Mo a été décompressée à 21 Mo, mais j’ai pu ensuite en stocker cinq versions avec de petites modifications entre elles, dans un fichier de données Mercurial de 1,9 Mo, et visualiser les différences entre les versions à l’aide de Au-delà de la comparaison en mode texte.
NB: bien que j'utilise Mercurial, j'ai lu cette question alors que je cherchais une solution et il n'y a rien de spécifique à Mercurial dans la solution. Cela devrait fonctionner correctement pour Git ou tout autre VCS.
Tante a rendu les choses très simples dans Gestion des formats de fichiers basés sur Zip dans Git:
Ouvrez votre fichier ~/.gitconfig (créez-le s'il n'existe pas déjà) et ajoutez la strophe suivante:
[diff "Zip"]
textconv = unzip -c -a
Nous avons créé une extension de ligne de commande Git à code source ouvert pour les classeurs Excel: https://www.xltrail.com/git-xltrail .
En résumé, la principale caractéristique est que git diff
travaillez sur tous les formats de fichier de classeur afin qu'il affiche la différence sur le contenu VBA du classeur (nous le ferons également pour le contenu des feuilles de calcul).
Il est encore tôt, mais cela pourrait aider.
Cet utilitaire Excel fonctionne très bien pour moi:
C'est un outil de versioning assez simple pour les classeurs et les macros VBA. Une fois que vous avez validé une version, celle-ci est enregistrée dans un référentiel Git sur votre PC. Je n'ai jamais essayé re. Fichiers de schéma SQL, mais je suis sûr qu'il existe un moyen de contourner le problème.
Comme mentionné dans le commentaire d'une autre réponse, les fichiers .xlsx ne sont que du XML.
Pour accéder au répertoire XML (qui est git
-able), vous devez "décompresser" le fichier .xlsx dans un répertoire. Un moyen rapide de voir ceci sous Windows consiste à renommer le fichier <nom_fichier> .xlsx en <nom_fichier> .Zip, et vous verrez le contenu intérieur. Je stockais cela avec le binaire afin que, lors de la validation de votre commande, vous ne fassiez pas d'autres étapes pour ouvrir le document dans Excel.
Utiliser l'extension de document ouverte .fods
. C'est un format de balisage XML simple et non compressé qu'Excel et LibreOffice peuvent ouvrir, et les différences seront belles.
Mon approche avec les fichiers Excel est similaire à celle de Jon, mais au lieu de travailler avec les données de texte brutes Excel, je les exporte vers des formats plus conviviaux.
Voici l'outil que j'utilise: https://github.com/stenci/ExcelToGit/tree/master
Tout ce dont vous avez besoin est de télécharger le fichier .xlsm (cliquez sur le lien Afficher les éléments bruts sur cette page .) N'oubliez pas de vérifier le paramètre Excel comme décrit dans le fichier Lisez-moi. Vous pouvez également ajouter le code pour exporter des données SQL vers des fichiers texte.
Le classeur est à la fois un convertisseur d'Excel binaire en fichiers texte et un lanceur des outils Windows Git. Il peut également être utilisé avec des projets non liés à Excel.
Ma version de travail est configurée avec des dizaines de classeurs Excel. J'utilise également le fichier pour ouvrir Git-gui pour des projets autres qu'Excel, en ajoutant simplement le dossier git à la main.