¿Cómo vuelvo a una versión anterior de nuestro código en Subversion?

Resuelto Chen Kinnrot asked hace 15 años • 14 respuestas

Estoy trabajando en un proyecto con un amigo y quiero volver a una versión anterior de nuestro código y configurarla como la actual. ¿Cómo lo hago?

Estoy usando "anksvn" en vs08.

Tengo la versión que quiero en mi PC, pero la confirmación falla; El mensaje que recibo es "la confirmación falló, el archivo o directorio no está actualizado".

También tengo el cliente subversion en mi PC.

Chen Kinnrot avatar May 02 '09 15:05 Chen Kinnrot
Aceptado

Básicamente, necesita "fusionar hacia atrás": aplicar una diferencia entre la versión actual y la anterior a la versión actual (para terminar con una copia de trabajo que se parece a la versión anterior) y luego confirmar nuevamente. Entonces, por ejemplo, para pasar de la revisión 150 (actual) a la revisión 140:

svn update
svn merge -r 150:140 .
svn commit -m "Rolled back to r140"

El Libro Rojo de Subversion tiene una buena sección sobre esto .

Jon Skeet avatar May 02 '2009 08:05 Jon Skeet

Sólo puedes confirmar nuevos cambios al principio del historial de subversión.

La razón por la que no puedes hacer nada directamente con la copia buena que tienes en tu PC es que sus .svncarpetas saben que es código del pasado, por lo que requiere una actualización antes de cualquier confirmación.

Encuentre el buen número de revisión y revierta

  1. Busque el número de revisión de la copia antigua que desea.

    Obtenga su revisión actual con:

    svn info --show-item revision
    # or
    svn log
    

    O para comprobar versiones anteriores de su proyecto, utilice:

    svn update -r <earlier_revision_number>
    

    hasta que encuentre el número de revisión correcto.

  2. Anote el número de revisión correcto (asumiendo 123los ejemplos a continuación).

  3. Actualización a la última revisión:

    svn update
    
  4. Deshaga todos los cambios entre la revisión que desee y la última versión:

    svn merge -r HEAD:123 .
    svn commit -m "Reverted to revision 123"
    

    (Lo mismo que la respuesta anterior de Jon Skeet).

Si no puede encontrar el número de revisión

Si no puede encontrar la copia anterior y solo desea confirmar los archivos que se encuentran actualmente en su PC:

  1. Haga una copia de su buena versión (pero sin .svncarpetas):

    cd ..
    rsync -ai --exclude=.svn  project/  project-good/
    
  2. Ahora asegúrese de tener la última versión:

    cd project
    svn update
    # or make a fresh checkout
    svn checkout <url>
    
  3. Copie su buena versión encima de la copia de trabajo.

    Este comando copiará y también eliminará cualquier archivo del árbol de trabajo que no esté en su copia buena, pero no afectará las .svncarpetas existentes.

    cd ..
    rsync -ai --exclude=.svn --delete  project-good/  project/
    

    Si no tiene rsync, puede usarlo cp -a, pero también deberá eliminar manualmente los archivos no deseados.

  4. Deberías poder comprometer lo que tienes ahora.

    cd project
    svn commit -m "Reverted to good copy"
    
joeytwiddle avatar May 02 '2009 09:05 joeytwiddle

Solo usa esta línea

svn update -r tuOldRevesion

Puede conocer su revisión actual utilizando:

información svn

M.Othman avatar Mar 27 '2013 13:03 M.Othman