Où sur le serveur sont les dossiers svn Je suis arrivé?
Question
Essayer de comprendre quelque chose. J'ai créé un d: \ svn \ dépôt sur mon serveur. Je me suis engagé des dossiers, mais quand je reviens à d: \ svn \ dépôt Je ne les vois pas. Sont-ils tous dans une base de données? Est-ce que tous mes dépôts aller dans ce dossier principal et svn les pistes? Et si j'ai deux projets?
Merci.
La solution
Subversion ne stocke pas les dossiers logiques dans la même structure sur le serveur, il suit tout dans un fichier des deltas dans une « base de données ». Cette base de données est spécifique à Subversion. Tout est engagé à ce référentiel va dans ce fichier. Vous ne trouvez pas votre structure logique sur le serveur, il ne fonctionne pas de cette façon.
De FSFS
À la mi-2004, un deuxième type de système de stockage est entré en dépôt être: celui qui n'utilise pas base de données du tout. Un dépôt FSFS stocke un arbre de révision en une seule déposer, et ainsi tous un dépôt de les révisions se trouvent dans un seul sous-répertoire complet des fichiers numérotés. Les transactions sont créées séparément sous-répertoires. Une fois terminé, un seul fichier de transaction est créé et déplacé dans le répertoire des révisions, ainsi garantissant que commits sont atomiques. Et parce qu'un fichier de révision est permanent et immuable, la dépôt peut également être sauvegardé tout « Chaud », comme un Berkeley DB dépôt.
Le format de révision fichier représente un La structure des répertoires de révision, fichier contenu et deltas contre les fichiers d'autres arbres de révision. Contrairement à un base de données Berkeley DB, ce stockage format est différent portable sur systèmes d'exploitation et est insensible à l'architecture du processeur. Parce qu'il ya pas de journalisation ou des fichiers de mémoire partagée être utilisé, le dépôt peut être accessibles en toute sécurité sur un réseau système de fichiers et examiné dans une lecture seule environnement. L'absence de base de données les frais généraux signifie également que l'ensemble la taille de stockage est un peu plus petit.
FSFS a des performances différentes caractéristiques aussi. Lors de commettre un répertoire avec un grand nombre de fichiers, FSFS utilise un algorithme O (N) à ajouter entrées, tandis que Berkeley DB utilise un O (N ^ 2) algorithme de réécrire l'ensemble annuaire. D'autre part, FSFS écrit la dernière version d'un fichier en tant que un delta contre une version antérieure, ce qui signifie que la vérification de la le dernier arbre est un peu plus lent que la récupération des fulltexts stockées dans une Berkeley DB révision HEAD. FSFS aussi a un délai plus long lors de la finalisation d'un engager, ce qui pourrait dans des cas extrêmes les clients à faire le temps d'attente lorsque une réponse.
La distinction la plus importante, cependant, est l'incapacité de FSFS être « Calée » quand quelque chose va mal. Si un procédé utilisant une base de données Berkeley DB se heurte à un problème d'autorisations ou bloque tout à coup, la base de données reste inutilisable jusqu'à ce qu'un administrateur le récupère. Si les mêmes scénarios arriver à un procédé utilisant un FSFS dépôt, le dépôt n'est pas affecté du tout. Au pire, certains les données de la transaction est laissée derrière.