2011-02-01 9 views
2

Quelles sont les meilleures pratiques pour la gestion des versions de données contenues dans plusieurs fichiers CSV volumineux (100 Mo et plus)?Meilleures pratiques pour la gestion des versions de texte

SVN est-il une bonne option?

Mise à jour: Après avoir délibéré sur ce pendant un certain temps, je pense qu'il peut être une meilleure option pour GZIP/Zip le fichier CSV, puis ajoutez-le à la prise en pension. De cette façon, je voudrais économiser sur le mal de tête de la gestion des versions tout en ne perdant pas sur l'espace disque. C'est au moins aussi bon, sinon meilleur, que de gérer leurs versions manuellement.

Toujours à la recherche de la solution parfaite.

De plus, une petite note: La version du contenu du fichier n'est pas une exigence. Comme je n'ai pas besoin de savoir quels mots ont changé dans le fichier tant que je suis capable d'enregistrer un résumé des changements ou d'ajouter une note à chaque version.

Répondre

1

SVN est terriblement lent car il transfère toutes les données sur le réseau. Essayez un référentiel git ou hg local. Cela nécessite seulement un accès au fichier, qui devrait être beaucoup plus rapide que le réseau. Les deux types de repo ont également une meilleure gestion en ce qui concerne le déplacement de fichiers, le renommage de fichiers et la fusion. De plus, git peut utiliser des «plugins» pour prendre en charge d'autres types de fichiers, tels que la fusion de documents de bureau (odf, doc, etc.).

Contrairement à SVN, vous ne disposez que d'un répertoire repo caché contenant le référentiel compressé. SVN a un .svn dir dans chaque sous-répertoire contenant le dernier état du fichier (et d'autres choses).

Quelques nombres aléatoires:

On suppose la taille de tous les fichiers (pas d'info repo) dans le dépôt est 100MB

  • Une caisse SVN prendrait 200 à 250 Mo, toutes les anciennes versions doivent être transférées par le serveur SVN.
  • Un repo git ou hg prendrait 150 Mo (en supposant que les fichiers peuvent être bien compressés), y compris toutes les versions des fichiers.

C'est ce que nous avons expérimenté avec SVN et git. J'utilise hg (mercurial) seulement de temps en temps.

En ce qui concerne la réponse de MrEyes, je suggère également d'ajouter quelques informations de version au fichier CSV, ou un nom de fichier. Git identifiera le nom du fichier, y compris les modifications, etc.

1

Cela dépend en grande partie de la manière dont vous envisagez d'utiliser ces fichiers. Le SVN, et la plupart des autres systèmes de contrôle de source, vous donnerait des numéros de révision qui identifieraient de manière unique une version spécifique du fichier. Chaque fois que vous validez un nouveau CSV, ce commit aura son propre numéro de révision.

Mais ...

Selon l'utilisation, il pourrait ne pas être une bonne solution. Disons que vous vérifiez un CSV et ceci est sur le numéro de révision SVN 1234. Quelqu'un vérifie alors ce fichier, l'envoie peut-être à quelqu'un d'autre etc. Le détenteur du CSV ne saura pas, du CSV, quelle révision il est et par conséquent ne saura pas s'ils utilisent la dernière version.

Personnellement, je voudrais mettre un numéro de version dans le nom de fichier ou ajouter une ligne au début/fin du fichier CSV qui contient le numéro de version - mais cela dépend également de votre utilisation.

Food for thought ...

EDIT De plus il pourrait y avoir un problème avec diffs, je ne suis pas certain si SVN prend en charge les diffs sur CSV si chaque fois que vous archivez, withing les entrailles de SVN, il pourrait remplacer complètement l'ancien fichier (en conservant l'ancien pour référence). Cela pourrait rapidement utiliser beaucoup d'espace disque.

Questions connexes