* .রিগ এবং * .রেজ ফাইলগুলি তৈরি না করেই "প্যাচ" চালাচ্ছেন


20

ফাইল patchতৈরি .origও না করার কথা বলা কি সম্ভব .rej? আমি এটি অত্যন্ত বিরক্তিকর মনে করি যে প্যাচগুলি এগুলি তৈরি করে।

উত্তর:


14

যদি আপনি 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কারণ দীর্ঘ নামটি ঘটনাক্রমে এটি চালনার বিরুদ্ধে আংশিকভাবে বীমা করে, যেহেতু এটি আপনার এখনও প্রয়োজনীয় ফাইলগুলি সরিয়ে ফেলতে পারে। সত্য কথা বলতে cleanTabEnterগেলে , আমি সাধারণত এটি টাইপ করে চালিত করি , এটি PATHআমার বিকাশের মেশিনে এই স্ক্রিপ্টটি সন্ধান করার পক্ষে যথেষ্ট ।

এটি যে অতিরিক্ত নিদর্শনগুলির জন্য পরীক্ষা করে তা হ'ল সংযোজন অপারেশনের সময় একই সমস্যাটির মুখোমুখি হওয়ার পরে আমার পছন্দনীয় সংস্করণ নিয়ন্ত্রণ সিস্টেমের ফাইলগুলি আউটপুট দেয় । আপনি এটি আপনার ভিসিএস / এসসিএম সরঞ্জামগুলির জন্য সামঞ্জস্য করতে চাইতে পারেন ।


7

প্যাচটিকে ব্যাকআপগুলি না তৈরি করতে বলার জন্য কেবল -bএবং কোনও --backup-...বিকল্প বাদ দিন ।

.rejফাইল তৈরি না করার নির্দেশ -r -দেওয়ার জন্য কমান্ডের সাথে বিকল্প যুক্ত করুন ।


4
এটি আমার পক্ষে কাজ করে না - এটি কেবল "-" নামক একটি ফাইলে প্রত্যাখ্যান করে, যা প্রায় খুব বিরক্তিকর ফাইল নাম is আমি একটি ম্যাকে 2.5.8 সংস্করণ ব্যবহার করছি।
rjmunro

GNU patch 2.6ম্যাকের উপর ঠিক কাজ করা সম্ভবত চেষ্টা করুন-r /dev/null
স্টুয়ার্ট কার্ডাল

3

--no-backup-if-mismatchবিকল্প ".orig" ফাইল এড়াতে হবে।

আপনি --mergeবিকল্পটিও দেখতে চাইতে পারেন , যা একটি ইন-ফাইল দ্বন্দ্ব তৈরি করে।

সমস্ত ক্ষেত্রে যদি আপনার একত্রীকরণ অতিমাত্রায় পরিণত হয় তবে দ্রুত একটি ভাল অবস্থায় ফিরে আসার কিছু উপায় আপনার উচিত।


1

আমি প্যাচ v2.5.4 এর সাথে আটকে আছি যেখানে -r -এটি নামক ফাইলগুলি প্রত্যাখ্যান করে -

আমি দেখতে পেয়েছি যে, --reject-file=খালি মানের ফলে প্রস্থান কোডের সাথে প্যাচটি ব্যর্থ হয়ে যায় 2 যদি এটি একটি অস্বীকৃত ফাইল লেখার চেষ্টা করে। যদি কোনও প্রত্যাখ্যান না হয় তবে এটি প্রত্যাশার মতো কাজ করে। প্যাচের পুরানো সংস্করণের সম্পূর্ণ সমাধান না হলেও কিছু পরিস্থিতিতে এটি গ্রহণযোগ্য বা পছন্দসই হতে পারে।


0

আমি যে সেরাটি সামনে আসতে পেরেছি (স্বীকারোক্তিটি রাগের নীচে ময়লা ঝুলানোর কোনও উপায়) ব্যবহার করছে -r <tmpfile>, অর্থাত:

# patch -r /tmp/deleteme.rej -i patchfile filetobepatched

v2.5.8 এ, -r -আসলে -ফাইলটি তৈরি করে creates


-3

প্যাচ -p1-বি / দেব / নাল-আর - <ফাইল.প্যাচ


-1: এটি খুব খারাপ পরামর্শ। প্রথমত, -Bপতাকাটি *.origআউটপুটটি প্রেরণ করে না /dev/null, যেমনটি এটি আপনার কমান্ড থেকে প্রদর্শিত হবে। এটি ঠিক ঘটে যে সাধারণ ব্যবহারকারীরা পছন্দ মতো ফাইলগুলিতে লিখতে পারেন না /dev/nullfoo.cpp। আপনি যদি এটি রুট হিসাবে করেন তবে /devপরিবর্তে আপনি আপনার গাছে জাঙ্ক পাবেন । দ্বিতীয়ত, ফাইলটি -r -দমন করে না *.rej। এটি কেবল এটি করতে দেখা যায় কারণ বোগাস -Bপতাকার কারণে ত্রুটিটি এটি আপনাকে প্রদর্শন করা থেকে বিরত রাখে যা বর্তমান ডিরেক্টরিতে ডাকা একটি ফাইল তৈরি করে যা এটি ছাড়া আসলে কী করবে । -B-
ওয়ারেন ইয়ং

1
@ ওয়ারেন ইয়ং অনুসারে man patch: "-আর ডিফল্ট .rej ফাইলের পরিবর্তে প্রত্যাখ্যানযোগ্য ফাইলগুলিতে প্রত্যাখ্যান করুন reject যখন প্রত্যাখ্যানযোগ্য ফাইলটি হয় - প্রত্যাখ্যানগুলি বাতিল করুন" "
লিম্বো পেং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.