versiones versionamiento vcs trabajos son ramas qué que los indican herramientas grados gestión fuente estrategia estabilidad diversos control contenido codigo perforce

perforce - versionamiento - Cómo enumerar todos los archivos cambiados por una lista de cambios forzosos



son ramas que indican diversos grados de estabilidad del contenido (5)

Tengo una lista de cambios específica, y desde la línea de comandos quiero enumerar todos los archivos que formaban parte de esa lista de cambios. ¿Cómo hago esto?


Ese es el comando describe . Para describir una lista de cambios particular, desea que p4 describe <changelist number> .

Actualizar:

Si solo desea los nombres de archivo, puede usar el comando de files con la opción -F para anular el formato de salida: p4 -Ztag -F "%depotFile%" files @=<changelist>

Consulte http://www.perforce.com/blog/130826/fun-formatting para obtener más información sobre la opción -F.


La respuesta de Mike O''Connor también me ayudó.

En cuanto a solo obtener una lista de archivos modificados, ¿no podría ser tan fácil como esto?

p4 describe -s {change number} | grep ''^/././.'' | awk ''{print $2}''

eso es lo que voy a usar.


Si su lista de cambios aún está pendiente, puede ejecutar p4 opened o p4 opened -c <changeListNumber> para un número de lista de p4 opened -c <changeListNumber> específico (no enviado).

De la documentación oficial : "Lista de archivos que están abiertos en listas de cambios pendientes".


cambio p4 -o

Tiene la lista de archivos al final.


user114245 dio la mejor respuesta, pero solo en un comentario. Estoy agregando como respuesta para darle más visibilidad y mejorar un poco.

Para el cambio 12345, esto es lo más cercano que puede obtener con solo un comando p4

p4 files @=12345

lo que da sólo esta salida

//depot/file1#3 - delete change 3 (text) //depot/file2#3 - edit change 3 (text) //depot/file5#1 - add change 3 (text)

Si desea eliminar la información extraña de cada archivo, deberá procesar esa salida a través de más herramientas en la línea de comandos. Asumiendo un entorno estándar de Unixy, puede usar un solo comando sed como así

p4 files @=12345 | sed s/#.*//

para obtener el resultado deseado

//depot/file1 //depot/file2 //depot/file5

La respuesta actualmente aceptada por Mike es la siguiente.

p4 describe 12345

Lo que da todo este detalle extra en la salida.

Change 12345 by day@client1 on 2013/06/21 00:25:28 Some example changes Affected files ... ... //depot/file1#3 delete ... //depot/file2#3 edit ... //depot/file5#1 add Differences ... ==== //depot/file2#3 (text) ==== 1c1 < This is file 2 --- > This is file 2 - edited

Eso se mejoró con la respuesta de Doug, que usa grep y awk para filtrar el ruido y simplemente dejar los archivos cambiados, pero el comando es bastante largo.

p4 describe -s 12345 | grep ''^/././.'' | awk ''{print $2}''

Creo que la solución dada aquí es más limpia.