2012-07-23 31 views
5

के साथ हेडर लाइन मेलमिच मैं diff फ़ाइल (पैच फ़ाइल) उत्पन्न करने की कोशिश कर रहा हूं और इस पैच को पहले से ही तैनात फ़ोल्डर में लागू कर रहा हूं। मैं निम्न आदेश चला रहा हूँ diff फ़ाइल उत्पन्न करने के लिए:tfs एकीकृत diff फ़ाइल पीढ़ी। पैच कमांड

tf diff version.asp /format:unified > C:\patch.diff

यह उत्पन्न करता है कुछ की तरह:

Comparing local to latest: C:\dev\folder\version.asp File: version.asp ===================================================================

--- version.asp (स्थानीय) 2011-06-17 09 : 18पाठ, फ़ाइल नाम के बाद, नहीं यहाँ

+++ वी होना चाहिए ersion.asp; 958 (सर्वर) 2011-09-19 14:27यहाँ

@@ -13,7 +13,7 @@ 
'============================================================ 
Dim APP_VERSION, APP_BUILD, APP_DATE 
APP_VERSION = 6 
-APP_BUILD = 45 
+APP_BUILD = 52 
%> 
\ No newline at end of file 
============================================================ 

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

रेगेक्स लगाने और ऐसी लाइनों को बदलने जैसे विकल्प हैं लेकिन यह काम करने का आखिरी प्रयास होगा।

अंत मैं regex जो लाइनों से उन अनावश्यक जानकारी को हटा के साथ समाप्त हो गया पर आप

अद्यतन

धन्यवाद, यूनिक्स sed उपयोगिता के साथ इसे चलाने के लिए, मैं MinGW से Windows संस्करण मिला है।

sed "s/^\(+++\|---\)\(.*\)\(\.[A-Za-z0-9]\{1,4\}\)\(.*\)$/\1\2\3/" C:\patch.diff > C:\patch.new

patch.diffpatch.new दीवार से सिर की पिटाई के घंटे के बाद patch उपयोगिता

साथ सही एकीकृत diff फ़ाइल और संगत है UPDATE2

विकृत tfs से और उत्पादन पर उत्पन्न फ़ाइल है , मुझे पता चला कि tfs से उत्पन्न diff फ़ाइलों में यूनिकोड विस्तारित वर्ण आसानी से बच गए हैं या इसके बंद होने के साथ प्रतिस्थापित हैं टी ASCII प्रतिनिधित्व।

तो उदाहरण के लिए, यदि कोड ä अक्षर है, आउटपुट diff फ़ाइल में इसे एक साधारण a पत्र द्वारा प्रतिस्थापित किया जाएगा।

यह tfs उपयोगिता, बेकार से उत्पन्न diff फ़ाइलों को बनाता है।

यह एक बग स्पष्ट रूप से है।

FYI करें : मैं VS2010 और टीम फाउंडेशन सर्वर 2010

+0

क्या आप दो diff -u' के साथ दो फ़ाइलों की तुलना कर सकते हैं और फिर diffs diff? –

+0

असल में मुझे आपका प्रश्न नहीं मिला, माफ करना – matsoor

+0

अंत में मैं रेगेक्स के साथ समाप्त हुआ जो लाइनों से उन अनावश्यक जानकारी को हटा देता है, इसे यूनिक्स कमांड 'sed' के साथ चलाता है, मुझे मिनीजीडब्ल्यू से विंडोज संस्करण मिला। 'sed" s/^ \ (+++ \ | --- \) \ (। * \) \ (\। [ए-ज़ा-जे 0-9] \ {1,4 \} \) \ (। * \) $/\ 1 \ 2 \ 3/"सी: \ patch.diff> सी: \ patch.new' यहां 'patch.diff' विकृत फ़ाइल है और ouput' patch.new' पर सही फ़ाइल है और इसके साथ संगत है 'पैच' उपयोगिता – matsoor

उत्तर

1

उपयोग कर रहा हूँ क्या यह लायक है के लिए, मैं इस बाहर या तो समझ नहीं सकता है। टीएफएस विकृत फाइलें/एकीकृत के साथ बनाता है।

(shelve change set) 
tfpt scorch 
git init 
git add . 
git commit -a -m "Original" 
git checkout -b "New" 
(checkout shelf in tfs) 
git add . 
git commit -a -m "Change" 
git format-patch master 

:/

1

tf diff /format:unified से उत्पादन diff -u से अलग है और patch के साथ असंगत है, तो यह एक बग आप को रिपोर्ट करनी चाहिए है

मैं स्थापित एक स्थानीय Git का उपयोग कर उसके चारों ओर काम किया माइक्रोसॉफ्ट

जैसा कि आप कहते हैं, कामकाज को थकाऊ ढंग से ढूंढना और प्रतिस्थापित करना है।