Peut git traiter les fichiers zip comme les répertoires et les fichiers dans le zip comme des gouttes?

Le scénario

Imagine que je suis obligé de travailler avec certains de mes fichiers toujours stockée à l'intérieur de .zip fichiers. Certains des fichiers dans le zip sont de petits fichiers texte et de changer souvent, tandis que d'autres sont plus grandes, mais heureusement plutôt statique (par exemple, des images).

Si je veux placer ces fichiers zip à l'intérieur d'un git référentiel, chaque zip est traitée comme une goutte, alors, chaque fois que je commets le référentiel se développe par la taille du fichier zip... même si seulement un petit fichier texte à l'intérieur de changé!

Pourquoi est-ce réaliste

MS Word 2007/2010 .docx et Excel .xlsx fichiers sont des fichiers ZIP...

Ce que je veux

Est-il, par hasard, une façon de dire git à ne traiter que les fichiers zip, mais plutôt comme des répertoires et de traiter le contenu de ces fichiers?

Les avantages

Mais il ne pouvait pas travailler, dites-vous?

Je me rends compte que sans métadonnées supplémentaires cela conduirait à une certaine dose d'ambiguïté: sur un git checkout git aurait à décider de créer foo.zip/bar.txt en tant que fichier dans un répertoire ou d'un fichier zip. Cependant cela pourrait être résolu par le biais d'options de configuration, je pense.

Deux idées comment il pourrait être fait (si elle n'existe pas encore)

  • à l'aide d'une bibliothèque comme minizip ou IO::Compress::Zip à l'intérieur de git
  • en quelque sorte l'ajout d'un système de fichiers de couche, tels que git voit réellement les fichiers zip comme des répertoires de commencer avec
  • Le scénario avec .docx fichiers de sens, mais dans de nombreux autres cas, vous pourriez envisager de suivi les fichiers individuels normalement avec git et seul bâtiment le résultant .zip utilisant un outil de construction comme make.
  • Considérant que les deux fichiers zip qui semblent différents les uns des autres peut contenir exactement les mêmes données (par exemple un fichier texte zippé à deux reprises avec deux différents niveaux de compression), cela devient beaucoup plus compliqué. Alors qu'il est facile de représenter la diff entre les deux versions des fichiers décompressés avec peu d'informations, je suppose que représente la diff entre les deux versions de l'archive (qui est essentiellement ce que git a à faire) avec aussi peu d'informations serait non négligeable.
  • Avez-vous jamais jusqu'à la fin avec une solution mise en œuvre de Jeff réponse ou tout autre chose? Je me demandais fondamentalement les mêmes, sauf pour les archives tar, ce qui devrait générer un compatible de réponse...
  • SAP de l'Outil de Conception d'Information (IDT) crée un fichier similaire à la structure de son UNX format. Il est également récursive: il contient un BLX fichier et un DFX de fichier, qui sont à la fois des archives, qui correspondent à l'est "couche" et "de la fondation de données', respectivement. J'aimerais avoir une solution.
  • Jetbrains construire-dans le VCS ne vous permettent de regarder à l'intérieur de zip les fichiers de type. Très utile, mais vous oblige à examiner par exemple, PRs à l'intérieur de l'IDE. Maintenant que Microsoft a pris le dessus, on peut voir cela dans le github pr diff ainsi.