SVN: È possibile ottenere l'elenco dei numeri di revisione per un determinato percorso?

StackOverflow https://stackoverflow.com/questions/1633649

  •  06-07-2019
  •  | 
  •  

Domanda

Sto creando uno strumento PHP che si collega a un repository, scarica l'elenco di commit e li memorizza localmente. Tuttavia, a causa della possibilità che alcuni repository siano ENORMI e che acquisiscano i loro risultati di log in tempi di attesa lunghi e possibili timeout / errori, vorrei scaricare ogni messaggio di commit utilizzando richieste asincrone.

Quindi, ho un punto di inizio e fine nella cronologia delle revisioni e posso prendere tutti i log in questo modo:

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

... e probabilmente finirò con un file XML che è così grande che ci vorrà molto tempo per il download, molto tempo e molte risorse per analizzare e molto tempo per l'archiviazione.

Se conosco l'inizio e il punto finale, posso creare un ciclo for () per afferrare le revisioni una per una:

svn log -r <revision> ...

MA, poiché non so quali revisioni specifiche esistono per un determinato percorso, riceverò un errore. Posso fare in modo che l'applicazione ignori tale errore durante l'aggiornamento, ma è un brutto trucco e pubblicherà richieste e attenderà comunque le risposte, il che non è affatto buono.

Quindi, ho bisogno di qualcosa del genere:

  • " dammi la lista dei numeri di revisione per questo percorso " ;, OPPURE:
  • " dammi la lista dei numeri di revisione per questo percorso, tra e

In questo modo sarei in grado di fare una serie di revisioni valide per il percorso del repository e ottenerle una per una.

Tutti i suggerimenti sono benvenuti, grazie in anticipo.

È stato utile?

Soluzione

Penso che la soluzione migliore sarebbe quella di fare quanto segue svn log -l 100 0:{$newest} .\ per recuperare i primi 100 registri per una determinata directory o file. quindi leggi l'ultimo numero di revisione restituito, quindi richiedi i successivi 100 svn log -l 100 {$last_ret_log}:{$newest} .\

in questo modo ricevi 99 nuove voci di registro con ogni richiesta ma non le otterrai tutte.

Altri suggerimenti

Se hai accesso all'albero dei repository sul tuo server Subversion, puoi usare svnlook history per ottenere un elenco di numeri di revisione.

Ulteriori dettagli sono disponibili all'indirizzo http: //svnbook.red-bean .com / it / 1.1 / re49.html .

Ho appena cercato di ottenere un risultato simile. Voglio solo tutti i numeri di revisione per un determinato ramo.

Ho trovato quanto segue molto utile.

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

Questo mi dà un file con tutti i numeri di revisione su righe separate.

Speriamo che tu o qualcun altro lo troverai utile.

Il nostro repository ha oltre 25000 revisioni e ci vogliono un paio di secondi per produrre questo file.

Potresti voler guardare svn list. Quindi per il tuo scopo:


$ 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/

Questo elenca l'ultima revisione (head) di qualsiasi file.

svn log url -l limitNumber - r fromReversion:toReversion

se U vuole trovare la prossima versione precedente (più piccola) (versione) per esempio

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

fromReversion maggiore di toReversion se vuoi trovare la prossima (più grande) inversione (versione) successiva

  svn log url -l 4 -r someVersion:head
or   
  svn log url -l 4 -r 3:99
   fromReversion lower than toReversion
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top