2010-03-24 5 views
1

Essayer de comprendre quelque chose. J'ai créé un dépôt d: \ svn \ sur mon serveur. J'ai commis des dossiers mais quand je retourne à d: \ svn \ repository je ne les vois pas. Sont-ils tous dans une base de données? Est-ce que tous mes dépôts iront dans ce dossier principal et svn les suivra? Et si j'ai deux projets?Où se trouvent les dossiers svn sur le serveur?

Merci.

Répondre

4

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 ce qui est affecté à ce dépôt va dans ce fichier. Vous ne trouverez pas votre structure logique sur le serveur, cela ne fonctionne pas de cette façon.

De FSFS

À la mi-2004, un deuxième type de système de stockage de dépôt est entré en être: celui qui n'utilise une base de données du tout. Un référentiel FSFS stocke un arbre de révision dans un seul fichier , et donc toutes les révisions d'un référentiel peuvent être trouvées dans un sous-répertoire unique plein de fichiers numérotés. Les transactions sont créées dans des sous-répertoires distincts, . Une fois terminé, un fichier de transaction unique est créé et déplacé vers le répertoire de révisions, ainsi garantissant que les validations sont atomiques. Et comme un fichier de révision est permanent et immuable, le référentiel peut également être sauvegardé tandis que "hot", tout comme un dépôt Berkeley DB .

Le format de révision fichier représente une structure de répertoire de révision , fichier contenu et deltas contre fichiers dans autres arbres de révision. Contrairement à une base de données Berkeley DB , ce format de stockage est portable sur différents systèmes d'exploitation et n'est pas sensible à l'architecture de la CPU. Parce qu'il n'y a pas de journalisation ou fichiers de mémoire partagée étant utilisé, le référentiel peut être en toute sécurité accédé sur un réseau système de fichiers et examiné dans un environnement lecture seule . L'absence de surcharge de la base de données signifie également que la taille globale du référentiel est un peu plus petite.

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) pour ajouter entrées, tandis que Berkeley DB utilise un algorithme pour réécrire le répertoire entier O (N^2). D'autre part, FSFS écrit la dernière version d'un fichier comme un delta contre une version antérieure, ce qui signifie que vérifier l' dernier arbre est un peu plus lent que aller chercher les fulltexts stockés dans une révision Berkeley DB HEAD . FSFS aussi a un délai plus long lors de la finalisation d'un commit , ce qui pourrait dans les cas extrêmes provoquer des clients de délai d'attente en attendant pour une réponse.La différence la plus importante, cependant, est l'incapacité de FSFS à être "coincé" quand quelque chose ne va pas. 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 se produisent dans un référentiel FSFS , le référentiel n'est pas affecté. Au pire, certaines données de transaction sont laissées pour compte.

Questions connexes