Come ottenere un report di colpa svn ricorsivo in un singolo file XML per tutti i file non binari in un ramo?

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

Domanda

Come posso ottenere un rapporto di colpa svn completamente ricorsivo per tutti i file non binari in un ramo, dove l'output è in un singolo file in formato xml e include revisione, data, autore, nome file e amp; percorso e il testo della riga del file stesso? L'intero output deve essere in un singolo file. Verrà eseguito come parte della build tramite un'istanza CCNet.

Gli strumenti disponibili sono l'ultima versione stabile di nant e nantcontrib, msbuild e l'ultima riga di comando svn.

Ecco alcuni dei problemi che ho riscontrato: riga di comando Il comando svn blame non supporta la ricorsione della directory. L'opzione --xml di Blame non include il testo effettivo di ogni riga, sebbene abbia tutto il resto. Di default nantcontrib sta passando il parametro --quiet (contrariamente al riferimento dell'attività), che non è supportato dal comando blame. L'attività Nantcontrib svn potrebbe non accettare il parametro --xml.

È stato utile?

Soluzione

La semplice risposta è che non esiste un modo semplice per farlo. Il modo migliore e più corretto sarebbe scrivere il tuo client svn (o estendere quello esistente) in modo che abbia le funzionalità di cui hai bisogno. Difficilmente banale.

C'è anche un modo sbagliato di farlo, che comporta anche la scrittura di codice. Non farlo :

find . -type f | grep -v .svn | xargs svn blame > line_data
find . -type f | grep -v .svn | xargs svn --xml blame > xml_data

Potresti scrivere insieme i due comandi svn per evitare di eseguire find due volte, ma sarà comunque estremamente lento. Per aggiungere un insulto a un infortunio, dovrai analizzare tu stesso i due file per aggiungere le linee di origine effettive nei dati XML.

Purtroppo, penso che questa sia l'estensione del supporto per quello che vuoi con il client svn standard, e non riesco a trovare altri client che facciano meglio le cose (alcuni non supportano nemmeno blame ).

Altri suggerimenti

Non so quale SO stai usando. Ma puoi provare a usare un semplice ciclo FOR e il comando " svn ls -R " per elencare in modo ricorsivo tutti i file nel tuo ramo (area di lavoro / url) e quindi reindirizzarlo a " svn blame --xml " ;.

L'ho provato nel mio prompt della riga di comando SVN e funziona benissimo (Windows XP, SVN 1.4.4). Il comando che ho usato è il seguente:

FOR / F " usebackq delims == " % i IN ( svn ls -R http: // myurl / mybranch ) DO @svn biasimo --xml% i

Nota. Puoi evitare alcuni "URL non trovati". tipo di errori se si digita questo comando in un'area di lavoro (che riflette la radice del proprio ramo) e si usa 'svn ls -R` invece dell'URL nel comando sopra.

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top