2012-03-09 12 views
7

Qualcuno ha uno script di questo tipo da condividere?Perforce in sospeso script script in sospeso

  • prende un numero changelist attesa come input
  • emette un diff unificato (inclusi i file aperti per add)

So per esperienza molte persone che lavorano con per forza tutto il giorno sono questi calci in giro. Potrei davvero utilizzare l'aiuto con l'intero problema di "file (s) non in vista client" quando diffondiamo i file appena aggiunti tramite "p4 diff".

+0

Stavo cercando qualcosa di simile: (http://confluence.atlassian.com/display/CRUCIBLE/Creating+a+Patch+Review#CreatingaPatchReview-PerforcePatchCreationViaTheCommandLine o questo: https://answers.atlassian.com/ domande/9522/automatic-patch-review-script-for-perforce – user675801

risposta

2

non ho avuto il tempo di trovare una soluzione adeguata così ho usato questo uno di linea:

p4 describe $CHANGELIST | sed -ne 's:^\.\.\. \(.*\)#[0-9][0-9]* [a-z][a-z]*$:\1:p' | xargs p4 diff -du 

Ecco come funziona:

Dal momento -

. .. Gli elenchi di modifiche in sospeso sono indicati come "in sospeso" e le differenze di file non vengono visualizzate.

p4 describe $CHANGELIST 

di per sé non lo farà, ma è possibile utilizzarlo come punto di partenza. Ottiene (tra le altre cose) un elenco dei file che è stato modificato nel tuo $CHANGELIST.

sed -ne 's:^\.\.\. \(.*\)#[0-9][0-9]* [a-z][a-z]*$:\1:p' 

di stampare la parte <depot-file> di solo le linee della forma ... <depot-file>#<revision> <action>

xargs p4 diff -du 

prende l'elenco dei file depot ed eseguire p4 diff -du su di esso. Il flag -d passa u (formato unificato) al programma $P4DIFF (che dovrebbe essere diff).

+0

Funziona su Windows, ottengo "sed" non è riconosciuto il comando.Come posso ottenere un file diff (cancellazione e aggiunta entrambi inclusi) in un formato colorato che posso inviare via email a un peer per la revisione? – noobcode

+0

'sed',' xargs' e 'diff' sono tipicamente presenti su un sistema simil-Unix. Su Windows è possibile installare utilità di tipo Unix di terze parti o provare a utilizzare PowerShell. Vedi: http://stackoverflow.com/q/127318/110488 –

-1

p4 describe -du changelist non funziona per voi?

+1

No, ecco perché: L'output dello script sarebbe un "diff" o "patch" (a seconda della terminologia preferita). La cartina tornasole è "può essere alimentato all'utility patch di unix per ricreare completamente le modifiche? "Si noti che la descrizione di p4 non include il contenuto di file" aperti per l'aggiunta ", quindi la patch mancherebbe di tutti i nuovi file aggiunti. – user675801

+0

Ah, vedo - come una soluzione alternativa è possibile eseguire 'p4 add' sull'intera directory e ignorare i file già esistenti.Una soluzione migliore (comando di stato) è in arrivo nella prossima versione.Dopo aver saputo quali file sono stati aggiunti, è possibile scaricare il loro contenuto in il p atch. Quindi richiederà una sceneggiatura, penso. –

+0

'p4 describe' non mostra alcuna diff, anche per i file modificati, se l'elenco delle modifiche è in sospeso. –

0

questo funziona per me:

p4 diff2 //depot/a/b/c/... //depot/a/b/c/[email protected]=$CHANGELIST | grep -v '<none>' 

Più specifico il percorso, il più veloce l'esecuzione. Si può anche diff2 l'elenco delle modifiche su un ramo diverso.

Problemi correlati