2009-12-29 11 views
14

Quando uso "p4 diff", ignora i file che ho aperto per aggiungere. È possibile generare un diff che include file aggiunti e file modificati?Perforce - genera una diff compresi i file aggiunti?

+0

"P4 riconciliare" il lavoro per te? http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_reconcile.html – P4Shimada

risposta

12

Considerando lo diff in Perforce confrontare i file nell'area di lavoro del client con le revisioni nel depot, la risposta breve è "no".
Non c'è storia documentata da confrontare con la added file (non impegnati al deposito prima di un submit)

La risposta più comporterebbe uno script per completare la diff con il pieno contenuto dei file aggiunti. (un po 'come in questo SO question)

+0

Oh bene. È un peccato, grazie per la risposta. – kdt

3

Questa è una caratteristica mancante nota di p4 diff che molti strumenti che si occupano di Perforce devono risolvere.

Lo strumento di revisione del codice Reviewboard viene fornito con lo strumento post-review. È usato per creare diffs per una vista del codice, ma farà solo una diff se vuoi.

È in python, è possibile estrarre la sezione diff per il proprio uso.

0

Ho appena risolto questo problema e ho incluso i miei file aggiunti in una recensione pre-commit di Fisheye.

Quello che ho fatto è stato copiare l'intestazione del descr hk diff hunk dei file modificati. Ciò include una riga che elenca il depot e i percorsi locali - piuttosto semplice - e un'altra linea con le informazioni sull'intervallo, formattate come descritto here.

Così, ho aggiunto ogni allegati il ​​contenuto di ogni file per il diff, ciascuno preceduto da

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

dove LEN è il numero di righe nel file aggiunto.

Questo ha funzionato per me; Il tuo chilometraggio può variare.

0

Ho appena ottenuto che funzioni, ramificando la risposta di Aaron. Invece di

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

ho usato

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

quindi assicurarsi di avere un + all'inizio di ogni riga aggiunta.

1

Ho scritto questo per aiutare me su 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

Basta p4 stampare i file aggiunti (lo so, non è grande) - ma è senza dubbio un modo per andare.

Problemi correlati