Pregunta

Estoy creando una herramienta PHP que se conecta a un repositorio, descarga la lista de confirmaciones y las almacena localmente. Sin embargo, debido a la posibilidad de que ciertos repositorios sean ENORMES y obtengan sus resultados de registro en un tiempo de espera prolongado y posibles tiempos de espera / errores, me gustaría descargar cada mensaje de confirmación utilizando solicitudes asíncronas.

Entonces, tengo puntos de inicio y finalización en el historial de revisiones, y puedo obtener todos los registros de esta manera:

svn log -r <from_revision>:<to_revision> <REPO_URL>

... y posiblemente terminaré con un archivo XML que es tan grande que tomará mucho tiempo descargarlo, mucho tiempo y muchos recursos para analizar, y mucho tiempo almacenarlo.

Si conozco el punto inicial y final, puedo crear un bucle for () para obtener las revisiones una por una:

svn log -r <revision> ...

PERO, dado que no sé qué revisiones específicas existen para la ruta dada, recibiré un error. Puedo hacer que la aplicación ignore ese error durante la actualización, pero es un truco desagradable y publicará solicitudes y esperará las respuestas de todos modos, lo que no es bueno en absoluto.

Entonces, necesito algo como esto:

  • " dame la lista de números de revisión para esta ruta " ;, OR:
  • " dame la lista de números de revisión para esta ruta, entre y

De esa forma, podría hacer una serie de revisiones válidas para la ruta del repositorio y obtenerlas una por una.

Todas las sugerencias son bienvenidas, gracias de antemano.

¿Fue útil?

Solución

Creo que su mejor opción sería hacer lo siguiente svn log -l 100 0:{$newest} .\ que recuperará los primeros 100 registros de un directorio o archivo determinado. luego lea el último número de revisión devuelto, luego solicite los siguientes 100 svn log -l 100 {$last_ret_log}:{$newest} .\

de esa manera obtienes 99 nuevas entradas de registro con cada solicitud pero no las obtienes todas.

Otros consejos

Si tiene acceso al árbol de repositorio en su servidor Subversion, puede usar svnlook history para obtener una lista de números de revisión.

Se pueden encontrar más detalles en http: //svnbook.red-bean .com / es / 1.1 / re49.html .

Acabo de intentar obtener un resultado similar. Solo quiero todos los números de revisión para una rama en particular.

Encontré lo siguiente muy útil.

svn log <svn_server_path> | grep "^r[0-9]\+ | " | cut -d' ' -f1 | cut -c2- > revisions.csv

Esto me da un archivo con todos los números de revisión en líneas separadas.

Con suerte, usted u otra persona lo encontrarán útil.

Nuestro repositorio tiene más de 25000 revisiones y lleva unos segundos producir este archivo.

Es posible que desee mirar svn list. Entonces, para su propósito:


$ svn list --verbose file:///var/svn/repos
     16 sally         28361 Jan 16 23:18 README.txt
     27 sally             0 Jan 18 15:27 INSTALL
     24 harry               Jan 18 11:27 examples/

Esto enumera la última revisión (cabeza) de cualquier archivo.

svn log url -l limitNumber - r fromReversion:toReversion

si U desea encontrar la próxima reversión (versión) anterior (más pequeña) por ejemplo

   svn log url -l 4 -r someVersion:1
 or
   svn log url -l 4 -r 99: 3

fromReversion mayor que toReversion si U desea encontrar la próxima reversión (versión) más nueva (más grande)

  svn log url -l 4 -r someVersion:head
or   
  svn log url -l 4 -r 3:99
   fromReversion lower than toReversion
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top