मैं फ़ाइल में नई पंक्तियाँ लिखने के लिए diff और पैच का उपयोग करने में सक्षम होना चाहूंगा। स्पष्ट करने के लिए कि मेरा क्या मतलब है:
मूल फ़ाइल: test1.repo
को बाहर = मोंगो *
को बाहर = SQLite *
को बाहर = PostgreSQL *
नई फ़ाइल: test2.repo
को बाहर = मोंगो *
को बाहर = PostgreSQL *
को बाहर = mysql *
इसलिए मैं diff -u test1.repo test2.repo > repo.patch
अंतर को खोजने के लिए कमांड चलाता हूं , सरल पर्याप्त। repo.patch
मैंने अभी-अभी जो फ़ाइल बनाई है, उसे देखते हुए मैं आउटपुट देखता हूँ:
को बाहर = मोंगो *
-exclude = SQLite *
को बाहर = PostgreSQL *
+ को बाहर = mysql *
यदि मैं पैच का उपयोग करता हूं, हालांकि, यह उस पर लिखेगा जो प्रभावी रूप से मेरे पास केवल डेटा है test2.repo
। क्या केवल नई लाइनें लिखने के लिए पैच प्राप्त करने का एक तरीका है ( कुछ भी + से शुरू होता है )? मैं मूल रिपॉजिटरी में लाइनें जोड़ना चाहूंगा, लेकिन किसी भी कस्टमाइज़ेशन को नष्ट नहीं करूंगा जो उन्होंने पहले ही अपनी फ़ाइल में कर दिया है।
--
किसी कारण से शुरू होते हैं । व्यक्तिगत रूप से मैं सिर्फ संघर्ष को सुलझाने के लिए पैच को मैन्युअल रूप से संपादित करता हूं।
cat <(head -n 1 repo.patch) <(grep -ve '^-' repo.patch) | patch
@frostschutz द्वारा बताई गई समस्या का समाधान करने के लिए उपयोग कर सकते हैं । लेकिन इन संशोधित पैच फ़ाइलों के साथ मुझे त्रुटि मिलती है patch: **** malformed patch at line 9:
(यानी ईओएफ), क्योंकि आपको @@ -1,4 +1,6 @@
लाइनों को संशोधित करने की भी आवश्यकता है ?!
sort -u test1.repo test2.repo
भी काम कर सकता है।
sed 's/^-\([^-]\{2\}\)/ \1/'
?