Où Subversion stocke-t-il physiquement sa base de données?
Après la lecture de nombreuses introductions, à partir des guides, et de la documentation sur le SVN, je n'arrive toujours pas à comprendre où est mon versioning des données stockées. Je veux dire physiquement. J'ai plus de MODIFIER [1/2 GO] du code vérifié, et les pensions de titres sont à seulement quelques MO. C'est encore le Vaudou pour moi. Et, en tant que programmeur, je ne crois pas vraiment à la Magie.
EDIT :
Un intervenant a déclaré que pas tout le code a été stocké dans le dépôt, est-ce vrai ? Je veux dire, si je supprime ma copie de travail locale, je ne peux récupérer mon code source pour le dépôt...
Si oui, je n'arrive toujours pas à comprendre comment une telle compression peut se produire sur mon code...
EDIT 2 :
Quand j'ai importer le code dans le référentiel, j'ai le message "50 MO uploadé" et le repo actuel est beaucoup plus petite. Algos de Compression doivent être impliqués.
BTW, C'est drôle de lire certaines réponses et de voir comment beaucoup de gens le FONT, en Effet, croire en la Magie, et l'utilisation de SVN, sans VRAIMENT Savoir ce qui se passe derrière les coulisses...
source d'informationauteur Mehdi LAMRANI
Vous devez vous connecter pour publier un commentaire.
Mettre cela comme une réponse, par Mika demande:
Je suis surpris par la façon dont beaucoup de gens ont cette réponse erronée. L' .svn dossier n'est PAS là où le serveur stocke ses fichiers (parce que c'est local à la machine personne ne serait en mesure de vérifier cette information), et, tout en SVN stocke uniquement les diffs (en supposant que FSFS), il doit stocker les originaux quelque part.
Bien sûr, comme @csharptest.net dit: "j'imagine, à hauteur de 70% de la perf de données, l'autre de 29,99% est dans 'obj' et 'bin' de répertoires. vous laissant avec les 10 mo de code de la rentrée." Si vous n'êtes pas en train de vérifier dans tous ces renseignements de toute façon. La plupart des il ne pénètre jamais dans le référentiel. En outre, SVN utilise beaucoup d'algorithmes de compression et de diverses techniques et n'a pas nécessairement stocker vos données octet par octet dans le référentiel. Qui peut être pourquoi vous voyez une différence dans la taille.
Si vous êtes intéressé par la lecture de plus de la façon dont SVN fonctionne, lire à ce sujet à ce Stackoverflow répondre.
Espère que ça aide!
Cela dépend de ce que vous utilisez pour votre serveur Subversion. J'utilise VisualSVN Serveuret il enregistre les fichiers du dépôt c:\Repositories.
Votre dépôt svn est stocké dans un dossier du système de fichiers, il doit contenir des sous-dossiers comme:
conf, dav, db, hooks, locks
. Ces dossiers constituent le référentiel.Il y a un svnadmin outil que vous pouvez utiliser pour gérer le référentiel.
Il est stocké dans le système de fichiers. Exactement où dépend de la façon dont le système a été mis en place. Aussi, lorsque vous créez un nouveau dépôt, il peut être n'importe où sur votre système de fichiers. Votre installation doit disposer d'un emplacement par défaut, mais la création d'un nouveau repo peut être fait n'importe où, vous pourriez avoir à regarder autour de vous pour trouver le chemin d'accès réel.
Ce qui est fait dans la version en ligne de commande comme ceci:
Dans l'exemple ci-dessus, le référentiel est stocké dans "d:/path_to_repository "
Aussi, quand on regarde le montage de code que vous avez dans votre ordinateur local, vous êtes de filtrage de contenu qui ne va pas dans le serveur? Vous devriez avoir une liste des ignorés globale pour exclure des éléments qui n'ont pas de contrôle de source. (l'utilisateur a changé de contenu, généralement compilé projets, etc.) Vous avez peut-être une surestimation de la taille réelle de votre référentiel.
Pourquoi ne pas vous extrayez une nouvelle copie de travail, y construire, et de vérifier que tout fonctionne toujours? Nous pouvons tous écrire les réponses ici et devinez combien de % peut-être où, mais à la fin, vous devriez toujours vérifier que tout ce qui doit être ajouté à la Subversion.
Je réalise que c'est un vieux thread, mais après l'avoir lu, j'ai pensé que je jetterais dans mon $.02.
Facteurs qui contribuent à un grand fichier local situé dans une copie de travail sont:
Comme mentionné précédemment, la copie de travail meta/état des données de la vie dans le caché (par défaut)
.svn
répertoires. Alors que les méta-données est assez petit, pour chaque fichier dans la copie de travail, il est une copie de travail de base. Ce sera tout simplement le double de l'espace disque utilisé pour n'importe quel fichier qui vit dans le référentiel.Si le référentiel comprend tout copié chemins (typique dans le cas des succursales ou tags), vous pourriez vous retrouver avec de nombreux temps de la physique de l'espace utilisé. C'est parce que l'espace réel utilisé dans un dépôt SVN pour une "logique" copie est minuscule. C'est vraiment juste un pointeur de retour à une révision particulière de la source chemin. Vous pourriez dupliquer l'ensemble de votre espace de stockage avec une opération de copie des résultats dans le nouveau référentiel de données de seulement quelques centaines d'octets (c'est aussi la raison pour laquelle toute opération de copie prend les mêmes, peu de temps). Pourtant, quand vous découvrez ou de mettre à jour la copie de travail, il pourrait être deux fois plus grand qu'avant vous l'avez copié. C'est typiquement pourquoi on utiliserait un fonctionnement de l'interrupteur pour changer une copie de travail sur une branche ou une étiquette d'une logique copié chemin au lieu de récursivement de la vérification de l'ensemble d'un référentiel à partir de sa racine.
Moi aussi, j'ai été très impressionné par la façon compacte SVN magasins et de transférer ses données de référentiel.
Caché .svn dossier dans chaque répertoire versionné.