2009-12-29 23 views
14

Cuando uso "p4 diff", ignora los archivos que tengo abiertos para agregar. ¿Es posible generar un diff que incluya archivos agregados y archivos modificados?Perforce - ¿genera un diff incluyendo archivos agregados?

+0

¿Funcionaría 'p4 conciliar' para usted? http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_reconcile.html – P4Shimada

Respuesta

12

Considerando que el diff in Perforce compara los archivos del espacio de trabajo del cliente con las revisiones en el almacén, la respuesta abreviada es "no".
No hay historia registrada para comparar a la added file (no comprometida con el depósito antes de enviar un)

La respuesta más larga implicaría una secuencia de comandos para completar el diff con el contenido completo de los archivos añadidos. (algo así como en este SO question)

+0

Oh, bueno. Es una pena, gracias por la respuesta. – kdt

3

Esta es una característica que falta en el diff p4 que muchas herramientas que tratan con Perforce tienen que funcionar.

La herramienta de revisión de código Reviewboard viene con la herramienta post-review. Se usa para crear diffs para una revisión de código, pero solo hará un diff si lo desea.

Está en python, puedes sacar la sección de diferencias para tu propio uso.

0

Acabo de solucionar este problema y he incluido mis archivos agregados en una revisión precompilación de Fisheye.

Lo que hice fue copiar el encabezado del descriptor de hunk diff de los archivos editados. Esto incluye una línea que enumera las rutas locales y de depósito, bastante sencilla, y otra línea con la información de rango, formateada como se describe en here.

Así, añadí cada adjuntas contenidos de cada archivo para el diff, cada uno precedido por

==== //path/to/depot/file#1 - /path/to/workspace/file ==== 
@@ -1,1 +1,LEN @@ 

donde LEN es el número de líneas en el archivo añadido.

Esto funcionó para mí; Su experiencia puede ser diferente.

0

Acabo de hacer que esto funcione, desviando la respuesta de Aaron. En lugar de

==== //path/to/depot/file#1 - /path/to/workspace/file ====

Solía ​​

--- //path/to/file [TIMESTAMP GENERATED BY NORMAL DIFF] 
+++ //path/to/file [TIMESTAMP GENERATED BY NORMAL DIFF] 
    @@ -1,1 +1,LEN @@ 

A continuación, asegúrese de tener un + al comienzo de cada línea agregada.

1

de escribir este que me ayude en cygwin:

#!/bin/bash 

if [ $# -ne 1 ]; then 
     echo "usage: $0 <pathSpec>" 
     exit 1 
fi 

pathSpec=$1 

doIt() { 
     p4 opened "$pathSpec" | egrep "#.* - add" | while read f; do 
       # figure out the workspace path 
       depotPath=${f%#*} 
       clientFileLine=$(p4 fstat "$depotPath" | grep clientFile) 
       workspacePathWin=${clientFileLine#... clientFile } 

       # diff output 
       echo ==== $depotPath#1 - $workspacePathWin ==== 
       workspacePath=$(cygpath "$workspacePathWin") 
       lineCount=$(wc -l < "$workspacePath") 
       echo @@ -0,0 +1,$lineCount @@ 

       # the actual diff contents 
       sed -e 's/^/+/' "$workspacePath" 
       echo 
     done 
} 

doIt 
0

sólo imprimir p4 los archivos añadidos (lo sé, eso no es grande) - pero es sin duda un camino a seguir.

Cuestiones relacionadas