Revertir cambios malos con svn en Eclipse

81

Digamos que he realizado algunos cambios incorrectos en el repositorio de Subversion. Entonces cometo buenos cambios, que quiero mantener.

¿Cuál sería la forma más fácil de revertir esos malos cambios en Eclipse y mantener los buenos cambios? Suponiendo que los archivos relacionados con cambios malos no son los mismos que los relacionados con cambios buenos. ¿Cómo cambian las cosas si se realizan cambios buenos en los mismos archivos que cambios incorrectos?

Principalmente estoy buscando una forma de hacer esto a través de los complementos de Eclipse (Subclipse o Subversive), pero los comandos de la línea de comandos también son interesantes.

Juha Syrjälä
fuente

Respuestas:

30

Tiene dos opciones para hacer esto.

Quick and Dirty selecciona sus archivos (usando ctrl) en la vista Explorador de proyectos, haga clic con el botón derecho en ellos, elija Replace with...y luego elija la mejor opción para usted, desde Latest from Repositoryo alguna Branchversión. Después de obtener esos archivos, los modifica (con un espacio, o arregla algo, llame y los confíe para crear una revisión más nueva.

Una forma más limpia es elegir el Mergemenú del equipo y navegar por el asistente que le ayudará a recuperar la versión anterior en la revisión real.

Ambos comandos tienen sus equivalentes en la línea de comandos: svn reverty svn merge.

Fernando Barrocal
fuente
1
Lo último del repositorio es el que se registró incorrectamente, por lo que no veo dónde debería ser útil. Además de esto, eclipse no quiere ayudarlo con este problema porque solo la opción de mención está disponible si selecciona varios archivos (probablemente porque su última versión es diferente).
Macilias
79

En Eclipse Ganímedes (Subclipse)

Seleccione el proyecto / archivo que contenga un cambio incorrecto y, en el menú emergente, elija:

Equipo -> Mostrar historial

Las revisiones relacionadas con ese proyecto / archivo se mostrarán en la pestaña Historial.

Busque la revisión en la que se cometieron "cambios incorrectos" y, en el menú emergente, elija:

Revertir los cambios de la revisión X

Esto combinará los cambios en los archivos modificados dentro de una revisión incorrecta, con una revisión anterior a la revisión incorrecta.

Hay dos escenarios a partir de aquí:

  1. Si no ha realizado cambios para ese archivo (la revisión incorrecta es la última revisión de ese archivo), simplemente eliminará los cambios realizados en la revisión incorrecta. Esos cambios se fusionan con su copia de trabajo, por lo que debe confirmarlos.

  2. Si realizó algunos cambios para ese archivo (la revisión incorrecta no es la última revisión para ese archivo), tendrá que resolver el conflicto manualmente. Supongamos que tiene el archivo readme.txt con, y el número de revisión incorrecta es 33. Además, ha realizado otra confirmación para ese archivo en la revisión 34. Después de elegir Revertir cambios de la revisión 33 , tendrá lo siguiente en su copia de trabajo:

readme.txt.merge-left.r33 - revisión incorrecta

readme.txt.merge-right.r32 - antes de una mala revisión

readme.txt.working - versión de copia de trabajo (igual que en r34 si no tiene ningún cambio sin confirmar)

El archivo readme.txt original se marcará en conflicto y contendrá una versión combinada (donde se eliminan los cambios de la revisión incorrecta) con algunos marcadores (<<<<<<<. Funcionando, etc.). Si solo desea eliminar los cambios de una revisión incorrecta y mantener los cambios realizados después de eso, todo lo que tiene que hacer es eliminar los marcadores. De lo contrario, puede copiar el contenido de uno de los 3 archivos mencionados anteriormente al archivo original. Elija lo que elija, cuando haya terminado, marque el conflicto resuelto por

Equipo - Mark resuelto

Los archivos temporales se eliminarán y su archivo se marcará como modificado. Como en 1, debe confirmar los cambios.

Tenga en cuenta que esto no elimina la revisión del historial de revisiones en el repositorio svn. Simplemente hizo una nueva revisión donde se eliminan los cambios de la revisión incorrecta.

kirlich
fuente
14

Si desea hacer 1 archivo a la vez, puede ir a la vista Historial del archivo asumiendo que tiene un complemento Eclipse SVN instalado. "Equipo-> Mostrar historial"

En la vista Historial, busque la última versión buena de ese archivo, haga clic derecho y seleccione "Obtener contenido". Esto reemplazará su versión actual con el contenido de esa versión. Luego, puede confirmar los cambios cuando lo haya arreglado todo.

Mate
fuente
6

En Eclipse usando Subversive:

Haga clic derecho en su proyecto> Equipo> Fusionar

En la ventana de combinación, seleccione las revisiones que desea revertir normalmente, pero también habilite la casilla de verificación "Combinación invertida".

Fusionar como de costumbre.

Tuukka Mustonen
fuente
1

El svnbook tiene una sección sobre cómo Subversion le permite revertir los cambios de una revisión en particular sin afectar los cambios que ocurrieron en revisiones posteriores:

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

No uso mucho Eclipse, pero en TortoiseSVN puede hacer esto desde el diálogo de registro; simplemente haga clic con el botón derecho en la revisión que desea revertir y seleccione "Revertir los cambios de esta revisión".

En el caso de que los archivos para los que desea revertir "cambios malos" tuvieran "cambios buenos" en revisiones posteriores, el proceso es el mismo. Los cambios de la revisión "mala" se revertirán dejando intactos los cambios de las revisiones "buenas", sin embargo, es posible que surjan conflictos.

Nick Higgs
fuente
0

Tengo el mismo problema, pero la opción CleanUp eclipse no me funciona.

1) instale TortoiseSVN
2) Vaya al explorador de Windows y haga clic derecho en el directorio de su proyecto
3 Opción de limpieza de elección (marcando la opción de bloqueo de rotura)

Funciona.

Espero que esto ayude a alguien.

Gora
fuente