SVN Export Only Changed Files

Actualmente, confío files a mi server SVN (que está ubicado en mi server web), y desde allí, ingreso SSH y los exporto al directory de trabajo en mis htdocs.

A medida que mi aplicación se hace cada vez más grande, una export completa es una pérdida de time. ¿Cómo solo puedo exportar los files que se han cambiado?

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

¿Es una solución que había encontrado, entonces tal vez esto puede ayudar? ¿Cómo puedo get automáticamente la revisión?

No estoy seguro de si este es el mismo problema al que se refiere, pero cuando estoy ejecutando files para una aplicación web en la que estoy trabajando, he utilizado el enlace SVN svn2ftp.py para transferir automáticamente los files modificados a un server intermedio . Fue muy fácil de instalar y nunca tuve un problema con eso.

He estado usando el siguiente script de Bash:

 for i in $(svn diff --summarize -r 1:2 http://repo_path | awk '{ print $2 }'); do p=$(echo $i | sed -e 's{http://repo_path/{{'); mkdir -p $(dirname $p); svn export $i $p; done 

Similar a la solución de hudolejev, genera los cambios entre las revisiones (1 y 2) en este caso y pasa por encima de los files y carpetas.

Esto funciona con el uso de Tortoise SVN. No estoy seguro de que se pueda hacer sin eso.

Tuve un problema similar en el que había hecho cambios en varios miles de files (no pregunte … ¡es un problema henetworkingado!) De 10 o de miles, por lo que no quería cargar todo el directory o confiar en winscp para que funcione correctamente. coincide con las dates (ya que este server está en EE. UU. y estoy en AUS).

Así que me registré en SVN luego a través de "Mostrar logging" en Tortoise SVN. A continuación, hice clic derecho en la revisión más reciente (aunque podría ser cualquier rev en vivo) y seleccioné "comparar con la revisión anterior". Luego seleccioné todos los files que aparecieron (CTRL-A) y hice clic derecho en "Exportar selección a" y BAM todos los files actualizados en la estructura de carpetas correcta se guardan y están listos para cargarse.

No existe una solución SVN pura de la que tenga conocimiento, pero puede intentar lo siguiente:

 svn update | egrep "^(A|U)[ ]+(.*)" | cut -b 2 | xargs -i cp -R "{}" /path/to/public_html 

En su directory de trabajo, obtiene una actualización y analiza la salida – svn update .

Todos los files marcados con A y U son candidatos para copyr: egrep "^(A|U)[ ]+(.*)" .

Elimine A o U para get el nombre del file – cut -b 2 .

Copie los files que cambiaron desde su última actualización: xargs -i cp -R "{}" /path/to/public_html .

(Lo siento por torpe shell-fu, aún estoy aprendiendo).

EDITAR: Use cut lugar de tr (fijo)

Haría una salida de SVN en un repository local, y luego sincronizaría los files cambiados en la raíz web. O simplemente haga el pago en la webroot y niegue el acceso a todos los directorys .svn.

Supongo que es similar a un problema que tuve. A menudo necesitaba convertir a mi server web solo aquellos files que se cambiaron recientemente. Rsync no estaba disponible en el server web, así que no pude usarlo.
Hay otra solución que uso en mi trabajo. Uso SVN en combinación con Trac que he instalado en mi server local. Entre otros, Trac tiene la posibilidad de mostrar cambios entre dos revisiones o introducirse en ciertos sets de cambios. Si nunca ha usado Trac, visite la página de inicio del proyecto Trac para navegar por su repository. Está disponible públicamente.
Como ejemplo, amplié la última versión estable (en el momento de escribir esta publicación), que es 0.12. La última revisión que puedo ver es 10792. Puede hacer clic en el número de revisión para visualizar el logging de revisiones para esta twig. Ahora puedes hacer dos cosas:

  • select dos revisiones en la columna Diff y click el button Ver cambios para ver las diferencias entre ellos
  • o click un ícono de engranaje pequeño en la columna Rev. para ver un set de cambios relacionado con cierta revisión (vea esta página ).

En ambos casos, vería una página similar con la list de files modificados y cambios muy formateados entre el file antiguo y el nuevo. En la parte inferior de la página, puede encontrar enlaces para download las diferencias en dos formattings: diff unificado y zip . El último es exactamente lo que necesita: un file zip que contiene solo files modificados. Ahora puede descomprimir el file y fácilmente los files modificados ftp en un server web. En proyectos grandes realmente ahorra time.
Si no está familiarizado con Trac, consulte la documentation de Trac disponible en las páginas web del proyecto o si prefiere que pueda get el libro Gestión del desarrollo de software con Trac y Subversion que encontré realmente útil.

svn2ftp 0.3 – secuencia de commands bash. libre de usar, exportar files a ftp desde el repository svn. (revisiones de cheking) files: start.sh – script, settings.properties – svn, ftp, properties del proyecto.

Una nota para cualquier otro transeúnte … si desea los mismos beneficios de la solución de @ User123342234 para trabajar con Tortoise, pero preferiría no comprometer los cambios en su repository compartido / remoto antes de poder exportarlos. El mismo resultado se puede lograr creando un repository svn local usando Tortoise (una característica poco conocida). Luego puede exportar su sucursal remota e importarla a su repository local. Luego, exporte su copy de trabajo local modificada del repository remoto sobre la copy de trabajo de su repository local y confínelo. Ahora puede usar "Mostrar logging" en el repository local para exportar los cambios de la confirmación, todo sin tener que comprometerse primero con el repository compartido / remoto. No necesariamente trivial, pero fue significativamente útil para mí en al less una instancia.