2010-03-19 12 views
6

estoy usando SVN (TortoiseSVN) y, a menudo entraron en la siguiente situación:SVN Versión Rollback Pregunta

quería descartar los cambios desde una (antigua) la revisión específica y convertir todos los archivos de nuevo a este específico (antigua) versión. Luego quería trabajar más como si esta revisión (antigua) específica fuera la más reciente, es decir, quería poder comprometer la revisión antigua específica como una nueva revisión.

Encontré varias soluciones para este problema (por ejemplo, stackoverflow.com/questions/402159/roll-back-or-revert-entire-svn-repository-to-an-older-revision o rustyrazorblade.com/2007/ 04/how-to-roll-back-commits-to-an-previous-version-of-a-repository-in-svn /).

Sin embargo, me pregunto si existe una forma simple de retroceder a una revisión específica. Pensé que el control de versiones es bueno para esas cosas (¿o estoy malinterpretando algo?).

¿Hay un comando simple/botón/etc. que lleva una actualización de mi repositorio local a una revisión anterior y declara que es la más nueva?

Como supongo que no hay una función "incorporada" para hacer esto, quería saber qué razón llevó a los desarrolladores a la decisión de no integrar esta característica. ¿Alguien sabe esto?

Respuesta

3

Por alguna razón, la gente de SVN decidió referirse a esto como una "fusión inversa". En el cuadro de diálogo Merge de TortoiseSVN, marque la casilla Invertir combinación y asegúrese de que el cuadro de revisiones muestre algo como HEAD-324 (donde 324 es la versión a la que va a volver).

-2

Movería la cajuela actual a una rama para mantenerla a salvo, y luego haré una copia con el número de revisión que desea volver a ser la cajuela.

+0

Esto me parece demasiado complicado. Además, si alguien intenta actualizar o comprometerse mientras está en el proceso de hacerlo, se preguntará qué diablos le pasó al repositorio. – MatrixFrog

2

No estoy seguro de si he entendido bien ya que por ejemplo el enlace que usted ha citado (Roll back or revert entire svn repository to an older revision) ya tiene la solución: inversa se funden (como se ha mencionado Powerlord).

Desde el TSVN fusionar-documentación:

Si desea fusionar los cambios de nuevo fuera de su copia de trabajo, para revertir un cambio que ya ha sido comprometido, seleccione las revisiones a Revert y asegúrese de que la casilla Reverse merge esté marcada.

Creo que lo importante a tener en cuenta es que no "retrotrae los cambios" sino que "los fusiona" y luego vuelve a comprometerse. Usted "sigue adelante", por así decirlo (porque no hay "inversión" en SVN, es control de versión después de todo, no se supone que "se olvide de cosas" :)).

Si cometió accidentalmente algo que por alguna razón no puede estar en el repositorio, tiene que (y puede) ir más largos para "sacarlo nuevamente" (también descrito en el hilo que vinculó: copia de seguridad y restauración) .

3

En TortoiseSVN hay una manera más fácil (o al menos más intuitiva en mi humilde opinión) de hacerlo. Supongo que lo que está haciendo detrás de escena es la "fusión inversa" que otros mencionaron.

  1. Haga clic con el botón derecho en el archivo/carpeta que desea revertir.
  2. Haga clic en "Mostrar registro" en el menú de TortoiseSVN.
  3. Seleccione la (s) revisión (es) que desee deshacer.
  4. Haga clic derecho en esas revisiones.
  5. Seleccione "Revertir los cambios de esta revisión" - no debe confundirse con "Volver a esta revisión"!
  6. Haga clic en "Sí"
  7. Recuerde que esto solo cambia su copia de trabajo. Confirme que esto hizo lo que esperaba que hiciera, y luego confirme, poniendo algo en su mensaje de registro sobre "retroceso" o "fusión inversa"
+0

Esto es realmente bastante intuitivo, ¡gracias! –