"হঙ্ক # 1 এফাইল্ড 1 এ (বিভিন্ন লাইন শেষ)" বার্তাটি কীভাবে ঠিক করবেন?


22

আমি কমান্ডটি দিয়ে একটি প্যাচ তৈরি করার চেষ্টা করছি

git diff sourcefile >/var/lib/laymab/overlay/category/ebuild/files/thepatch.patch

আমি যখন প্যাচটি প্রয়োগ করি তখন তা আমাকে দেয়

$ patch -v
GNU patch 2.7.5

$ /usr/bin/patch -p1 </var/lib/laymab/overlay/category/ebuild/files/thepatch.patch
patching file sourcefile
Hunk #1 FAILED at 1 (different line endings).
Hunk #2 FAILED at 23 (different line endings).
Hunk #3 FAILED at 47 (different line endings).
Hunk #4 FAILED at 65 (different line endings).
Hunk #5 FAILED at 361 (different line endings).
5 out of 5 hunks FAILED -- saving rejects to file sourcefile.rej

আমি এসসিআর ফাইল এবং প্যাচ ফাইল উভয়ের জন্য ডস 2 ইউনিক্স প্রয়োগ করার চেষ্টা করেছি, তবে বার্তাটি যায় নি ...

ইউপিডি: --ignore-হোয়াইটস্পেস খুব একটা সহায়তা করে না

PATCH COMMAND:  patch -p1 -g0 -E --no-backup-if-mismatch --ignore-whitespace --dry-run -f < '/var/lib/layman/dotnet/dev-dotnet/slntools/files/remove-wix-project-from-sln-file-v2.patch'

=====================================================
checking file Main/SLNTools.sln
Hunk #1 FAILED at 14 (different line endings).
Hunk #2 FAILED at 49 (different line endings).
Hunk #3 FAILED at 69 (different line endings).
Hunk #4 FAILED at 102 (different line endings).
4 out of 4 hunks FAILED

ইউপিডি: খুব ভাল নিবন্ধটি খুঁজে পেয়েছে: /programming//a/4425433/1709408


ব্যবহার করে দেখুন sed -i.bak -e 's/\r$//g' something। আমি মনে করি না যে ডস 2 ইউনিক্স আপনি চান যতটা আগ্রাসীভাবে মিশ্রিত প্রান্তের লাইনগুলি পরিচালনা করে।
আর্থার 2e5

একদম মন্দ; যদি আপনার প্যাচ সিএফ-এলএফ লাইন এন্ডিংয়ের সাথে থাকে তবে এটি ফাইলের মতো হয় তবে এটি প্রথমে আপনার প্যাচ থেকে সিআর কে খুলে ফেলবে, তারপরে একটি লাইনের শেষটি (যা এটি কেবল ভেঙে গেছে) মেলে না throw
এসএফ

উত্তর:


5

patchউইন্ডোজটিতে এমএসওয়াইএস 2 নিয়ে আসা কমান্ডটি ব্যবহার করে আমার একই সমস্যা হয়েছিল। আমার ক্ষেত্রে উত্স ফাইল এবং প্যাচ উভয়েরই সিআরএলএফ লাইন-এন্ডিং ছিল, এবং উভয়কে এলএফ-তে রূপান্তর করা কোনও কাজ করেনি। যা কাজ করেছিল তা নিম্নলিখিত:

$ dos2unix patch-file.patch
$ patch -p1 < patch-file.patch
$ unix2dos modified-files...

patch সমস্ত প্যাচ করা ফাইলগুলিতে লাইন-এন্ডিংগুলিকে এলএফ-তে রূপান্তর করা হবে, সুতরাং সেগুলি আবার সিআরএলএফ এ রূপান্তর করা প্রয়োজন।

ওবস: patchআমি যে সংস্করণটি ব্যবহার করছি তা হ'ল ২.7.৫


5

আপনি -lবিকল্পটি ব্যবহার করে সাধারণত এটি ঘিরে কাজ করতে পারেন :

-l বা --ignore-সাদা স্থান বিকল্পটি ব্যবহার করুন, যা প্যাচটি ফাঁকা অক্ষরগুলির তুলনা করে (যেমন স্পেস এবং ট্যাবগুলি) আলগাভাবে করে যাতে প্যাচ ফাইলে ফাঁকা থাকা কোনও বিকাশ অনুক্রমটি ইনপুট ফাইলের ফাঁকাগুলির কোনও অযৌক্তিক ক্রমের সাথে মেলে

এটি একটি স্ট্যান্ডার্ড বৈশিষ্ট্য ( পসিক্স প্যাচের বিবরণ দেখুন)।

তবে ওপি বিভিন্ন অপারেটিং সিস্টেমের মধ্যে কীভাবে লাইন এন্ডিং রূপান্তরগুলি গিট কোর.আউটোক্রল্ফের সাথে কাজ করে সে সম্পর্কে মন্তব্য করতে প্রশ্নের সংশোধন করেছে এবং উইন্ডোজে ফাইলগুলি (ইউনিক্স-শৈলীর উদাহরণের বিপরীতে) সমস্যাটি দেখা যাচ্ছে বলে ইঙ্গিত করে একটি উদাহরণ যুক্ত করেছে। patchসিআরএলএফ এবং এলএফ লাইন-এন্ডিংয়ের মধ্যে অমিলগুলি সমন্বিত করার চেষ্টা করার সময় , এটির পরে ব্যবহার করা হয়েছে বলে ধরে নেওয়ার পক্ষপাত রয়েছে। প্যাচ ফাইলে যদি সিআরএলএফ এর শেষ থাকে, তবে প্যাচ করার মতো ফাইলগুলি না করা থাকে, তবে এটি উদাহরণ লগের মতো পুনরুদ্ধার করবে:

(Stripping trailing CRs from patch.)
patching file xterm.log.html
(Stripping trailing CRs from patch.)
patching file xterm.man
(Stripping trailing CRs from patch.)
patching file xtermcfg.hin

উত্স কোডটি পরীক্ষা করা হচ্ছে, similarফাংশনে, জিএনইউ patchহোয়াইটস্পেসের মতো আচরণ করে spaceএবং Tabকিছু বিশেষ হ্যান্ডলিং দিয়ে রেখাগুলির পিছনে এলএফ রয়েছে কিনা তা অনুসারে। সিআর উল্লেখ করা হয়নি। এটি এতে মনোযোগ দেয় না check_line_endings, তবে কেবলমাত্র প্রত্যাখ্যানের সনাক্তকরণে সহায়তা করার জন্য এই তথ্যটি কোনও বার্তার অংশ হিসাবে ব্যবহার করে। অপশনটি না --binaryদেওয়া হলে এটি পেজ_লাইনে অনুগামী সিআরএসগুলি সরিয়ে দেয়

যাদের লাইন-এন্ডিংস সিআরএলএফ হয় সেগুলিতে প্রয়োগ করার জন্য জিএনইউ প্যাচের কাছে এলএফ এন্ডিংয়ের সাথে একটি প্যাচকে সিআরএলএফে রূপান্তর করতে বলার বিকল্প নেই। এই ক্ষেত্রে এটি নির্ভরযোগ্যভাবে ব্যবহার করতে, পছন্দগুলি

  • সমস্ত ফাইলকে এলএফ এন্ডিং ব্যবহার করতে রূপান্তর করুন বা
  • সমস্ত ফাইলকে সিআরএলএফ এন্ডিংগুলি ব্যবহার করতে রূপান্তর করুন এবং --binaryবিকল্পটি যুক্ত করুন।

5
--ignore-হোয়াইটস্পেস (কোনও দ্বিতীয় ড্যাশ) খুব বেশি সহায়তা করে না, আমি প্রশ্ন আপডেট করেছি
user1709408

0

সাইগউইনের ক্ষেত্রেও আমার একই সমস্যা ছিল। আমার ক্ষেত্রে স্থির ছিল -iস্টাডিনের কাছ থেকে পড়ার পরিবর্তে পতাকা ব্যবহার করা ।

নিম্নলিখিত বিভিন্ন লাইন শেষ ত্রুটি দিয়ে ব্যর্থ হয়েছে :

patch -t -N -r - -p0 < patchfile

তবে নিম্নলিখিতগুলি সফল হয়েছে:

patch -t -N -r - -p0 -i patchfile

আমি কারণ সম্পর্কে অনিশ্চিত, তবে কারও যদি একই সমস্যা হয় তবে এটি এখানে রেখে চলেছি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.