ফাইল patch
তৈরি .orig
ও না করার কথা বলা কি সম্ভব .rej
? আমি এটি অত্যন্ত বিরক্তিকর মনে করি যে প্যাচগুলি এগুলি তৈরি করে।
ফাইল patch
তৈরি .orig
ও না করার কথা বলা কি সম্ভব .rej
? আমি এটি অত্যন্ত বিরক্তিকর মনে করি যে প্যাচগুলি এগুলি তৈরি করে।
উত্তর:
যদি আপনি patch
ব্যতীত অন্য কোনও বিকল্প না দিয়ে থাকেন তবে কোনও -pN
প্যাচ পরিষ্কারভাবে প্রয়োগ করতে ব্যর্থ হলে এটি কেবল সেই ফাইলগুলি তৈরি করে।
সুতরাং, একটি বিকল্প হ'ল খারাপ প্যাচগুলি তৈরি করা (বা স্বীকার করা) বন্ধ করা। :)
বাস্তব বিশ্বের ফিরে, এটি একটি বৈশিষ্ট্য। যখন patch(1)
মূল ফাইলের একটি প্যাচ সেগমেন্ট আবেদন করতে ব্যর্থ হলে, এটি সংরক্ষণ করে অস্থায়ী মূল ফাইল durably আউট অনুলিপি হিসেবে *.orig
, এর প্রত্যাখ্যাত সেগমেন্ট ডাম্প *.rej
এবং প্যাচ অংশ প্রয়োগ করার চেষ্টা চলতে থাকে। ধারণাটি হ'ল আপনি *.rej
ফাইলটি খুলতে এবং প্যাচ করা ফাইলটিতে বিট এবং টুকরো অনুলিপি করে প্যাচ প্রক্রিয়াটি ম্যানুয়ালি সম্পূর্ণ করতে পারেন । *.orig
ফাইল এছাড়াও দরকারী যখন প্যাচ প্রক্রিয়া ঘটনাক্রমে কিছু wrecks হতে পারে, এবং আপনি আসল সংস্করণে উল্লেখ করতে এটা ঠিক করতে হবে।
আমি সবসময় ফাইল *.rej
এবং *.orig
ফাইলগুলির পাঠ্য সহ কোনও খারাপ প্যাচ ফিক্স করি না , তবে আমার যদি প্রয়োজন হয় তবে এগুলি রাখা ভাল।
একবার আমি খারাপ প্যাচ স্থির করে নেওয়ার পরে, জিনিসগুলি দ্রুত পরিষ্কার করার জন্য আমি প্রকল্পের মূলের নীচে স্ক্রিপ্টটি চালাচ্ছি:
#!/bin/bash
find . '(' \
-name \*-baseline -o \
-name \*-merge -o \
-name \*-original -o \
-name \*.orig -o \
-name \*.rej \
')' -delete
আমি এটিকে ডাকছি cleanup-after-bad-patch
কারণ দীর্ঘ নামটি ঘটনাক্রমে এটি চালনার বিরুদ্ধে আংশিকভাবে বীমা করে, যেহেতু এটি আপনার এখনও প্রয়োজনীয় ফাইলগুলি সরিয়ে ফেলতে পারে। সত্য কথা বলতে clean
TabEnterগেলে , আমি সাধারণত এটি টাইপ করে চালিত করি , এটি PATH
আমার বিকাশের মেশিনে এই স্ক্রিপ্টটি সন্ধান করার পক্ষে যথেষ্ট ।
এটি যে অতিরিক্ত নিদর্শনগুলির জন্য পরীক্ষা করে তা হ'ল সংযোজন অপারেশনের সময় একই সমস্যাটির মুখোমুখি হওয়ার পরে আমার পছন্দনীয় সংস্করণ নিয়ন্ত্রণ সিস্টেমের ফাইলগুলি আউটপুট দেয় । আপনি এটি আপনার ভিসিএস / এসসিএম সরঞ্জামগুলির জন্য সামঞ্জস্য করতে চাইতে পারেন ।
প্যাচটিকে ব্যাকআপগুলি না তৈরি করতে বলার জন্য কেবল -b
এবং কোনও --backup-...
বিকল্প বাদ দিন ।
.rej
ফাইল তৈরি না করার নির্দেশ -r -
দেওয়ার জন্য কমান্ডের সাথে বিকল্প যুক্ত করুন ।
GNU patch 2.6
ম্যাকের উপর ঠিক কাজ করা সম্ভবত চেষ্টা করুন-r /dev/null
--no-backup-if-mismatch
বিকল্প ".orig" ফাইল এড়াতে হবে।
আপনি --merge
বিকল্পটিও দেখতে চাইতে পারেন , যা একটি ইন-ফাইল দ্বন্দ্ব তৈরি করে।
সমস্ত ক্ষেত্রে যদি আপনার একত্রীকরণ অতিমাত্রায় পরিণত হয় তবে দ্রুত একটি ভাল অবস্থায় ফিরে আসার কিছু উপায় আপনার উচিত।
আমি প্যাচ v2.5.4 এর সাথে আটকে আছি যেখানে -r -
এটি নামক ফাইলগুলি প্রত্যাখ্যান করে -
।
আমি দেখতে পেয়েছি যে, --reject-file=
খালি মানের ফলে প্রস্থান কোডের সাথে প্যাচটি ব্যর্থ হয়ে যায় 2
যদি এটি একটি অস্বীকৃত ফাইল লেখার চেষ্টা করে। যদি কোনও প্রত্যাখ্যান না হয় তবে এটি প্রত্যাশার মতো কাজ করে। প্যাচের পুরানো সংস্করণের সম্পূর্ণ সমাধান না হলেও কিছু পরিস্থিতিতে এটি গ্রহণযোগ্য বা পছন্দসই হতে পারে।
আমি যে সেরাটি সামনে আসতে পেরেছি (স্বীকারোক্তিটি রাগের নীচে ময়লা ঝুলানোর কোনও উপায়) ব্যবহার করছে -r <tmpfile>
, অর্থাত:
# patch -r /tmp/deleteme.rej -i patchfile filetobepatched
v2.5.8 এ, -r -
আসলে -
ফাইলটি তৈরি করে creates
প্যাচ -p1-বি / দেব / নাল-আর - <ফাইল.প্যাচ
-B
পতাকাটি *.orig
আউটপুটটি প্রেরণ করে না /dev/null
, যেমনটি এটি আপনার কমান্ড থেকে প্রদর্শিত হবে। এটি ঠিক ঘটে যে সাধারণ ব্যবহারকারীরা পছন্দ মতো ফাইলগুলিতে লিখতে পারেন না /dev/nullfoo.cpp
। আপনি যদি এটি রুট হিসাবে করেন তবে /dev
পরিবর্তে আপনি আপনার গাছে জাঙ্ক পাবেন । দ্বিতীয়ত, ফাইলটি -r -
দমন করে না *.rej
। এটি কেবল এটি করতে দেখা যায় কারণ বোগাস -B
পতাকার কারণে ত্রুটিটি এটি আপনাকে প্রদর্শন করা থেকে বিরত রাখে যা বর্তমান ডিরেক্টরিতে ডাকা একটি ফাইল তৈরি করে যা এটি ছাড়া আসলে কী করবে । -B
-
man patch
: "-আর ডিফল্ট .rej ফাইলের পরিবর্তে প্রত্যাখ্যানযোগ্য ফাইলগুলিতে প্রত্যাখ্যান করুন reject যখন প্রত্যাখ্যানযোগ্য ফাইলটি হয় - প্রত্যাখ্যানগুলি বাতিল করুন" "