2011-04-21 9 views
8

Dado un número de lista de cambios Perforce, quiero encontrar la ruta local de todos los archivos en esa lista de cambios pendiente.En Perforce, ¿cómo puedo encontrar la ruta local para los archivos en una lista de cambios pendiente?

  • p4 describen lista de cambios - me pone la trayectoria de depósito para los archivos de la lista de cambios (método 1)
  • p4 abrieron lista de cambios -c - me hace el camino para el depósito de los archivos de la lista de cambios (método 2)
  • p4 tienen - me hace el camino de depósito y la ruta local para todos los archivos que han sido previamente presentadas

el uso de un Combina ción de p4 describir y p4 tienen, puedo encontrar los caminos locales para todos los archivos de la lista de cambios que han sido previamente sometidos a Perforce (y se abren para eliminar o edición).

Pero, ¿qué pasa con los archivos que están abiertos para agregar? p4 tienen no sabe nada sobre los archivos que están abiertos para agregar.

Dada una lista de cambios Perforce pendiente, ¿cómo puedo encontrar la ruta local para los archivos que están a punto de agregarse a Perforce?

Respuesta

9

A la salida de la ruta local de toda la espera añade de una lista de cambios que puede utilizar:

p4 opened -c changelist | grep -w add | sed 's/#.*//' \ 
| p4 -x - where | awk '/^\// {print $3}' 

Esto hace lo mismo sin grep pero es un poco más oscura:

p4 opened -c changelist | sed -n 's/\(.*\)#.*- add .*/\1/p' \ 
| p4 -x - where | awk '/^\// {print $3}' 
+0

Gracias por la solución. Hay una cosa que notar con "p4 donde": si un archivo se mapea varias veces en la especificación del cliente, entonces "p4 donde" devolverá incorrectamente la primera asignación, en lugar de la última asignación, que es donde realmente terminó el archivo. – engtech

+0

Eso suena como un error, 'p4 where' se supone que sigue la vista del cliente. Si tiene soporte, presente un error forzosamente. –

+1

¿El problema tiene que ver con '{print $ 3}'? – tenpn

1

Sobre la base de Peter La respuesta de G, traducida a powershell 2.0:

p4 opened -c changelist 
    | Where-Object{$_ -match "add"} 
    | ForEach-Object{p4 where ($_.split('#')[0])} 
    | ForEach-Object{$_.split()[2]} 
6

Por supuesto, también puedes usar

p4 -ztag opened -c changelist 

Esto informará tanto el archivo de depósito como el archivo de cliente para cada archivo abierto. para mostrar sólo los archivos del cliente:

p4 -ztag opened -c changelist | grep clientFile | awk '{print $3}' 

Sustitución // cliente/a raíz del cliente se deja como ejercicio para el lector.

+0

Recuerde que awk tiene capacidad de grep, por lo que puede acortarlo a: 'p4 -ztag abierto -c lista de cambios | awk '/ clientFile/{print $ 3}' ' – jorgbrown

1
p4 opened -s -c <changelist#> | awk -F " " '{print $1}' | p4 -x - where | awk -F " " '{print $3}' 
1

ruta local para todos los archivos en una lista de cambios pendientes sin necesidad de herramientas externas o específicas de la plataforma:

p4 -F %clientFile% fstat -Ro -F action=add [-e CHANGE] //... 

Retire la 'acción -F = Añadir' si desea obtener los archivos abiertos para todos comportamiento.

Cuestiones relacionadas