2009-12-29 10 views

Antwort

12

In Anbetracht der diff in Perforce vergleichen Sie die Dateien im Client-Arbeitsbereich zu Revisionen im Depot, ist die kurze Antwort "Nein".
Es gibt keine aufgezeichnete Geschichte zum added file zu vergleichen (nicht in das Depot begangen, bevor eine abschicken)

Die längere Antwort ein Skript beinhalten würde die diff mit dem vollständigen Inhalt der hinzugefügten Dateien zu vervollständigen. (Art von wie in diesem SO question)

+0

Oh gut. Das ist eine Schande, danke für die Antwort. – kdt

3

Dies ist eine bekannte fehlende Funktion von P4 diff, dass viele Tools mit Perforce umgehen müssen.

Das Code-Review-Tool Reviewboard wird mit dem Tool post-review geliefert. Es wird verwendet, um Diffs für eine Codereview zu erstellen, aber es wird nur ein Diff machen, wenn Sie möchten.

Es ist in Python, könnten Sie die Diff-Abschnitt für Ihren eigenen Gebrauch ziehen.

0

Ich habe gerade an diesem Problem gearbeitet und meine hinzugefügten Dateien in eine Fisheye Pre-Commit Review aufgenommen.

Was ich getan habe, war kopiert die diff-Desk-Deskriptor-Header der bearbeiteten Dateien. Dies beinhaltet eine Zeile, die das Depot und lokale Pfade auflistet - ziemlich einfach - und eine weitere Zeile mit den Bereichsinformationen, formatiert wie beschrieben here.

Also, habe ich jeweils beigefügten jeder Inhalt in die diff der Datei voran jeweils von

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

wo LEN die Anzahl der Zeilen in der hinzugefügten Datei.

Das funktionierte für mich; Ihre Laufleistung kann variieren.

0

Ich habe gerade das zur Arbeit, Abzweigung von Aarons Antwort. Statt

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

benutzte ich

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

Dann ein + am Anfang jeder Zeile hinzugefügt haben, stellen Sie sicher.

1

Ich schrieb mich das auf Cygwin helfen:

#!/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

p4 einfach die hinzugefügten Dateien drucken (ich weiß, das ist nicht gut) - aber es ist auf jeden Fall einen Weg zu gehen.

Verwandte Themen