Question

Disons que j'ai apporté de mauvaises modifications au référentiel Subversion.Ensuite, j'engage de bons changements, que je veux conserver.

Quel serait le moyen le plus simple d'annuler ces mauvaises modifications dans Eclipse et de conserver les bonnes modifications ?En supposant que les fichiers relatifs aux mauvaises modifications ne sont pas les mêmes que ceux relatifs aux bonnes modifications.Comment les choses changent si de bonnes modifications sont apportées aux mêmes fichiers que de mauvaises modifications ?

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.

Était-ce utile?

La solution

Vous avez deux choix pour ce faire.

Le Quick and Dirty sélectionne vos fichiers (en utilisant Ctrl) dans la vue Explorateur de projet, cliquez dessus avec le bouton droit, choisissez Replace with... puis vous choisissez la meilleure option pour vous, parmi Latest from Repository, ou une Branch version.Après avoir obtenu ces fichiers, vous les modifiez (avec un espace, ou corrigez quelque chose, vous appelez et les validez pour créer une révision plus récente.

Une manière plus propre consiste à choisir Merge dans le menu de l'équipe et naviguez dans l'assistant qui vous aidera à récupérer l'ancienne version dans la révision actuelle.

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

Autres conseils

Dans Eclipse Ganymède (Subclipse)

Sélectionnez le projet/fichier contenant des modifications incorrectes et, dans le menu contextuel, choisissez :

Équipe -> Afficher l'historique

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

Recherchez la révision dans laquelle les « mauvaises modifications » ont été apportées et, dans le menu contextuel, choisissez :

Annuler les modifications de la révision X

Cela fusionnera les modifications apportées aux fichiers modifiés dans une mauvaise révision, avec la révision antérieure à la mauvaise révision.

Il existe deux scénarios à partir d'ici :

  1. Si vous n'avez apporté aucune modification à ce fichier (la mauvaise révision est la dernière révision de ce fichier), les modifications apportées à la mauvaise révision seront simplement supprimées.Ces modifications sont fusionnées dans votre copie de travail et vous devez donc les valider.

  2. Si vous avez validé certaines modifications pour ce fichier (une mauvaise révision n'est pas la dernière révision de ce fichier), vous devrez résoudre manuellement le conflit.Disons que vous avez le fichier readme.txt avec et que le mauvais numéro de révision est 33.De plus, vous avez effectué une autre validation pour ce fichier dans la révision 34.Après avoir choisi Annuler les modifications de la révision 33 vous aurez ce qui suit dans votre copie de travail :

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

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

readme.txt.working - version de copie de travail (identique à r34 si vous n'avez aucune modification non validée)

Le fichier readme.txt original sera marqué comme étant en conflit et contiendra une version fusionnée (où les modifications provenant d'une mauvaise révision sont supprimées) avec quelques marqueurs (<<<<<<< .working etc).Si vous souhaitez simplement supprimer les modifications d'une mauvaise révision et conserver les modifications apportées par la suite, tout ce que vous avez à faire est de supprimer les marqueurs.Sinon, vous pouvez copier le contenu de l'un des 3 fichiers mentionnés ci-dessus vers le fichier d'origine.Quoi que vous choisissiez, lorsque vous avez terminé, marquez le conflit résolu par

Équipe - Mark Résolu

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 des révisions dans le référentiel svn.Vous avez simplement créé une nouvelle révision où les modifications d'une mauvaise révision sont supprimées.

Si vous souhaitez créer 1 fichier à la fois, vous pouvez accéder à la vue Historique du fichier en supposant qu'un plugin Eclipse SVN est installé."Équipe -> Afficher l'historique"

Dans la vue Historique, recherchez la dernière bonne version de ce fichier, faites un clic droit et choisissez « Obtenir le contenu ».Cela remplacera votre version actuelle par le contenu de cette version.Ensuite, vous pouvez valider les modifications lorsque vous avez tout corrigé.

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 annuler comme d'habitude, mais cochez également la case "Fusion inversée".

Fusionnez comme d'habitude.

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

Le svnbook contient une section expliquant comment Subversion vous permet d'annuler les modifications d'une révision particulière sans affecter les modifications survenues dans les 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 à partir de la boîte de dialogue du journal ;faites simplement un clic droit sur la révision que vous souhaitez annuler et sélectionnez « Annuler les modifications de cette révision ».

Dans le cas où les fichiers pour lesquels vous souhaitez annuler les « mauvaises modifications » ont eu des « bonnes modifications » dans les révisions ultérieures, le processus est le même.Les modifications de la « mauvaise » révision seront annulées, laissant intactes les modifications des « bonnes » révisions, mais vous pourriez avoir des conflits.

J'ai le même problème mais l'option CleanUp Eclipse ne fonctionne pas pour moi.

1) installer TortoiseSVN
2) Allez dans l'explorateur Windows et faites un clic droit sur le répertoire de votre projet
Option CleanUp à 3 choix (en cochant l'option Break Lock)

Ça marche.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top