2009-07-31 26 views
148

Comencé a usar Subversion con TortoiseSVN. Si abro el registro y hago clic derecho en una revisión anterior, veo dos opciones que parecen regresar a una versión anterior: "Actualizar elemento a revisión" y "Volver a esta revisión".Actualizar elemento a revisión frente a Revertir a la revisión

Entiendo que la actualización a una revisión anterior se usa cuando solo desea mirar hacia atrás en una versión anterior pero realmente no cambiar el repositorio. Revertir es cuando realmente se equivocó y quiere que la última revisión en el repositorio sea la misma que en una versión anterior.

Digamos que la revisión HEAD es 100 y vuelvo a 95. Volverá a fusionar mi copia de trabajo a 95. Entonces, ¿puedo corregir ese cambio en el repositorio que crearía la revisión 101 correcta? ¿Cómo es eso diferente si tuviera que actualizar a la revisión 95? ¿Todavía no revierte los cambios de las últimas revisiones? Estoy confundido sobre cómo difiere el estado de mi copia de trabajo después de una reversión o actualización a una revisión anterior.

Respuesta

190

La actualización de la revisión solo actualizará los archivos de su documento de trabajo a la revisión que elija. Pero usted no puede continuar para trabajar en esta revisión, ya que SVN se quejará de que su workingcopy es obsoleta.

Revertir a esta revisión se deshacer todos los cambios en su copia de trabajo que se hicieron después de la revisión seleccionada (en su ejemplo rev. 96,97,98,99,100) su copia de trabajo está ahora en estado modificado .

El contenido de los archivos de ambos scenarions es el mismo, sin embargo, en primer caso de tener una copia de trabajo sin modificar y no se puede confirmar los cambios (como su workingcopy no está apuntando a CABEZA rev 100) en el segundo caso tiene un modificado copia de trabajo que apunta a la cabeza y se puede seguir trabajando y comprometerse

+0

Bien, por eso digo que actualizo la revisión y mi copia de trabajo está sin datos. Nada me impide cambiar los archivos. ¿Qué sucede si cambio uno de los archivos y trato de confirmarlo? Supongo que la subversión verá el conflicto y me obligará a fusionar la última versión en el repositorio en mi copia de trabajo modificada antes de enviarla. –

+5

Si intenta comprometer un elemento con BASE-Revision anterior a HEAD, obtendrá un mensaje de error "commit failed: su copia de trabajo está desactualizada" –

+2

Great answer, thank you. – haylem

4

Actualice su copia de trabajo a la revisión seleccionada. Es útil si desea que su copia de trabajo refleje un momento anterior, o si ha habido más confirmaciones en el repositorio y desea actualizar su copia de trabajo paso a paso. Lo mejor es actualizar un directorio completo en su copia de trabajo, no solo un archivo, de lo contrario su copia de trabajo podría ser inconsistente. Esto se utiliza para probar un propósito específico de revoluciones, si la prueba se ha hecho, se puede utilizar este comando para probar otra vuelta o utilizar SVN actualización para obtener CABEZA

Si desea deshacer un cambio anterior de forma permanente, use En su lugar, vuelva a esta revisión.

- TSVN de ayuda doc

Si actualiza su copia de trabajo a una rev anterior, esto sólo se afecta a su propia copia de trabajo, después de hacer algún cambio, y desee confirmar y va a fracasar, TSVN lo alertará para que actualice su WC a la última revisión primero Si vuelve a una versión revisada, puede comprometerse con el repositorio. Todos volverán a la revisión después de que realicen una actualización.

5

Los archivos en su copia de trabajo pueden mirar exactamente lo mismo después, pero siguen siendo acciones muy diferentes: el repositorio está en un estado completamente diferente, y tendrá opciones diferentes disponibles después de la reversión que " actualizando "a una revisión anterior.

En pocas palabras, "actualizar a" solo afecta su copia de trabajo, pero "fusión inversa y compromiso" afectará el repositorio.

Si "actualiza" a una revisión anterior, entonces el repositorio no ha cambiado: en su ejemplo, la revisión HEAD sigue siendo 100. No tiene que confirmar nada, ya que solo está jugando con su trabajo dupdo. Si realiza modificaciones en su copia de trabajo y trata de confirmar, se le informará que su copia de trabajo está desactualizada y deberá actualizar antes de poder comprometerse. Si alguien más que trabaja en el mismo repositorio realiza una "actualización", o si saca una segunda copia de trabajo, será r100.

Sin embargo, si "revierte la fusión" a una revisión anterior, entonces su copia de trabajo todavía se basa en HEAD (suponiendo que esté actualizado), pero está creando una nueva revisión para reemplazar la no deseada cambios. Debe confirmar estos cambios, ya que está cambiando el repositorio. Una vez hecho esto, cualquier actualización o nueva copia de trabajo basada en HEAD mostrará r101, con los contenidos que acaba de confirmar.

29

para comprender cómo el estado de su copia de trabajo es diferente en ambos casos, hay que entender el concepto de la BASE revision:

BASE

El número de revisión de un elemento en una copia de trabajo. Si el artículo ha sido modificado localmente, esto se refiere a la forma en que aparece el artículo sin esas modificaciones locales.

su copia de trabajo contiene una instantánea de cada archivo (oculto en una carpeta .svn) en esta revisión BASE, lo que significa como lo fue cuando recuperó el pasado desde el repositorio. Esto explica por qué las copias de trabajo ocupan 2 veces el espacio y cómo es posible que pueda examinar e incluso revertir las modificaciones locales sin una conexión de red.

Actualice el elemento a la Revisión cambia esta revisión de base, por lo que BASE está desactualizada. Cuando intente realizar modificaciones locales, SVN notará que su BASE no coincide con el HEAD del repositorio. La confirmación será rechazada hasta que realice una actualización (y posiblemente una combinación) para solucionar esto.

Revertir a revisión no cambia BASE. Conceptualmente es casi lo mismo que editar manualmente el archivo para que coincida con una revisión anterior.

+0

De la respuesta aceptada "El contenido del archivo de ambos escenarios es el mismo". ¿Entonces, para qué molestarse? Esta respuesta explica la diferencia final y explica por qué "actualizar" frente a "revertir" causa un comportamiento diferente cuando se intenta comprometer. – radarbob

+0

¿cómo "actualizar a" y "revertir a/desde" tratan los cambios locales (cambios no confirmados)? – BaltoStar

2

El texto de la referencia de la tortuga: artículo

Actualizar a la revisión actualizar su copia de trabajo a la revisión seleccionada. Es útil si desea que su copia de trabajo refleje un momento anterior, o si ha habido más confirmaciones en el repositorio y desea actualizar su copia de trabajo paso a paso. Lo mejor es actualizar un directorio completo en su copia de trabajo, no solo un archivo, de lo contrario su copia de trabajo podría ser inconsistente.

Si desea deshacer un cambio anterior permanentemente, use Revertir a esta revisión en su lugar.

Volver a esta revisión Volver a una revisión anterior.Si ha realizado varios cambios y luego decide que realmente quiere volver a ver cómo estaban las cosas en la revisión N, este es el comando que necesita. Los cambios se deshacen en su copia de trabajo por lo que esta operación no afecta el repositorio hasta que no haya confirmado los cambios. Tenga en cuenta que esto deshará todos los cambios realizados después de la revisión seleccionada, reemplazando el archivo/carpeta con la versión anterior.

Si su copia de trabajo está sin modificar, después de realizar esta acción su copia de trabajo se mostrará como modificada. Si ya tiene cambios locales, este comando fusionará los cambios de deshacer en su copia de trabajo.

Lo que ocurre internamente es que Subversion realiza una fusión inversa de todos los cambios realizados después de la revisión seleccionada, deshaciendo el efecto de esas confirmaciones previas.

Si después de realizar esta acción decide deshacer el deshacer y recuperar su copia de trabajo a su estado anterior sin modificaciones, debe usar TortoiseSVN → Revertir desde Windows Explorer, que descartará las modificaciones locales realizadas por este acción de fusión inversa.

Si simplemente desea ver el aspecto de un archivo o carpeta en una revisión anterior, use Actualizar a revisión o Guardar revisión como ... en su lugar.

Cuestiones relacionadas