Comment puis-je supprimer des données du référentiel SVN local?

2

J'ai accidentellement commis tout un tas de fichiers binaires en utilisant l'option "Ajouter un dossier" de TortoiseSVN alors que j'aurais dû utiliser simplement "Créer un dossier". Je ne veux pas de ces fichiers binaires au format SVN car ils occupent beaucoup d’espace sur mon disque dur et ne tirent aucun avantage du versioning. Cependant, je ne suis pas sûr de la meilleure façon de remédier à ce désordre de manière à libérer la mémoire utilisée pour la validation de tous ces fichiers binaires. Je peux facilement supprimer tous les fichiers et les commettre, mais je ne suis pas convaincu que cela effacera réellement les données associées de SVN, en particulier de la révision dans laquelle ils ont été ajoutés.

J'ai regardé dans le répertoire de dépôt SVN et trouvé un fichier gigantesque "db / revs / 67" qui, je suppose, représente les données de la révision 67 dans laquelle ces fichiers ont été ajoutés. Puis-je simplement supprimer ce fichier ou cela posera-t-il des problèmes à SVN? Il semble que je devrais supprimer ou modifier des fichiers ailleurs, donc SVN agit comme si ces révisions n’existaient jamais?

Aaron
la source

Réponses:

3

Pour supprimer en toute sécurité une révision de votre historique SVN, vous devez exporter le référentiel avec la révision supprimée, puis le restaurer à partir du fichier de vidage. Pour ce faire, exécutez les commandes suivantes sur un terminal ou à l'invite de commande Windows:

svnadmin dump /path/to/repo -r1:66 > svn.dump
ren /path/to/repo /path/to/backup
svnadmin create /path/to/repo
svnadmin load /path/to/repo < svn.dump

(Sur les systèmes * nix, remplacez renpar mv.)

Une fois que vous êtes certain que tout va bien dans le nouveau référentiel, vous pouvez supprimer la sauvegarde.

Envisagez d'utiliser la svn:ignorepropriété pour empêcher que ces fichiers ne soient validés dans le référentiel à l'avenir. Vous pouvez ajouter des fichiers à la liste des ignorés avec TortoiseSVN en cliquant dessus avec le bouton droit de la souris, en accédant à TortoiseSVN et en choisissant Ajouter pour ignorer la liste .

Les patchs
la source
Merci. Je ne connais pas très bien l'invite de commande. Pouvez-vous préciser: 1) Comment obtenir une invite de commande pour reconnaître ces commandes? 2) Chaque ligne est-elle une nouvelle commande? 3) Quand dois-je spécifier où placer la copie, est-ce que c'est dans la deuxième ligne "chemin / vers / sauvegarde"?
Aaron
... dans l'intervalle, j'ai supprimé / db / revs / 67 et / db / revprops / 67 et modifié / db / current de "67 1h5 p" à "66 1h5 p" sur une copie du repo entier. Cela semble avoir fonctionné.
Aaron
@ Aaron: L'invite de commande dans Windows se trouve dans Démarrer> Tous les programmes> Accessoires. Chaque ligne est une nouvelle commande (par exemple, appuyez sur Entrée après chaque commande.) D'après ce que je comprends, la suppression de la dernière révision ne devrait poser aucun problème, mais s'il en avait été une précédente, votre référentiel aurait cessé de fonctionner.
Patchs
Chaque fois que j'essayais les commandes svn, il disait simplement que "svnadmin n'est pas une commande reconnue" ou similaire. Je suppose que je devais y accéder quelque part, mais je n'arrivais pas à comprendre.
Aaron
@Aaron: Devrait être C:\Program Files\Subversion\bin(peut C:\Program Files (x86)\Subversion\bin- être sur Windows 64 bits), mais si il est venu avec TortoiseSVN, il aurait pu le mettre quelque part différemment. Vous pouvez regarder autour de vos Program Filesou Program Files (x86)dossiers pour être sûr. Basculez vers ce répertoire avec la cdcommande suivie d'un espace avec le chemin entre guillemets.
Patchs