2009-12-29 14 views
14

जब मैं "पी 4 diff" का उपयोग करता हूं, तो यह उन फ़ाइलों को अनदेखा करता है जिन्हें मैंने जोड़ने के लिए खोल दिया है। क्या एक diff उत्पन्न करना संभव है जिसमें अतिरिक्त फ़ाइलें और साथ ही बदली गई फ़ाइलें भी शामिल हों?प्रभाव - अतिरिक्त फ़ाइलों सहित एक diff उत्पन्न?

+0

क्या आपके लिए 'p4 reconcile' काम करेगा? http://www.perforce.com/perforce/doc.current/manuals/cmdref/p4_reconcile.html – P4Shimada

उत्तर

12

diff in Perforce को ध्यान में रखते हुए ग्राहक कार्यक्षेत्र में फ़ाइलों की तुलना डिपो में संशोधन के लिए करें, संक्षिप्त उत्तर "नहीं" है।
added file (एक प्रस्तुत करने से पहले डिपो के लिए नहीं प्रतिबद्ध)

लंबा उत्तर जोड़ा फ़ाइलों की पूरी सामग्री के साथ diff पूरा करने के लिए एक स्क्रिप्ट शामिल होगा के लिए की तुलना करने के लिए कोई लिखित इतिहास नहीं है। (इस तरह की तरह SO question)

+0

ओह ठीक है। यह शर्म की बात है, जवाब के लिए धन्यवाद। – kdt

3

यह पी 4 diff की एक ज्ञात अनुपलब्ध विशेषता है कि पर्सफोर्स से निपटने वाले कई टूल को काम करना पड़ता है।

कोड समीक्षा उपकरण Reviewboard उपकरण post-review के साथ आता है। इसका उपयोग कोडरेव्यू के लिए diffs बनाने के लिए किया जाता है, लेकिन यदि आप चाहें तो यह केवल एक अंतर होगा।

यह अजगर में है, आप अपने स्वयं के उपयोग के लिए diff सेक्शन निकाल सकते हैं।

0

मैंने अभी इस मुद्दे के आसपास काम किया है और मेरी अतिरिक्त फाइलें फिशिए प्री-प्रतिबद्ध समीक्षा में शामिल की गई हैं।

मैंने जो किया वह संपादित फ़ाइलों 'diff hunk descriptor header की प्रतिलिपि थी। इसमें एक पंक्ति शामिल है जो डिपो और स्थानीय पथों को सूचीबद्ध करती है - बहुत सीधी - और श्रेणी की जानकारी के साथ एक और पंक्ति, वर्णित here के रूप में स्वरूपित।

तो, मैं प्रत्येक संलग्न diff करने के लिए प्रत्येक फ़ाइल की सामग्री जोड़ा, प्रत्येक द्वारा

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

जहां LEN जोड़ा फ़ाइल में लाइनों की संख्या है पहले।

यह मेरे लिए काम किया; आपकी माइलेज भिन्न हो सकती है।

0

मुझे यह काम करने के लिए मिला, हारून के जवाब को बंद कर दिया।

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

के बजाय मैं

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

इस्तेमाल किया फिर प्रत्येक जोड़ा पंक्ति के आरंभ में एक + है सुनिश्चित करें।

1

मैं इस 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

बस p4 जोड़ा फ़ाइलों को मुद्रित (मुझे पता है, कि महान नहीं है) - लेकिन इसकी निश्चित रूप से एक तरह से जाने के लिए।

संबंधित मुद्दे