Gestionnaire de version pour des fichiers binaires

a marqué ce sujet comme résolu.

Ce post à simplement une visé informative, pour accroître ma culture "informatique" ;)

J'utilise très souvent des les logiciels de versionnage, tel que Git, pour tout et n’importe quoi : des projets info (normal), mes cours … Ça me permet d'avoir un historique clair, commenté de toutes mes modification, et d'avoir la possibilité de revenir en arrière si besoin.

Le truc, c'est que dans pas mal de mes utilisations, je ne manipule que des fichiers binaire. Git permet bien entendu de gérer ce type de fichier, mais je ne pense pas que ce soit sont domaine de performance. D'où ma question : existe-il un logiciel similaire à Git qui serait "spécialisé" dans des fichiers binaires ?

La question que l'on peut se poser, c'est qu'est ce que ces logiciels apporteraient en plus par rapport à Git ? Et bien je n'en sais rien justement, mais si ça existe c'est qu'il doit bien y avoir certaines fonctionnalités en plus ;)

Peut être éxiste-t-il également des logiciel spécialisés dans le versionnage d'images ?

Merci d'avance pour vos réponses :)

+0 -0

Arrêtez-moi si je suis en train de dire une grosse connerie, mais je crois que c'est tout simplement impossible d'avoir un gestionnaire de version générique pour fichiers binaires.

Comme je comprends le fonctionnement des gestionnaires de version comme GIT, à la base ça se fonde sur le longest common substring problem pour repérer où sont les points communs et les différences entre plusieurs versions d'un même fichier. Problème qui est, si je ne m'abuse, np complet et nécéssitant forcément de la programmation dynamique pour être résolu.

Du coup pour comparer deux fichiers de tailles m et n, on a besoin basiquement d'une mémoire de $O(m*n)$.

Si on définit que l'unité de base est la ligne, ce n'est pas trop gênant. ON a rarement des énormes fichiers qui font 10000 lignes, en général on préfèrera assez vite découper son code source een 10 ou 100 fois plus de plus petits fichiers.

Par contre pour des fichiers binaires, si on ne connaît rien du format, l'unité de comparaison ne peut être que l'octet. Du coup pour détecter ce qui a changé dans un fichier de 10 Ko, on va facilement utiliser pas moins de 200 Mo de RAM… et encore, j'ai pas essayé de piger comment fonctionnait la fusion à 3 branches, sûrement que c'est de la programmation dynamique en 3D en $O(n*m*p)$.

Pour que ça puisse marcher, il faut qu'on en connaisse un peu plus sur le format du fichier binaire, pour pouvoir grouper les informations et définir une granularité plus grande. Qui dit connaître des informations sur le format dit évidemment pas appliquable de manière générique. Mais on pourrait très bien avoir des gestionnaires de version spécialisés capables de traiter spécifiquement les images, les sons ou les vidéos enregistrés dans des formats bien définis, pour autant qu'il y ait un moyen de découper ce genre de fichier en unités utiles.

+1 -0

A mon humble avis, bien que ne m'y connaissant pas trop dans la théorie, il y a là un domaine à explorer. Par exemple notamment en couplant à de la déduplication de données, il serait facile de faire du versionnement sur de gros fichiers tout en économisant de la place.

+0 -0

Est-ce, pour un fichier binaire, stocker une représentation textuelle pourrait améliorer “les choses” (reste à définir les choses) comme du base64 (en utilisant les hooks de git pour la conversion à la volée, par ex.).

A mon avis de toute façon le base64 ne changera rien, c'est juste un encodage. Le base64 est en mesure d'encoder n'importe quelle donnée binaire, donc théoriquement, on n'a rien appris. Au final on en sait pas plus sur la nature des données et comment les fractionner en unités de comparaison utiles.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte