2008-12-04 18 views
17

Tenemos una situación en la que alguien cometió un error al cometer un error en nuestro servidor SVN. Se eliminaron muchos archivos, etc.¿Cómo cambio el CABEZAL a una revisión anterior?

Pregunta: ¿Cuál es la técnica para hacer que la revisión anterior (a la mala ejecución) revise HEAD? He visto la discusión aquí en SO para hacer esto para 1 archivo, pero nos gustaría que sea como si el último compromiso nunca hubiera sucedido. ¿Algunas ideas?

Todas estas respuestas parecen ser correctas. Marqué la respuesta de abatishchev como la respuesta correcta simplemente porque estoy usando Tortoise SVN y es el método que realmente utilicé.

Respuesta

9

Quizás usted puede mostrar registro, compruebe revisión anterior (n-1), en el menú contextual, seleccione Revertir a esta revisión y confirmar los cambios (que se convierte en n + 1, donde n es malo actual jefe)

+1

http://stackoverflow.com/questions/217190/how-to-quarantine-a-subversion-revision-revision –

+3

Esto no funcionó para mí. Cuando revertí mis cambios locales a una versión anterior y traté de confirmar, svn me dijo que no puedo comprometerme hasta que actualice mi copia de trabajo a la cabeza, lo que de alguna manera frustra el propósito:/ – Sinaesthetic

1

Puede hacerlo usando svnadmin dump y svnadmin load. Es una forma bastante poderosa de hacerlo, pero creo que esa es la única forma de hacerlo.

Las respuestas a esta pregunta pueden ayudar: Nuking huge file in svn repository

+0

Esto romperá workingcopies que están en la revisión de cabecera, ya que no pueden actualizar a una versión de una versión del repositorio no sabe nada. –

19

La manera más limpia sería undo changes

Puede usar svn merge para “deshacer” el cambio en su copia de trabajo, y luego cometen el modificación local al repositorio. Todo lo que necesita hacer es especificar una diferencia inversa. (Puede hacerlo especificando --revision 303:302, o por un equivalente --change -303.)

Me di cuenta que no "hace como si fuera la última cometer nunca ocurrió" en el sentido de que cometen sigue siendo parte de la historia, pero creen que es mejor mantener ese compromiso malo en la historia.
Podría incluir algún trabajo en progreso que pueda ser consultado/comparado con, para poder rehacer fácilmente una nueva confirmación apropiada.


Incluso si:

  • el SVN (1.5) manual de mención un futuro obliterate comando que cumplir la tarea de información de borrar de forma permanente, y
  • mención svndumpfilter como una posible solución (en ese proporciona la capacidad de modificar rápida y fácilmente los datos de volcado actuando como un filtro basado en ruta)

... Es es mejor no intentar convertir una herramienta SCM en algo que no está destinado a hacer en primer lugar.
La historización (junto con la paralelización con la bifurcación) son las dos características principales de un SCM.

+0

No tenemos problemas para mantener el compromiso, solo queremos actualizar el HEAD a la base de código adecuada. Voy a intentar esto. Gracias. – jwalkerjr

0

Puede svn cp revisiones específicas, por lo que si no hay operaciones intermedias que desee guardar, puede svn rm el directorio ofensivo y luego svn cp la versión anterior. Ver el Peg and Operative Revision section of the book

+0

Esta no es la manera correcta. La forma correcta es hacer una fusión inversa como dice VonC. – kauppi

0

utilizando TortoiseSVN, si desea ver sólo el repositorio en la versión antes de que el infractor se comprometen:

  • Abrir la URL con el navegador de repositorio de TortoiseSVN.
  • Anote el número de revisión de esa confirmación y cambie HEAD a ese número - 1 haciendo clic en el botón en la parte superior derecha.

enter image description here

Cuestiones relacionadas