Pregunta

Tengo una situación de desarrollo algo interesante.El cliente y el servidor de implementación están dentro de un firewall sin acceso al servidor Subversion.Pero los desarrolladores están fuera del firewall y pueden utilizar el servidor Subversion.En este momento, la solución que he encontrado es actualizar mi copia local del código y luego extraer los archivos actualizados más recientemente usando UnleashIT.

La pregunta es cómo sacar sólo los archivos actualizados de Subversion para que puedan transportarse físicamente a través del firewall y colocarse en el servidor de implementación.

No me preocupa intentar cambiar la configuración del firewall o intentar encontrar una manera más fácil de acceder al servidor Subversion desde dentro del firewall.Solo estoy interesado en una forma de obtener una exportación parcial del repositorio de los archivos modificados más recientemente.

¿Hay alguna otra sugerencia?

Respuesta encontrada:Además de la respuesta que marqué como Respuesta, también encontré lo siguiente aquí para poder hacer esto desde TortoiseSVN:

de http://svn.haxx.se/tsvn/archive-2006-08/0051.shtml

* select the two revisions
* right-click, "compare revisions"
* select all files in the list
* right-click, choose "export to..." 
¿Fue útil?

Solución

He encontrado sincronización extremadamente útil para sincronizar árboles de directorios en múltiples sistemas.Si tiene acceso de shell a su servidor desde una estación de trabajo de desarrollo, puede verificar periódicamente el código localmente y ejecutar rsync, que transferirá solo los archivos que hayan cambiado al servidor.

(Esto supone un entorno similar a Unix en sus estaciones de trabajo de desarrollo.Cygwin funcionará bien.)

cd deploy
svn update
rsync -a . server:webdir/

Su pregunta parece que en realidad no tiene ningún acceso directo a la red desde sus estaciones de trabajo de desarrollo a su servidor, y lo que realmente está buscando es una manera de hacer que Subversion le diga qué archivos han cambiado. exportación svn admite un argumento que le permite verificar solo los archivos que cambiaron entre revisiones particulares.De la ayuda de svn:

  -r [--revision] arg      : ARG (some commands also take ARG1:ARG2 range)
                             A revision argument can be one of:
                                NUMBER       revision number
                                '{' DATE '}' revision at start of the date
                                'HEAD'       latest in repository
                                'BASE'       base rev of item's working copy
                                'COMMITTED'  last commit at or before BASE
                                'PREV'       revision just before COMMITTED

Deberá realizar un seguimiento de cuál es la última revisión que copió en el servidor.Suponiendo que sea la revisión SVN xxxx:

svn export -r xxxx:HEAD http://svn/

Luego simplemente copie el contenido del desplegar directorio a su servidor encima de los archivos existentes.

Esto no manejará archivos eliminados, lo que puede resultar problemático en algunos entornos.

Otros consejos

svn export no acepta un rango de revisión, pruébelo.

Una posible solución es obtener la lista de archivos modificados con:

svn diff --summarize -rXXX http://svn/...

y luego exportar cada uno de ellos.

Entonces si entendí correctamente...

Digamos que tienes un repositorio que se parece a este:

/
|+-DIR1
|   |- FILEa
|   |- FILEb
|+-DIR2
|   |- FILEc
|   |- FILEd
|- FILEe
|- FILEf

Y digamos que actualizas archivos FILEa, FILEc, y FILEf y devolverlos al repositorio.Entonces lo que deseas exportar fuera del repositorio es una estructura similar a esta:

/
|+-DIR1
|   |- FILEa
|+-DIR2
|   |- FILEc
|- FILEf

¿Está bien?

Los ganchos de Subversion parecen muy prometedores.Pero al estar relativamente desinformado sobre cómo escribir el gancho, ¿cómo podría extraer los archivos que fueron confirmados y enviarlos por FTP en algún lugar manteniendo la estructura del directorio?

Si pudiera hacer eso, entonces alguien dentro del firewall puede descargar los archivos al servidor de implementación y estaríamos listos para comenzar.

Podrías intentar jugar con el volcado de svnadmin comando que se envía con los binarios de Subversion.Puede utilizar este comando para volcar todo el repositorio en un archivo, solo una determinada revisión o un rango de revisiones.Entonces usa carga svnadmin para cargar el archivo de volcado en un repositorio nuevo y limpio.

No es una solución perfecta ya que funciona en términos de repositorio y no de archivos individuales.

Sólo quieres que las personas que están detrás del firewall puedan acceder a los últimos archivos comprometidos con Subversion, ¿verdad?

¿Podrías escribir un secuencia de comandos de gancho svn ¿Eso utiliza algún método (tal vez scp o ftp) para enviar los archivos a la ubicación remota en el momento en que se envían?

Si etiqueta las revisiones, esto puede ayudar. github svn-diff-exportación

No proporciona información sobre lo que se permite a través del firewall.No estoy familiarizado con UnleashIT.

Supongo que podría tener un script que exporte desde SVN a una carpeta en el servidor SVN.Luego, el script comprime los archivos exportados.Luego puede transportar el archivo ZIP como desee y extraerlo al servidor de implementación.

TortoiseSVN admite servidores proxy, por lo que podría usar uno de los del lado del cliente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top