2008-08-30 8 views
73

Disons que j'ai commis de mauvais changements dans le dépôt Subversion. Ensuite, je commets de bons changements, que je veux garder.Annulation des mauvais changements avec svn dans Eclipse

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 de 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.

Répondre

30

Vous avez deux choix pour le faire.

Le rapide et sale consiste à sélectionner vos fichiers (en utilisant ctrl) en vue Explorateur de projets, faites un clic droit, choisissez Replace with... puis vous choisissez la meilleure option pour vous, de Latest from Repository, ou une version Branch. Après avoir obtenu ces fichiers, vous les modifiez (avec un espace, ou réparez quelque chose, votre appel et les engagez pour créer une révision plus récente.)

Une façon plus simple est de choisir Merge dans le menu de l'équipe et de naviguer à travers l'assistant qui vous aidera . à la récupération l'ancienne version dans la révision réelle

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

+0

Le dernier dépôt est celui qui a été mal enregistré, donc je ne vois pas où cela devrait être utile. A côté de cela, eclipse ne veut pas vous aider avec ce problème car seule l'option mention est disponible si vous sélectionnez plusieurs fichiers (probablement parce que leur version des tests est différente). – Macilias

1

le svnbook a une section sur la façon dont Subversion vous permet de revenir les changements d'une révision particulière sans affectant les changements qui se sont produits 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 TortoiseSVN vous pouvez le faire à partir du dialogue du journal; faites un clic droit sur la révision que vous voulez annuler et sélectionnez "Annuler les modifications de cette révision".

Dans le cas où les fichiers pour lesquels vous souhaitez annuler les «mauvais changements» avaient de «bons changements» dans les révisions suivantes, le processus est le même. Les changements de la "mauvaise" révision seront annulés, laissant intacts les changements des "bonnes" révisions, mais vous pourriez avoir des conflits.

70

Dans Eclipse Ganymede (Subclipse)

Sélectionner un projet/fichier qui contient mauvais changement, et dans le menu contextuel choisissez:

Team -> Afficher l'historique

révisions liées à ce projet/fichier sera affiché dans onglet Historique.

révision Rechercher où les « mauvais changements » ont été commises et dans le menu contextuel, choisissez:

Revert Modifications de la révision X

Cela fusionner les modifications dans le fichier (s) modifiés dans les mauvaise révision, avec révision avant mauvaise révision.

Il y a deux scénarios d'ici:

  1. Si vous avez commis aucun changement pour ce fichier (mauvaise révision est la dernière révision de ce fichier), il suffit de supprimer les modifications apportées à la mauvaise révision. Ces modifications sont fusionnées à votre copie de travail, vous devez donc les valider.

  2. Si vous avez effectué des modifications pour ce fichier (une mauvaise révision n'est pas la dernière révision de ce fichier), vous devrez résoudre manuellement les conflits. Disons que vous avez fichier readme.txt avec, et le numéro de révision incorrect est 33. En outre, vous avez fait un autre commit pour ce fichier dans la révision 34. Après avoir choisi Revenir changements de la révision 33 vous aurez suivi dans votre travail copie:

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

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

readme.txt .w ravailler - travail version copie (comme dans R34 si vous n'avez pas des modifications non validées)

readme.txt originale sera marquée en conflit, et contiendra la version fusionnée (où sont supprimés des changements de mauvaise révision) avec certains marqueurs (< < < < < < < .working etc). Si vous souhaitez simplement supprimer les modifications d'une mauvaise révision et conserver les modifications effectuées après cela, 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 dans le fichier original. Tout ce que vous choisissez, lorsque vous avez terminé, le conflit marque résolu par

équipe - Mark Résolue

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

Notez que cela ne supprime pas la révision de l'historique des révisions dans svn repository. Vous avez simplement fait une nouvelle révision où les changements de mauvaise révision sont supprimés.

10

Si vous voulez faire un fichier à la fois, vous pouvez accéder à la vue Historique du fichier en supposant que vous avez installé un plugin Eclipse SVN. "Team-> 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 réparé.

5

Dans Eclipse en utilisant Subversive:

Faites un clic droit de votre projet> L'équipe> Fusion

Dans la fenêtre de fusion, sélectionnez les révisions que vous voulez revenir comme normalement, mais aussi permettre case à cocher « fusion inversée ».

Fusionner comme d'habitude.

0

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

1) installer TortoiseSVN
2) Allez à l'explorateur Windows et un clic droit sur votre répertoire de projet
option 3 CleanUp choix (en cochant l'option de verrouillage de rupture)

Il est des œuvres.

Espérons que cela aide quelqu'un.

Questions connexes