43 votes

SVN : comment revenir à la révision précédente ?

Une série d'erreurs ont été commises dans un projet sur lequel je travaille. Comment puis-je revenir à une révision de travail connue et construire à partir de celle-ci ? Disons que je suis à la révision 15, mais que je veux revenir à la révision 10 -- et travailler à partir de la 10. J'utilise Zend Studio.

Puis-je supprimer des révisions qui existent dans le SVN ?

61voto

ashicus Points 629

Depuis la ligne de commande :

svn up -r [revision_number]

Où [numéro de révision] est la révision à laquelle vous voulez revenir.

Et non, vous ne pouvez pas supprimer les révisions qui existent déjà dans le SVN.

15voto

Aniket Thakur Points 10135

Vous pouvez simplement faire une mise à jour de la révision en utilisant

svn up -r 10

Mais comme Christoph l'a suggéré, cela va ne vous permet pas de valider les changements car SVN a besoin que vous mettiez à jour votre copie de travail vers HEAD avant que vous puissiez commiter. Ce que vous pouvez faire à la place est

svn merge -r HEAD:10 yourFile
svn ci yourFile -m "Reverting back to rev 10"

12voto

Unsigned Points 3312

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.

  1. Mettez à jour votre copie de travail en $(GOODREV) (Si elle est laissée à HEAD il sera inutilisable après que nous ayons terminé).
  2. 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.
  3. Sauvegardez votre repo. (Ça ne fait jamais de mal, juste au cas où quelque chose se passe mal).
  4. Changez le numéro dans db/current à la $(GOODREV) . Veillez à ne pas modifier le LF fin de ligne.
  5. Supprimer tous les numéros fichiers (pas les dossiers) dans db/revs/*/* y db/revprops/*/* qui sont > $(GOODREV)
  6. Supprimer db/rep-cache.db
  7. 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 :

  1. Supprimer tous les fichiers dans %APPDATA%\TortoiseSVN\logcache\*
  2. 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.

1voto

ch1ndu Points 111

Obtenez les documents à partir du site du bureau de TortoiseSVN.

  1. Utiliser la boîte de dialogue du journal des révisions
  2. Utilisez la boîte de dialogue de fusion

J'utilise la méthode 2 et cela fonctionne bien de mon côté.

https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-rollback.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X