केवल पैच का उपयोग करके लाइनें कैसे जोड़ें?


1

मैं फ़ाइल में नई पंक्तियाँ लिखने के लिए 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। क्या केवल नई लाइनें लिखने के लिए पैच प्राप्त करने का एक तरीका है ( कुछ भी + से शुरू होता है )? मैं मूल रिपॉजिटरी में लाइनें जोड़ना चाहूंगा, लेकिन किसी भी कस्टमाइज़ेशन को नष्ट नहीं करूंगा जो उन्होंने पहले ही अपनी फ़ाइल में कर दिया है।


1
पैच पर इन हटाने वाली लाइनों को बदलने के बारे में क्या चल रहा है जैसे कि इस पर पाल स्क्रिप्ट sed 's/^-\([^-]\{2\}\)/ \1/'?
जाप एल्डरिंग

2
इस उदाहरण के लिए काम कर सकते हैं, लेकिन उन लाइनों के लिए असफल होंगे जो वास्तव में --किसी कारण से शुरू होते हैं । व्यक्तिगत रूप से मैं सिर्फ संघर्ष को सुलझाने के लिए पैच को मैन्युअल रूप से संपादित करता हूं।
फ्रॉस्ट्सचुट्ज़

1
आप cat <(head -n 1 repo.patch) <(grep -ve '^-' repo.patch) | patch@frostschutz द्वारा बताई गई समस्या का समाधान करने के लिए उपयोग कर सकते हैं । लेकिन इन संशोधित पैच फ़ाइलों के साथ मुझे त्रुटि मिलती है patch: **** malformed patch at line 9:(यानी ईओएफ), क्योंकि आपको @@ -1,4 +1,6 @@लाइनों को संशोधित करने की भी आवश्यकता है ?!
मपी

आप सीधे @mpy हैं, सीधे पैच फ़ाइल को इस तरह से संशोधित करके मुझे स्थान संदर्भ पंक्ति को भी अपडेट करना होगा। हाथ से करना आसान है, लेकिन मुझे पूरी प्रक्रिया को स्वचालित करने की आवश्यकता है, इसलिए मूल प्रश्न।
मोनो

1
दिए गए इनपुट के लिए sort -u test1.repo test2.repoभी काम कर सकता है।
ठंढकुट्ज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.