2009-07-20 10 views
6

Existe-t-il différentes méthodes pour stocker des fichiers binaires dans SVN? si oui, quels sont-ils, et comment je modifie les options de stockage?méthodes pour stocker des fichiers binaires dans SVN

Je lis qu'il ya 4 façons de stocker des fichiers binaires dans SVN:

  1. goudron comprimé - import - export.
  2. Tar - import - export.
  3. import-export.
  4. Enregistrement efficace.

Lesquels sont les plus utiles pour l'efficacité temporelle? et comment puis-je configurer le SVN pour utiliser l'une de ces méthodes?

Merci, Oded.


J'ai plusieurs fichiers binaires de petite taille et quelques fichiers de grande taille. Tous sont changés fréquemment. Je travaille actuellement sur CVS et passer rapidement à SVN et je voulais savoir comment stocker les binaires. J'ai lu Performance Subversion de réglage (mentionné ci-dessus) et l'a trouvé utile mais aucun exemple fait ainsi je n'ai pas compris exactement comment faire chacune des 4 manières qu'il a suggérées.

Ma question de base est la météo ou non les valeurs par défaut sont bonnes (et de quoi s'agit-il?) Ma première considération est le temps et ensuite l'espace. Merci :)

Répondre

3

Vous ne définissez pas Subversion pour utiliser l'une de ces méthodes, vous spécifiez la méthode à utiliser lors de la mise des fichiers dans le référentiel. Et par "méthode", je ne veux pas dire l'un des 4 que vous mentionnez, mais plutôt "importer" ou "commettre", et vous devrez continuer à dire à Subversion sur la méthode choisie chaque fois que vous voulez stocker un nouveau révision de ce fichier dans le référentiel.

Voir Performance tuning Subversion. Comme vous pouvez le voir dans la description, pour utiliser "méthode 1", compresser en tar et ensuite importer, ils doivent eux-mêmes compresser tous les fichiers binaires dans un fichier .tar, puis utiliser l'import commande de Subversion pour ajouter les fichiers dans le référentiel. Notez également que la commande d'importation stocke les fichiers en tant que nouveaux fichiers, et non en tant que deltas à une révision précédente, il peut donc être efficace, mais pas efficace, si peu de modifications ont été apportées à un gros fichier. engagé.

Subversion à lui seul ne commits et importations. Un commit est une nouvelle révision d'un fichier existant, stocké comme une séquence de deltas (ou la première révision d'un nouveau fichier, qui ne l'est pas), et une importation est juste un nouveau fichier. Tout ce que vous aurez à faire vous-même. Si les fichiers binaires ne sont changés que de temps en temps, cela vaut peut-être la peine d'être approfondi, mais s'ils sont changés régulièrement, je suggérerais d'utiliser Subversion comme d'habitude, avec la commande commit. Notez également que le conseil typique quand il s'agit de fichiers binaires est que vous au lieu du fichier binaire stocke le code source à tout ce qui produit ces fichiers binaires, si possible, puis réexécute les outils à reproduire les fichiers binaires réels. Si les fichiers binaires ont besoin de temps ou d'espace pour être reproduits, alors vous stockez également les fichiers binaires en question.

Les fichiers binaires ont le problème de ne pas être vraiment bons à comparer, et donc si le développeur a et b récupèrent tous les deux la dernière version, le développeur commet une nouvelle révision avant que le développeur b essaie de faire la même chose. conflit se produira. Le développeur B n'a peut-être pas d'autre choix que d'essayer de comprendre les changements lui-même.


Modifier: Permettez-moi d'insister sur ce que je veux dire par ENGAGE et d'importation. La principale différence est que COMMIT, en supposant déjà que vous avez déjà le fichier dans le référentiel, essaie de faire la différence entre le fichier de votre copie de travail et la version précédente du référentiel, et ne stocke que les modifications. Cela prendra du temps, et de la mémoire, pour résoudre ces différences, mais entraînera généralement un petit ensemble de modifications de révision dans votre référentiel. En d'autres termes, l'espace disque sur votre serveur Subversion sera moins impacté qu'avec la commande IMPORT. D'autre part, IMPORT va importer le nouveau fichier comme si vous lui aviez donné un nouveau fichier et dit "oubliez le précédent, il suffit de stocker ce fichier", et donc pas de temps ou de mémoire sera dépensé sur travailler sur les différences, mais l'ensemble de modifications qui en résulte dans le référentiel sera plus grande. En d'autres termes, l'espace disque sur votre serveur Subversion sera plus impacté qu'avec la commande COMMIT, mais IMPORT fonctionnera généralement beaucoup plus vite.

Tout autre flux de travail que vous souhaitez imposer doit être effectué en dehors de Subversion. Cela inclut les options de commande et de compression TAR disponibles dans votre système d'exploitation. Si vous voulez utiliser la "méthode 1", vous devez vous-même compresser manuellement le (s) fichier (s) que vous voulez importer dans un seul fichier .tar avant de le donner à Subversion. Vous ne pouvez pas demander à Subversion de faire cela pour vous. Vous pouvez bien sûr créer des fichiers script qui automatisent un peu le processus, mais ce n'est pas un problème de Subversion.

Je ferais des tests sérieux avec ceci pour déterminer si les gains valent réellement le travail supplémentaire que vous imposerez à votre flux de travail Subversion.

+0

es-tu en train de dire que les 2 seules options sont IMPORT et COMMIT? et que Import a la possibilité d'importer un fichier tar compressé (compressé manuellement) ou les fichiers ordinaires? lequel de 3 est le temps efficace? merci :) – Oded

+0

IMPORT importera tout ce que vous lui donnez, qu'il s'agisse du fichier original, d'un fichier tar, d'un fichier gzip, d'un fichier zip, d'un fichier rar, etc. COMMIT également. La différence est que COMMIT essaiera de comparer le fichier à sa précédente révision du référentiel, alors que IMPORT ne le fera pas, donc il sera plus rapide, mais prendra plus de place s'il y a des changements par rapport à la révision précédente. . –

+0

Je pense que je comprends maintenant. Est-ce que dans VisualSVN je peux peut-être configurer le mode de stockage pour les fichiers binaires ou il n'y a pas d'autre option que de le faire manuellement ou d'écrire des scripts? – Oded

1

Pourriez-vous décrire votre situation plus en détail?

Avez-vous plusieurs petits fichiers binaires qui changent tous ensemble? Quelques gros fichiers binaires qui changent indépendamment? Vos fichiers changent fréquemment? Avez-vous trouvé que les valeurs par défaut ne sont pas assez bonnes? J'ai toujours simplement ajouté des fichiers binaires de la même manière que la normale et je l'ai trouvé juste fonctionner. Comme tout problème de performance, je n'essaierai pas de compliquer les choses à moins d'avoir une bonne raison de le faire - dans ce cas, s'il vous plaît, partagez cette raison avec nous.

Questions connexes