Libérer de l'espace dans mon référentiel SVN


8

J'ai un référentiel SVN hébergé sur un site freemium avec une taille de référentiel maximale. À l'approche de cette capacité, je suis conscient des fichiers que j'ai archivés et je sais que je peux les supprimer définitivement pour libérer de l'espace disque. Comment puis-je dire à SVN qu'un fichier peut non seulement être supprimé, mais aussi son historique?

Réponses:


7

comme le dit Hubert, svnadmin packva regrouper tous les fichiers repo individuels dans un répertoire dans un seul gros fichier. Cela vous fera économiser de l'espace, mais cela ne fait que retarder le jour du calcul pour vous. (il devrait cependant accélérer les opérations d'historique, donc c'est une bonne suggestion de toute façon). Une chose à noter est qu'il ne fonctionne que sur les répertoires partagés (c'est-à-dire que la nouvelle structure de répertoires consiste à mettre 1000 révisions dans un seul répertoire, puis à démarrer un nouveau répertoire) et qu'il ne contient que les anciens répertoires de fragments, pas celui avec la révision actuelle en elle.

Donc, votre seule option est de supprimer les anciennes révisions de votre historique. Cela nécessite le vidage et le chargement de svnadmin , avec éventuellement un filtre pour supprimer les répertoires de votre référentiel dont vous n'avez plus besoin. (ex: anciennes branches temporaires).

Le vidage est facile: svnadmin dump -r xxx:HEADoù xxx est la révision la plus ancienne que vous souhaitez conserver (c'est-à-dire qu'elle videra les plus récentes, de sorte que votre ancienne révision est supprimée, comme l'archivage). Vous pouvez conserver l'archive des anciennes révisions en les vidant aussi ( svnadmin dump -r 1:xxx)

Une fois que vous avez votre fichier de vidage, le charger est aussi simple que d'exécuter la charge svnadmin en passant le nom du fichier de vidage. il peut être judicieux de supprimer l'ancien référentiel avant de charger le nouveau - vous bénéficierez alors des dernières propriétés du système de fichiers du serveur, si vous ne les avez pas déjà.

Si vous souhaitez conserver toutes les anciennes révisions mais filtrer certains répertoires, vous voudrez exécuter le fichier de vidage via svndumpfilter , qui supprimera les chemins spécifiés. Sachez que vous voudrez effectuer un vidage sans utiliser l'option --incremental.

Évidemment, testez toutes les opérations localement - vidage dans un fichier local, puis chargez-le dans un dépôt temporaire sur votre disque local (ce sera aussi plus rapide) et testez que l'historique et la dernière version fonctionnent bien - j'exporte la dernière révision dans un et utilisez winmerge pour vérifier que les fichiers sont identiques à une exportation de la dernière révision du repo en direct. Essayez-le aussi avec une révision historique si vous voulez être paranoïaque.


3

De la FAQ Subversion :

Le projet prévoit ... d'implémenter un jour une commande svnadmin obliterate qui accomplirait la tâche de suppression définitive des informations.

...

En attendant, votre seul recours est de vider svnadmin votre référentiel, puis de diriger le fichier de vidage via svndumpfilter (à l'exclusion du mauvais chemin) dans une commande de chargement svnadmin.


2

Vous ne pouvez pas supprimer un fichier du référentiel SVN sans faire la svnadmin dump; svndumpfilter; svnadmin loaddanse. Vous pouvez réduire la taille du référentiel si vous utilisez FSFS, il suffit de l'exécuter svnadmin packsur le répertoire repo.


0

Généralement, c'est une mauvaise idée de supprimer des fichiers d'un référentiel sous contrôle de version.

Je ne suis pas sûr d'avoir bien compris, mais c'est ainsi que je le comprends. Le contrôle de version concerne des sommes de contrôle uniques. Si vous supprimez quelque chose, il y a un risque que ces sommes de contrôle soient réutilisées, ce qui entraîne des conflits. Cela ne vaut tout simplement pas la peine d'atténuer un problème d'espace disque insuffisant de cette façon, il est préférable de mettre à niveau votre plan de données.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.