Annulation des modifications incorrectes avec svn dans Eclipse

Disons que j’ai commis de mauvais changements dans le repository Subversion. Puis je commets de bons changements, que je veux garder.

Quel serait le moyen le plus simple pour annuler ces mauvais changements dans Eclipse et conserver les bons changements? En supposant que les fichiers relatifs aux mauvais changements ne sont pas les mêmes que ceux relatifs aux bons changements. Comment les choses changent si de bons changements ont été apportés aux mêmes fichiers que les mauvais changements?

Je cherche surtout un moyen de le faire via les plugins Eclipse (Subclipse ou Subversive) mais les commandes en ligne de commande sont également intéressantes.

Vous avez deux choix pour le faire.

Quick et Dirty sélectionne vos fichiers (en utilisant Ctrl ) dans la vue Explorateur de projets, cliquez dessus avec le bouton droit, choisissez Replace with... , puis choisissez la meilleure option pour vous, dans Latest from Repository ou dans une version Branch . Après avoir récupéré ces fichiers, modifiez-les (avec un espace ou réparez quelque chose, votre appel et engagez-les à créer une révision plus récente).

Une méthode plus propre consiste à choisir le menu Merge dans l’équipe et à naviguer dans l’assistant qui vous aidera à récupérer l’ancienne version dans la révision réelle.

Les deux commandes ont leurs équivalents en ligne de commande: svn revert et svn merge .

Dans Eclipse Ganymède (Subclipse)

Sélectionnez un projet / fichier contenant des modifications erronées et choisissez dans le menu contextuel:

Equipe -> Afficher l’historique

Les révisions liées à ce projet / fichier seront affichées dans l’onglet Historique.

Rechercher la révision où les “modifications incorrectes” ont été validées et dans le menu contextuel, choisissez:

Annuler les modifications de la révision X

Cela fusionnera les modifications apscopes au (x) fichier (s) modifié (s) lors d’une mauvaise révision, avec une révision avant une révision incorrecte.

Il y a deux scénarios d’ici:

  1. Si vous n’avez validé aucune modification pour ce fichier (la mauvaise révision est la dernière révision pour ce fichier), il supprimera simplement les modifications apscopes lors d’une mauvaise révision. Ces modifications sont fusionnées avec votre copie de travail, vous devez donc les valider.

  2. Si vous avez commis des modifications pour ce fichier (la révision incorrecte n’est pas la dernière révision pour ce fichier), vous devrez résoudre manuellement le conflit. Supposons que vous avez le fichier readme.txt avec et que le numéro de révision incorrect est 33. Vous avez également effectué une autre validation pour ce fichier dans la révision 34. Après avoir choisi Revert Changes from Revision 33, vous devez suivre dans votre copie de travail:

readme.txt.merge-left.r33 – mauvaise révision

readme.txt.merge-right.r32 – avant la mauvaise révision

readme.txt.working – version de la copie de travail (identique à la version r34 si vous n’avez pas de modifications non validées)

Le fichier readme.txt original sera marqué en conflit et contiendra une version fusionnée (où les modifications de la mauvaise révision sont supprimées) avec certains marqueurs (<<<<<<< .working, etc.). Si vous souhaitez simplement supprimer les modifications des mauvaises révisions et conserver les modifications apportées, il vous suffit de supprimer les marqueurs. Sinon, vous pouvez copier le contenu de l'un des 3 fichiers mentionnés ci-dessus dans le fichier d'origine. Quel que soit votre choix, lorsque vous avez terminé, marquez le conflit résolu par

Equipe – Marque résolue

Les fichiers temporaires seront supprimés et votre fichier sera marqué comme modifié. Comme dans 1, vous devez valider les modifications.

Notez que cela ne supprime pas la révision de l’historique de révision dans le repository svn. Vous avez simplement effectué une nouvelle révision où les modifications de mauvaise révision sont supprimées.

Si vous voulez faire 1 fichier à la fois, vous pouvez accéder à la vue Historique du fichier en supposant que vous avez installé un plug-in Eclipse SVN. “Team-> Show History”

Dans la vue Historique, recherchez la dernière version correcte de ce fichier, cliquez avec le bouton droit de la souris et choisissez “Obtenir le contenu”. Cela remplacera votre version actuelle avec le contenu de cette version. Ensuite, vous pouvez commettre les modifications lorsque vous avez tout réglé.

Dans Eclipse utilisant Subversive:

Faites un clic droit sur votre projet> Équipe> Fusionner

Dans la fenêtre de fusion, sélectionnez les révisions que vous souhaitez rétablir normalement, mais activez également la case à cocher “Fusion inversée”.

Fusionner comme d’habitude

J’ai écrit quelques articles sur ce sujet. Celui qui est centré sur Subclipse: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html et celui centré sur la ligne de commande: http: //blogs.collab. net / subversion / 2007/07 / seconde chance /

Le svnbook contient une section sur la manière dont Subversion vous permet d’annuler les modifications d’une révision particulière sans affecter les modifications survenues lors des révisions suivantes:

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

Je n’utilise pas beaucoup Eclipse, mais dans TortoiseSVN, vous pouvez le faire depuis le dialog de journal; Cliquez simplement avec le bouton droit sur la révision que vous souhaitez rétablir et sélectionnez “Annuler les modifications de cette révision”.

Dans le cas où les fichiers pour lesquels vous souhaitez rétablir les “modifications incorrectes” ont eu de “bons changements” dans les révisions ultérieures, le processus est identique. Les modifications de la “mauvaise” révision seront annulées, laissant les modifications des “bonnes” révisions intactes, mais vous risquez d’être conflictuel.

J’ai le même problème mais l’option eclipse de CleanUp ne fonctionne pas pour moi.

1) installer TortoiseSVN
2) Allez dans l’explorateur Windows et faites un clic droit sur votre répertoire de projet
3 Option Choice CleanUp (en cochant l’option de locking)

Ça marche.

J’espère que cela aide quelqu’un.