2010-03-19 9 views
6

J'utilise SVN (TortoiseSVN) et souvent sont entrés dans la situation suivante:SVN Version Rollback Question

Je voulais rejeter tous les changements depuis un spécifique (ancienne) révision et tourner tous les fichiers à ce spécifique (vieux) version. Ensuite, j'ai voulu travailler plus loin comme si cette révision spécifique (ancienne) était la plus récente, c'est-à-dire que je voulais être en mesure de valider l'ancienne révision spécifique en tant que nouvelle révision.

J'ai trouvé plusieurs solutions à ce problème (par exemple stackoverflow.com/questions/402159/roll-back-or-revert-entire-svn-repository-to-an-older-revision ou rustyrazorblade.com/2007/ 04/comment-roll-back-commits-à-une-version-antérieure-d'-un-repository-in-svn /).

Cependant, je me demande s'il existe un moyen simple de revenir à une révision spécifique. Je pensais que le contrôle de version est juste bon pour de telles choses (ou suis-je mal compris quelque chose?).

Y a-t-il une simple commande/bouton/etc. cela prend une mise à jour mon référentiel local à une ancienne révision et déclare qu'il est le plus récent? Comme je suppose qu'il n'y a pas de fonction "intégrée" pour cela, je voulais savoir quelle raison poussait les développeurs à ne pas intégrer cette fonctionnalité. Est-ce que quelqu'un le sait?

Répondre

3

Pour quelque raison que ce soit, les gens du SVN ont décidé de se référer à cela comme une «fusion inverse». Dans la boîte de dialogue TortoiseSVN Merge, cochez la case Reverse Merge et assurez-vous que la boîte de révisions lit quelque chose comme HEAD-324 (où 324 est la version à laquelle vous revenez).

-2

Je déplacerais la ligne de réseau actuelle dans une branche pour la garder en sécurité, et ensuite faire une copie au numéro de révision que vous voulez revenir à la ligne de réseau.

+0

Cela me semble trop compliqué. Aussi, si quelqu'un essaie de mettre à jour ou de commettre pendant que vous êtes en train de faire cela, ils se demanderont ce qui est arrivé au dépôt. – MatrixFrog

2

Je ne sais pas si je vous comprends bien puisque, par exemple le lien que vous avez cité (Roll back or revert entire svn repository to an older revision) a déjà la solution: Fusion inversée (comme mentionné Powerlord).

De la TSVN fusion-documentation:

Si vous souhaitez fusionner les modifications dans des de votre copie de travail, de revenir un changement qui a déjà été engagé, sélectionnez les révisions à Revert et assurez-vous que la case Inverser la fusion est cochée.

Je pense que la chose importante à avoir à l'esprit est que vous ne «annulez pas les modifications» mais que vous les «fusionnez» et que vous les ré-engagez. Vous "avancez" pour ainsi dire (car il n'y a pas de "renversement" dans SVN, c'est le contrôle de version après tout, pas supposé "oublier les choses" :)).

Si vous avez accidentellement commis quelque chose qui, pour une raison quelconque, ne peut absolument pas être dans le référentiel, vous devez (et pouvez) aller plus loin pour le faire ressortir (également décrit dans le thread que vous avez lié: sauvegarde et restauration) .

3

Dans TortoiseSVN, il existe une façon plus simple (ou au moins plus intuitive) de faire cela. Je suppose que ce qu'il fait réellement dans les coulisses est la «fusion inverse» que d'autres ont mentionnée.

  1. Cliquez avec le bouton droit sur le fichier/dossier que vous voulez restaurer.
  2. Cliquez sur "Afficher le journal" dans le menu TortoiseSVN.
  3. Sélectionnez la ou les révision (s) que vous souhaitez annuler.
  4. Cliquez avec le bouton droit sur ces révisions.
  5. Sélectionnez "Annuler les modifications de cette révision" - à ne pas confondre avec "Revenir à cette révision"!
  6. Cliquez sur "Oui"
  7. Rappelez-vous que cela ne change que votre copie de travail. Confirmez que cela a fait ce que vous vous attendiez à faire, puis commettez, en mettant quelque chose dans votre message de journal sur "rollback" ou "reverse fusion"
+0

C'est en fait assez intuitif à faire, merci! –