2012-03-09 27 views
7

¿Alguien tiene una secuencia de comandos para compartir?Perforce pendiente diff secuencia de comandos diff

  • toma un número de lista de cambios a la espera como entrada
  • da salida a un diff unificado (incluyendo los archivos abiertos para ADD)

Sé por experiencia que muchas personas que trabajan con forzosamente todo el día tienen estas dando vueltas. Realmente podría usar la ayuda con todo el tema de "archivo (s) que no está en la vista del cliente" cuando difiere los archivos recién agregados a través de "p4 diff".

+0

Estaba buscando algo como esto: (http://confluence.atlassian.com/display/CRUCIBLE/Creating+a+Patch+Review#CreatingaPatchReview-PerforcePatchCreationViaTheCommandLine o esto: https://answers.atlassian.com/ questions/9522/automatic-patch-review-script-for-obligce – user675801

Respuesta

2

No he tenido el tiempo para encontrar una solución adecuada, así que utiliza este chiste:

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

Así es como funciona:

Desde -

. .. Las listas de cambios pendientes se indican como 'pendientes' y las diferencias de archivos no se muestran.

p4 describe $CHANGELIST 

por sí mismo no va a hacer, pero se puede utilizar como punto de partida. Consigue (entre otras cosas) una lista de los archivos que se cambiaron en su $CHANGELIST.

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

imprime la parte <depot-file> de sólo las líneas de la forma ... <depot-file>#<revision> <action>

xargs p4 diff -du 

Toma la lista de archivos de depósito y ejecutar p4 diff -du en él. La bandera -d pasa u (formato unificado) a su programa $P4DIFF (que debe ser diff).

+0

¿Funciona esto en Windows? Obtengo el comando "sed" no reconocido.¿Cómo puedo obtener un archivo diff (eliminación y adición, ambos incluidos) en un formato coloreado que puedo enviar por correo electrónico a un compañero para su revisión? – noobcode

+0

'sed',' xargs' y 'diff' están típicamente presentes en un sistema tipo Unix. En Windows, puede instalar utilidades similares a Unix de terceros o intentar usar PowerShell. Ver: http://stackoverflow.com/q/127318/110488 –

-1

¿p4 describe -du changelist no funciona para usted?

+1

No, aquí está el porqué: El resultado del script sería un "diff" o "parche" (dependiendo de su terminología preferida). La prueba de fuego es "¿puede ser alimentado a la utilidad de parche de Unix para recrear completamente los cambios? "Tenga en cuenta que la descripción p4 no incluye el contenido de los archivos" abiertos para agregar ", por lo que el parche faltaría a todos los archivos recién agregados. – user675801

+0

Ah, veo - como una solución alternativa puede ejecutar 'p4 add' en el directorio completo e ignorar los archivos que ya existen. Una mejor solución (comando de estado) aparecerá en la siguiente versión. Una vez que sepa qué archivos se agregan, puede volcar su contenido en el p atch Por lo tanto, necesitaré un script, creo. –

+0

'p4 describe' no muestra ningún diff, incluso para archivos modificados, si la lista de cambios está pendiente. –

0

Esto funciona para mí:

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

El más específico sea el camino, más rápida será la ejecución. También puede diff2 la lista de cambios contra una rama diferente.