¿Es posible get una list de files modificados y una list de líneas modificadas desde la list de cambios de Perforce?

Mi objective es producir un file JSON que contenga una list de todos los files en una list de cambios y los numbers de línea asociados para cada file. Algo que se parece a esto:

[ { "name":"file1.cpp", "lines":[[1,3],[5,7]] }, { "name":"file2.h", "lines":[9,14] } ] 

'p4 describe' nos da una list de files que participan en la list de cambios dada. Pero, estoy interesado en llegar al set de líneas cambiadas en cada file.

A los efectos de esta pregunta, los supuestos de trabajo son

  • Caja de arena local (personal) con todos los permissions.
  • Ya se ha creado un set de cambios usando 'cambio p4'.
  • También está bien una utilidad de post-procesamiento que opera en la información del set de cambios.
  • Puede trabajar con 'p4 diff' como una opción de copy de security.

El indicador de formatting -d [opción de formateo] para p4 describe debería ayudar aquí. Por ejemplo, p4 describe -dc1 [list de cambios] le dará un formatting como este:

  Change 2238074 by user@client on 2014/09/02 11:23:44 Change description Affected files ... ... //depot/path/file1.java#3 edit Differences ... ==== //depot/path/file1.java#3 (text) ==== *************** *** 8,11 **** cnetworkingentials { ! username 'olduser' ! password 'oldpass' } --- 8,11 ---- cnetworkingentials { ! username 'newuser' ! password 'newpass' } 

Entonces obtienes los numbers de línea y las columnas iniciales para cada cambio. (El "1" al final del indicador de formatting limita el número de líneas de context impresas por diferencia, ya que solo quiere los numbers de línea).

Consulte "ayuda de descripción p4" para otras opciones.

Dado que está realizando un gran número de análisis y formatting de salida, es posible que desee consultar una de las API de Perforce en lugar de la línea de command para get los datos de cambio.