2010-02-12 22 views
37

Entiendo que el comando "SVN checkout" hará la obtención inicial de los archivos del repositorio Subversion y los traerá localmente a su directorio/copia de trabajo y que el comando "Actualización SVN" obtendrá cambios en el archivo (s)) del repositorio si los cambios han sido hechos por otros.Subversion: ¿Cuáles son las diferencias entre el pago SVN y los comandos de actualización de SVN?

Me parece que una "actualización" es solo un caso especial de "pago", es decir, cuando se realiza un pago, se obtienen todos los archivos ya que ninguno existe localmente y por lo tanto TODOS los archivos tienen " cambiado ", y que detrás de las escenas estos comandos están haciendo casi lo mismo. ¿Supongo que los comandos existen por separado como un medio de simplificación?

O, existen otras diferencias entre los comandos, por ejemplo, hace que "SVN update" obtenga archivos nuevos (archivos que existen en el repositorio que no tiene en su copia de trabajo) o solo actualizaciones a existentes archivos?

+1

También está relacionado el comando "svn export." Esto reducirá los archivos de un repositorio, pero no creará una copia de trabajo. No podrá realizar cambios de una exportación. –

+0

Es solo para leer sólo, o "navegar" para fines tipo? ¿Dónde los pone, algunos temp dir? – Emilio

+1

No, será una copia grabable, simplemente no contiene ningún directorio .svn oculto para rastrear los cambios. –

Respuesta

40

mi punto de vista, la gran diferencia es que checkoutcrea una copia de trabajo, mientras que update hace que caiga cambios en una copia de trabajo existente .

+3

En mi humilde opinión esto no responde a la pregunta, porque esta distinción ya está contenida en la pregunta. Es bastante obvio que los dos comandos tienen una semántica diferente, pero ¿cómo difieren * técnicamente *? ¿No están haciendo efectivamente lo mismo, solo uno al principio y el otro en un momento posterior? –

8

La actualización actualizará su versión desprotegida a la última versión (o una otra revisión específica) en el repositorio. Si ha realizado cambios en su copia de trabajo, seguirán allí después de la actualización. Si los archivos se han agregado o eliminado al repositorio, eso se reflejará en su copia de trabajo. Si hay cambios tanto en su copia local como en el repositorio SVN intentará fusionar todos los cambios por usted, si eso no funciona, marcará un conflicto que resuelva manualmente.

+0

Puede actualizar a cualquier revisión, no solo la más reciente. –

+0

Claro que puedes actualizar a lo último. Esto es lo que hace svn update si especifica HEAD como la revisión, o si no especifica ninguna revisión. –

2

Subversion utiliza directorios ocultos de metadatos para habilitar la funcionalidad que proporciona. Estos directorios .svn son los que hacen que un directorio se convierta en una copia de trabajo de Subversion, sin estos, es solo un directorio y Subversion no puede hacer mucho con él.

ACTUALIZAR es una operación que se realiza sobre una copia de trabajo de Subversion; sin directorios .svn, sin ACTUALIZAR. CHECKOUT es la operación que crea una copia de trabajo.

9

svn checkout copia todos los archivos versionados del directorio dado en el repositorio en la revisión dada (HEAD por defecto), y los copia en su máquina local. También genera todos los directorios .svn ocultos y los metadatos dentro de ellos, que hacen que estos archivos sean una copia de trabajo.

svn export copia todos los archivos versionados del directorio dado en el repositorio en la revisión dada (HEAD predeterminada), y los copia en su máquina local, pero produce una jerarquía de directorio estándar. (Hace no produce una copia de trabajo que se puede actualizar o volver a registrar).

svn update aplica los cambios a una copia de trabajo existente. Si, al hacerlo, se descubre un conflicto, el usuario recibe una alerta y debe resolverlo antes de poder realizar cualquier cambio. Cuando se usa svn commit, es un requisito que la copia de trabajo que se va a confirmar esté actualizada (es decir, la misma revisión que HEAD).

+0

No estoy seguro de que esté 100% correcto con respecto a la condición previa de que la copia de trabajo se actualice antes de realizarla. Técnicamente, creo que puedes/puedes/comprometerte sin actualizar primero. Sin embargo, supongo que es/no/recomendado y debe practicarse con sumo cuidado. Además, no sé cuándo le gustaría comprometerse sin una primera actualización. – Dror

1

svn update trae solo la diferencia en los archivos de la versión de usuario a la última versión disponible. Si no hay diferencia, no hay acciones.

Pero checkout crea una nueva carpeta y trae todos los archivos para esa rama. Checkout es una buena forma de trabajar si cambiamos constantemente las sucursales en las que trabajamos.La actualización es cuando tenemos un tronco y necesitamos que otros realicen las actualizaciones en ese tronco.

1

Durante el uso de la SVN, la diferencia significativa entre la salida y la actualización es que: Sólo se puede utilizar el comando la caja vez para construir la relación entre un directorio local y el repositorio (bajo control de versiones) ya copie todos los archivos del repositorio raíz a un directorio de trabajo local. Después de eso, el uso de la caja para actualizar las copias de directorio local generará errores de la siguiente manera:

SVN: E175002: No se puede conectar a un repositorio en URL https': // ******* * '.

SVN: E175002: Las opciones de solicitud devuelto XML no válido en la respuesta: **** "

La única manera de actualizar las versiones actuales en el directorio local es utilizar la actualización SVN. comando

+0

¿Qué versión de svn vio este comportamiento? Acabo de hacer una "nueva verificación" y parece que acaba de interpretarlo como una actualización. Estoy ejecutando 'svn, versión 1.8.9 (r1591380)' – jxramos

Cuestiones relacionadas