Trois options :
Fusion inversée : (le plus rapide, garde les mauvaises révisions, ajoute une nouvelle révision)
svn merge $(REPO)@$(GOODREV) $(WC)
Dépôt SVN : (supprime entièrement les mauvaises révisions)
svnadmin dump $(REPO) -r 1:$(GOODREV) > dumpfile
svnadmin load $(NEWREPO) < dumpfile
# Now delete $(REPO), and use $(NEWREPO)
Montage manuel : (supprime les mauvaises révisions, non sécurisées, dernier recours)
La seule raison pour laquelle vous pourriez en avoir besoin est si, pour une raison quelconque, vous avez un accès au niveau des fichiers au référentiel, mais pas d'accès au shell. Notez que ceci n'a été testé que sur SVN 1.6 et 1.7.
- Mettez à jour votre copie de travail en
$(GOODREV)
(Si elle est laissée à HEAD
il sera inutilisable après que nous ayons terminé).
- Prenez toutes les mesures pour sécuriser le repo contre les accès extérieurs. S'il est relié à un serveur web, déconnectez-le maintenant. Les accès de tiers au repo pendant ce processus peuvent l'endommager.
- Sauvegardez votre repo. (Ça ne fait jamais de mal, juste au cas où quelque chose se passe mal).
- Changez le numéro dans
db/current
à la $(GOODREV)
. Veillez à ne pas modifier le LF
fin de ligne.
- Supprimer tous les numéros fichiers (pas les dossiers) dans
db/revs/*/*
y db/revprops/*/*
qui sont > $(GOODREV)
- Supprimer
db/rep-cache.db
- Mettez à jour votre copie de travail en
HEAD
qui devrait maintenant être égal à $(GOODREV)
.
Notez que si vous utilisez TortoiseSVN vous devez également suivre ces étapes :
- Supprimer tous les fichiers dans
%APPDATA%\TortoiseSVN\logcache\*
- Tuer toutes les instances
TSVNCache.exe
via le gestionnaire des tâches. (Il y en a généralement un, mais pourrait être 2 sur WinVista+ en raison de la sécurité UAC, qui empêche les applications élevées d'interagir avec une application non élevée. TSVNCache.exe
. La première fois que vous ouvrez un Save As...
à partir d'une application élevée, une application élevée TSVNCache.exe
se reproduira).
Cela corrigera l'affichage bizarre du journal causé par le cache de TortoiseSVN en conflit avec le nouvel état du repo.