linux - usar - Diferencia entre pago y exportación en SVN
tortoise svn (8)
¿Está volviendo a ejecutar su pago o exportarlo a un directorio existente?
Porque si lo está, el proceso de pago actualizará la copia de trabajo, incluyendo la eliminación de cualquier archivo.
Pero exportar simplemente transferirá todos los archivos del reporsitory al destino; si el destino es el mismo directorio, esto significa que los archivos eliminados en el repositorio NO serán eliminados.
¿Entonces exportar copia solo puede funcionar porque se basa en un archivo que se ha eliminado en el repositorio?
¿Cuál es la diferencia exacta entre SVN checkout y SVN export?
Por lo que sé, export no incluye el directorio .svn que incluye metadatos, y checkout incluye ese directorio .svn. Sin embargo, mi colega tuvo este problema recientemente de que hay un comportamiento diferente para las cosas compiladas de las fuentes que se pagan y se exportan desde el repositorio de SVN. Ambos compilados correctamente, pero el compilado de svn export
funciona, pero el que está desprotegido no funciona en absoluto.
PD: Lo que se compila es el kernel de Linux 2.4 que se está utilizando en un dispositivo incrustado. La imagen se compila y carga correctamente, pero la desprotegida no funciona. Causa pánico en el kernel durante insmod. ¿Por qué podría suceder esto?
PPS: hemos probado la herramienta de verificación de sumas y diferencias para verificar la diferencia entre los dos directorios que se exportan y desprotegen desde SVN. Ambos son iguales excepto el directorio .svn.
¿Hay alguna posibilidad de que el proceso de compilación busque en los subdirectorios e incluya algo que no debería? Por cierto, puedes hacer un pago legal, luego eliminar el .svn y todo lo que contiene. Eso debería darte lo mismo que una exportación. Intente compilar eso, antes y después de eliminar los metadatos, por así decirlo.
(Para complementar la respuesta de Gerald ...) Otra diferencia sutil es que, aunque el comando:
svn checkout ...repos_location/my_dir .
pone los archivos en my_dir
en el directorio actual (con la carpeta .svn
)
en ciertas versiones de svn, el comando:
svn export ...repos_location/my_dir .
creará una carpeta llamada my_dir
en el directorio actual y luego colocará los archivos exportados dentro de ella.
Como dijiste, un checkout incluye los directorios .svn. Por lo tanto, es una copia de trabajo y tendrá la información adecuada para realizar confirmaciones (si tiene permiso). Si realiza una exportación, solo está tomando una copia del estado actual del repositorio y no tendrá ninguna forma de confirmar los cambios.
Diferencia muy simple, si solo quiere ver la estructura de su proyecto, entonces vaya a exportar.
Y si desea trabajar en sus archivos, debe realizar la compra, ya que incluirá la carpeta .svn que contiene los metadatos que componen la copia de trabajo, de lo contrario obtendrá el error de exportación.
Si svn export
y luego editar algunos archivos y luego confirmar, entonces obtendrá un error:
../../xxx no es tu copia de trabajo.
Reflexiones adicionales. Dijiste insmod se bloquea. Insmod carga módulos. Los módulos se crean en otra operación de compilación desde la creación del kernel. Kernel y módulos deben construirse desde los mismos encabezados y demás. ¿Están todos los módulos construidos durante la compilación del núcleo, o son "existentes"?
La otra idea, y algo de lo que sé poco, es svn external, que (si se usa) puede afectar lo que está desprotegido en tu proyecto. Mire y vea si esto es diferente al exportar.
Utilice exportar si desea cargar (o cederle a alguien) un proyecto. Si está trabajando con un proyecto, use el pago y envío.
svn export
simplemente extrae todos los archivos de una revisión y no permite el control de revisión en él. Tampoco ensucia cada directorio con directorios .svn.
svn checkout
permite usar el control de versiones en el directorio creado, por ejemplo, sus comandos estándar, como svn update
y svn commit
.