Question Comment puis-je revenir à une ancienne version de notre code dans Subversion?


Je travaille sur un projet avec un ami et je veux revenir à une ancienne version de notre code et la définir comme étant la version actuelle. Comment fait-on ça?

J'utilise "anksvn" sur vs08.

J'ai la version que je veux sur mon PC, mais le commit échoue; Le message que je reçois est "commit est échoué, le fichier ou le répertoire est obsolète."

J'ai aussi le client subversion sur mon PC.


434
2018-05-02 08:35


origine


Réponses:


Fondamentalement, vous devez "fusionner en arrière" - appliquer un diff entre la version actuelle et précédente à la version actuelle (donc vous vous retrouvez avec une copie de travail ressemblant à l'ancienne version) et puis validez à nouveau. Donc par exemple passer de la révision 150 (actuelle) à la révision 140:

svn update
svn merge -r 150:140 .
svn commit -m "Rolled back to r140"

Le livre rouge de Subversion a un bonne section à ce sujet.


704
2018-05-02 08:38



La raison pour laquelle vous ne pouvez rien faire directement avec la bonne copie que vous avez sur votre PC, est que ses dossiers .svn savent qu’il s’agit d’un code du passé, il faut donc une mise à jour. Mais vous ne pouvez réellement engager des changements qu'à la tête de l’histoire de la subversion.

Vous pouvez utiliser

svn update -r <earlier_revision_number>

pour vérifier diverses versions plus anciennes de votre projet, jusqu'à ce que vous trouviez le bon numéro de révision, de votre bonne version. Lorsque vous l'avez trouvé, mettez à jour la dernière révision (head), puis appliquez le svn merge comme suggéré ci-dessus.

Si vous ne pouvez vraiment pas le trouver, et avoir besoin pour valider la copie sur votre PC, puis obtenir une nouvelle mise à jour vers la dernière version et copier votre "bonne" version par-dessus (sans pour autant les dossiers .svn!). Supprimez tous les fichiers qui n'étaient pas dans la bonne copie des dossiers et de subversion et validez ce que vous avez maintenant.


165
2018-05-02 09:43



Utilisez simplement cette ligne

svn update -r yourOldRevesion

Vous pouvez connaître votre révision actuelle en utilisant:

svn info


31
2018-03-27 13:21



La manière standard d'utiliser la fusion pour annuler l'intégralité de l'archivage fonctionne parfaitement, si c'est ce que vous voulez faire. Parfois, cependant, tout ce que vous voulez faire est de restaurer un seul fichier. Il n'y a pas de moyen légitime de le faire, mais il y a un hack:

  1. Trouvez la version que vous voulez en utilisant svn log.
  2. Utilisez la sous-commande export de svn:

    svn export http: // url-to-your-file @ 123 / tmp / filename

(Où 123 est le numéro de révision pour une bonne version du fichier.) Ensuite, déplacez ou copiez ce fichier unique pour remplacer l'ancien. Vérifiez le fichier modifié et vous avez terminé.


24
2017-07-02 20:39



Un peu plus vieille école 

svn diff -r 150:140 > ../r140.patch
patch -p0 < ../r140.patch

puis l'habituel

svn diff
svn commit

8
2017-09-02 10:53



Je pense que cela convient le mieux:

Faites la fusion en arrière, par exemple, si le code validé contient la révision de rev 5612 à 5616, il suffit de le fusionner à l'envers. Cela fonctionne à ma fin.

Par exemple:

svn merge -r 5616:5612 https://<your_svn_repository>/

Il contiendrait un code fusionné à l'ancienne révision, alors vous pourriez le commettre.


5
2018-04-13 07:42



C'est ce que j'ai fait et travaillé pour moi.

Je souhaite annuler les modifications de plusieurs commits que j'ai effectuées à certains moments et que je souhaite passer au point de validation précédent.

  1. Aller à l'équipe -> Afficher l'historique.
  2. Cliquez avec le bouton droit sur la plage de révisions que vous souhaitez ignorer.
  3. Sélectionnez l'option "Annuler les modifications".

Cela exécutera une fusion inverse, annulant les modifications dans votre copie de travail.

Il suffit de revoir le code et de valider.


3
2018-02-28 20:08



Cliquez avec le bouton droit sur la hiérarchie la plus haute que vous voulez inverser >> Revert ou Revert to Revision


2
2018-05-02 08:40



Cliquez avec le bouton droit sur le projet> Remplacer par> Révision ou URL> Sélectionnez la révision spécifique que vous souhaitez rétablir.

Maintenant, validez la version du code de mise à jour locale dans le référentiel. Cela rétablira la base de code à la révision spécifique.


1
2017-09-06 13:11