Subversion - ¿Cuáles son las diferencias entre los comandos SVN checkout y SVN update?


Entiendo que el comando "SVN checkout" hará la obtención inicial de los archivos del repositorio Subversion y los llevará localmente a su directorio de trabajo/copia y que el comando "SVN update" obtendrá los cambios a los archivos del repositorio si los cambios han sido realizados por otros.

Sin embargo, me parece que una "actualización" es solo un caso especial de un "checkout", es decir, cuando se produce un checkout, está obteniendo todos los archivos ya que ninguno aún existe localmente y, por lo tanto, TODOS los archivos han "cambiado", y que detrás de las escenas estos comandos están haciendo en gran medida la misma cosa. Supongo que los comandos existen por separado solo como un medio de simplificación?

O, hay otras diferencias entre los comandos, por ejemplo, "SVN update" get files obtiene nuevos archivos (archivos que existen en el repositorio que no tiene en su copia de trabajo) o simplemente actualizaciones de archivos existentes?

Author: Peter Mortensen, 2010-02-12

6 answers

Como yo lo veo, la gran diferencia es que checkout crea una copia de trabajo, mientras que update reduce los cambios a una copia de trabajo existente.

 43
Author: karoberts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-12 19:40:02

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

svn export copia todos los archivos versionados del directorio dado en el repositorio en la revisión dada (HEAD por defecto), y los copia a su máquina local, pero produce una jerarquía de directorios estándar. ( no produce una copia de trabajo que puede ser actualizada o verificada de nuevo).

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

 12
Author: Edd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-15 14:24:33

Update actualizará su versión descargada a la última versión (o a otra revisión especificada) en el repositorio. Si ha realizado cambios en su copia de trabajo, seguirán estando allí después de la actualización. Si se han agregado o eliminado archivos 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 usted resuelva manualmente.

 10
Author: svinto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-12 21:14:56

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

UPDATE es una operación que se realiza sobre una copia de trabajo de Subversion; no.directorios svn, sin ACTUALIZACIÓN. CHECKOUT es la operación que crea una copia de trabajo.

 3
Author: Eric Kolb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-12 19:39:55

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 manera de trabajar si cambiamos constantemente las ramas en las que trabajamos. La actualización es cuando tenemos un tronco y necesitamos conseguir las actualizaciones hechas por otros en ese tronco.

 2
Author: George,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-12 16:50:05

Durante el uso del SVN, la diferencia significativa entre checkout y update es que: Solo puede usar el comando checkout una vez para construir la relación entre un directorio local y el repositorio (bajo control de versiones) y copiar todos los archivos del repositorio raíz a un directorio de trabajo local. Después de eso, usando checkout para actualizar las copias en el directorio local generará errores de la siguiente manera:

Svn: E175002: No se puede conectar a repositorio en la URL ' https://********'.

Svn: E175002: La solicitud de OPCIONES devolvió XML no válido en la respuesta:****."

La única forma de actualizar las versiones actuales en el directorio local es usar el comando svn update.

 2
Author: Z. Zhang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-21 05:58:31