Comment fonctionne exactement la subversion de stocker des fichiers dans le référentiel?
J'ai lu le livre de subversion et il est clair pour moi que la subversion ne pas stocker des fichiers, mais uniquement des deltas afin de minimiser l'espace disque. Subversion a également fait de même avec les fichiers binaires (ce utilisé pour être un énorme faiblesse de CVS).
Cependant je ne comprends pas le mécanisme exact. Quand je commets un fichier de ce qui se passe?
- Subversion stocke uniquement les diff (et a déjà l'ancienne version)
- Subversion supprime la version précédente, enregistre le nouveau fichier intact et crée une inversion diff afin de "re-créer" l'ancienne version si nécessaire.
- Quelque chose d'autre que je n'ai pas pensé.
Le premier cas semble le plus logique. Toutefois, cela soulève une autre question. Si j'ai dans un dépôt subversion, un fichier avec 1000 s'engage et un nouveau développeur récupère une copie propre, puis subversion aurait pour récupérer la version d'origine (importation initiale) et d'appliquer 1000 diff sur ce avant de retourner le résultat. Est-ce correct? Est-il une sorte de mise en cache pour les fichiers de la dernière version est conservée ainsi?
Fondamentalement où puis-je trouver des informations sur le dépôt svn internes?
Mise à jour: Apparemment le backend de subversion joue un grand rôle dans cela. À l'époque
ou de l'écriture FSFS utilise l'option 1, tandis que BDB utilise l'option 2. Grâce msemack!
- Petite correction: "plus Tard, des versions de subversion également faire de même avec les fichiers binaires ainsi". La Subversion a TOUJOURS fait (au moins aussi loin que la version 0.3.x).
- double possible de SVN performance après de nombreuses révisions
- Je trouve aussi cela très confus. Il y a plusieurs microprocesseurs disponibles, bdb et fsfs. Ensuite, il y a des documents à propos de "bubble up", passez-delta, qui semblent contredire les uns les autres. Qu'est-ce que la façon actuelle d'un défaut repo svn stocke ses fichiers?
Vous devez vous connecter pour publier un commentaire.
Parce que Subversion référentiel du format est entièrement interne, ils sont libres de modifier la représentation d'une révision à l'autre. Je crois que la révision actuelle généralement les magasins inverse deltas (option 2), mais aussi des magasins complète des instantanés périodiquement afin de ne pas avoir à résoudre des 1000 diff avant de retourner un résultat.
La Subversion 1.6 notes de version a une section sur Système de fichiers de stockage des améliorations qui a quelques notes sur ce, et des liens vers d'autres sources. Autant dire que les détails de la Subversion de stockage de données sont complexes et sujettes à changement.
Il y a aussi un document de conception dans la Subversion de l'arbre source qui décrit l'utilisation de ignorer les deltas dans Subversion. Généralement, le /notes/ répertoire contient plusieurs documents utiles concernant la Subversion des éléments internes.
Je crois que le lien suivant pourrait être utile pour comprendre la fsfs architecture
http://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structure
De la La Subversion De La Conception document (ce qui est assez daté, tout de même), vous pouvez obtenir ceci:
Je ne pense pas que c'était changé depuis.
Aussi, voir Bulle Méthode.
la régulière FSFS spécification peut vous aider.
Ou si vous utilisez la base de données Berkeley, voici les spécifications pour.
FSFS utilise inverse deltas pour enregistrer les modifications et passez-les deltas pour accélérer certaines actions, si j'ai tout compris correctement.
Jeter un oeil à : Subversion FAQ