web-dev-qa-db-fra.com

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

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

Puis-je supprimer les révisions existantes dans SVN?

30
StackOverflowNewbie

A partir de la ligne de commande:

svn up -r [revision_number]

Où [numéro_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 SVN.

48
ashicus

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

svn up -r 10

Mais comme Christoph l’a suggéré, ne vous laissera pas valider les modifications, car SVN a besoin de mettre à jour votre copie de travail sur HEAD avant de pouvoir valider. Qu'est-ce que vous pouvez faire à la place est

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

Trois options:

Fusion inverse: (le plus rapide, conserve les mauvaises révisions, ajoute une nouvelle révision)}

svn merge $(REPO)@$(GOODREV) $(WC)

SVN dump: (supprime entièrement les mauvaises révisions)} 

svnadmin dump $(REPO) -r 1:$(GOODREV) > dumpfile
svnadmin load $(NEWREPO) < dumpfile
# Now delete $(REPO), and use $(NEWREPO)

Édition manuelle: (supprime les mauvaises révisions, non sécurisée, dernier recours)}

La seule raison pour laquelle vous pourriez en avoir besoin est si, pour une raison quelconque, vous avez un accès de niveau fichier au référentiel, mais aucun accès Shell. Notez que cela n’a été testé que sur SVN 1.6 et 1.7.

  1. Mettez à jour votre copie de travail à $(GOODREV) (Si vous laissez à HEAD, il sera inutilisable une fois que nous aurons terminé.)
  2. Prenez toutes les mesures nécessaires pour sécuriser le repo depuis un accès extérieur. S'il est connecté à un serveur Web, déconnectez-le maintenant. L'accès de tiers au référentiel pendant ce processus peut l'endommager.
  3. Sauvegardez votre repo. (Jamais mal, juste au cas où quelque chose se passe mal.)
  4. Remplacez le numéro dans db/current par $(GOODREV). Veillez à ne pas modifier la fin de la ligne LF.
  5. Supprimer tous les fichiers} _ _ (pas les dossiers) numérotés dans db/revs/*/* et db/revprops/*/* qui sont> $(GOODREV)
  6. Supprimer db/rep-cache.db
  7. Mettez à jour votre copie de travail sur 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. Éliminez toutes les instances TSVNCache.exe via le gestionnaire de 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 un TSVNCache.exe non élevé. La première fois que vous ouvrez une boîte de dialogue Save As... à partir d'une application élevée, une TSVNCache.exe va apparaître.)

Cela corrigera l’affichage bizarre du journal provoqué par le conflit du cache de TortoiseSVN avec le nouvel état du référentiel.

9
Unsigned

Obtenez la documentation du site de bureau TortoiseSVN.

  1. Utiliser le dialogue du journal de révision
  2. Utiliser le dialogue de fusion

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

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

0
chendu