G .gitattributes` ফাইলের মধ্যে `পাঠ্য = স্বয়ং of এর উদ্দেশ্য কী?


উত্তর:


77

ডক্স থেকে :

.gitattributes(বা .git/info/attributes) ফাইলের প্রতিটি লাইন ফর্মের:

pattern attr1 attr2 ...

তাই এখানে, প্যাটার্ন হয় *যা সব ফাইল মানে, এবং অ্যাট্রিবিউট text=auto

কি করে text=auto? ডকুমেন্টেশন থেকে:

পাঠ্যটি যখন "অটো" তে সেট করা থাকে, তখন পথটি স্বয়ংক্রিয়ভাবে শেষের-লাইনটি স্বাভাবিকের জন্য চিহ্নিত করা হয়। যদি গিট সিদ্ধান্ত নেয় যে সামগ্রীটি পাঠ্য, তবে এর লাইন শেষটি চেকিনে এলএফকে স্বাভাবিক করা হয়।

এটি সক্ষম না হলে ডিফল্ট আচরণটি কী?

অসূচিত

যদি পাঠ্য বৈশিষ্ট্যটি অনির্ধারিত থাকে, ফাইলটি রূপান্তর করা উচিত কিনা তা নির্ধারণ করতে গিটটি কোর.আউটোক্রলফ কনফিগারেশন ভেরিয়েবল ব্যবহার করে।

কি করে core.autocrlf? ডক্স থেকে:

   core.autocrlf

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

আপনি যদি এটিকে কাদা হিসাবে পরিষ্কার মনে করেন তবে আপনি একা নন।

এখানে * text=autoআমার কথায় যা করা হয় তা : যখন কেউ কোনও ফাইলের প্রতিশ্রুতি দেয়, তখন গিট অনুমান করে যে সেই ফাইলটি কোনও পাঠ্য ফাইল কিনা তা এবং যদি তা হয় তবে এটি ফাইলের এমন একটি সংস্করণ প্রতিপন্ন করবে যেখানে সমস্ত সিআর + এলএফ বাইটগুলি এলএফ বাইট দ্বারা প্রতিস্থাপন করা হবে। এটি কার্যক্ষম গাছের মধ্যে ফাইলগুলির মতো দেখতে সরাসরি প্রভাবিত করে না, এমন অন্যান্য সেটিংস রয়েছে যা কোনও ফাইল পরীক্ষা করার সময় এলএফ বাইটকে সিআর + এলএফ বাইটে রূপান্তরিত করে।

প্রস্তাবনা:

আমি চাই না নির্বাণ সুপারিশ * text=autoমধ্যে .gitattributesফাইল। পরিবর্তে, আমি এই জাতীয় কিছু সুপারিশ করব:

*.txt text
*.html text
*.css text
*.js text

এটি স্পষ্টভাবে নির্দিষ্ট করে দেয় কোন ফাইলগুলি পাঠ্য ফাইল, যা সিআরএলএফকে অবজেক্ট ডাটাবেসে এলএফতে রূপান্তরিত করে (তবে প্রয়োজনীয় গাছের মধ্যে নয়)। আমাদের সাথে একটি রেপো ছিল * text=auto, এবং গিট কোনও চিত্র ফাইলের জন্য ভুল অনুমান করেছিল যে এটি একটি পাঠ্য ফাইল, এটি এটি দুর্নীতিগ্রস্থ করেছিল কারণ এটি সিআর + এলএফ বাইটকে বস্তুর ডাটাবেসে এলএফ বাইটের সাথে প্রতিস্থাপন করেছে। এটি ডিবাগ করা মজা ছিল না।

যদি আপনার অবশ্যই ব্যবহার * text=autoকরা হয় তবে এটিকে প্রথম লাইন হিসাবে রাখুন .gitattributes, যাতে পরবর্তী লাইনগুলি এটিকে ওভাররাইড করতে পারে। এটি একটি ক্রমবর্ধমান জনপ্রিয় অনুশীলন হয়ে উঠছে বলে মনে হচ্ছে।


2
সবাই কেন এলআরএফকে সাধারণ বলে তবে সিআরএলএফ নয়? এটা প্রমাণ করার জন্য কোন রেফ আছে?
ইউশাহ আলেয়্যুব

1
@ ইউসু আলেয়াউব আপনার অর্থ কি?
ফ্লিম

1
@ ইউশাআলাইউব যদি আপনার everyoneউল্লেখ করে তবে git-scmএটি সম্ভবত এটি একটি * নিক্স প্যাকেজ বিকাশ করছে এবং এইভাবে * নিক্স নিউলাইন চরিত্রটি ব্যবহার করা স্বাভাবিক
জাস্টিন মোহ

4
@ ইউশাআলেয়ুব এলএফকে "নরমাল" বি / সি হিসাবে বিবেচনা করা হয় এটি অনেকগুলি ডিভাইসে সাধারণ। git-scm* নিক্স থেকে আসা মত জনপ্রিয় দেব সরঞ্জাম । ম্যাকোস এলএফ ব্যবহার করে। কেবল উইন্ডোজ (কেবলমাত্র মূল-স্ট্রিম ওএস বিবেচনা করে) সিআরএলএফ ব্যবহার করছে। এটি ডিভাইসগুলিকে উইন্ডোজ * নিক্স সরঞ্জামগুলি ব্যবহার করে এবং ফাইল বিনিময় করার সময় প্রত্যেকের জন্য আরও শক্ত করে তোলে। কেন দেখুন সিআরএলএফ
রুই ড্যান্টন

2
@Flimm, আপনি মধ্যে পার্থক্য ব্যাখ্যা করতে পারেন *.txt text=autoএবং *.txt textদয়া করে? আমি ভেবেছিলাম উপরের উদাহরণে সমস্ত 4 টি লাইন হওয়া উচিত ছিল text=auto, কেবল textফাইল এক্সটেনশনের পরে নয় । উদাহরণস্বরূপ (".kicad_mod" এক্সটেনশান) কিক্যাড পাদদেশের ফাইলগুলি তাদের গিটটিট্রিবিউট ফাইলগুলিতে এই লাইনটি ব্যবহার করে স্বাভাবিক করা হয়: *.kicad_mod text=auto( কিক্যাড- pcb.org/libraries/klc/G1.7 )
গ্যাব্রিয়েল স্টেপলস

64

এটি লাইন সমাপ্তিগুলি স্বাভাবিক করা নিশ্চিত করে। সূত্র: কার্নেল.অর্গ

পাঠ্যটি যখন "অটো" তে সেট করা থাকে, তখন পথটি স্বয়ংক্রিয়ভাবে শেষের-লাইনটি স্বাভাবিকের জন্য চিহ্নিত করা হয়। যদি গিট স্থির করে দেয় যে সামগ্রীটি পাঠ্য, তবে এর লাইন শেষটি চেকিনে এলএফ-তে স্বাভাবিক করা হয়।

আপনি যদি এমন একটি সোর্স কোড ম্যানেজমেন্ট সিস্টেমের সাথে আন্তঃআকঙ্কিত করতে চান যা লাইনটি শেষের নরমালাইজেশনকে প্রযোজ্য করে, বা আপনি সহজেই আপনার সংগ্রহস্থলের সমস্ত পাঠ্য ফাইলগুলিকে সাধারণীকরণ করতে চান তবে পরিবর্তে সমস্ত ফাইলের জন্য পাঠ্য বৈশিষ্ট্যটি "অটো" তে সেট করা উচিত।

এটি নিশ্চিত করে যে গিটটি পাঠ্য হিসাবে বিবেচিত সমস্ত ফাইলের সংগ্রহস্থলটিতে স্বাভাবিককরণ (এলএফ) লাইন শেষ হবে।


12
সাধারণ রেখার সমাপ্তি বলতে কী বোঝ?
ফিজার খান 31'14

14
When a text file is normalized, its line endings are converted to LF in the repository.
ডেভ জিচ 31'14

11
জেনে রাখা গুরুত্বপূর্ণ, এটি আপনার মেশিনে স্থানীয় কোর.অটোক্রল্ফ সেটিংটি ওভাররাইট করে @ ড্যানিয়েল জম্পে
spankmaster79

1
ভীষণ ভাল লাগবে যদি গিটটি $% # টি না করে কেবল কোনও ফাইল সন্ধানের জন্য সংগ্রহস্থলটিতে পরীক্ষা করে থাকে। আমি "এসএলএম, পেরফোরস, এমএসবিল্ড, সোর্স ডিপো, টিএফএস, এসভিএম এর সাথে কাজ করেছি, এগুলির কোনওটিই আপনার ফাইলগুলিতে একটিও বাইট বদলাবে না This এটি একটি কুখ্যাত গিট হ্যাক আইএমও এবং এটি আমার প্রচুর ব্যথা করেছে
ভ্যানস ম্যাককর্কল

1
চেকআউটে যা ঘটে তা কেবল অর্ধেক গল্প - একটি প্রাপ্তির পরে কী ঘটে? চেকআউট করার সময়, LFউইন্ডোতেও লাইনের সমাপ্তি যেমন বলা যায় ঠিক হবে?
অ্যান্থনি

8

এই কনফিগারেশনটি কীভাবে লাইন শেষগুলি পরিচালনা করা হয় সে সম্পর্কে। সক্ষম করা থাকলে, সমস্ত লাইন শেষগুলি সংগ্রহস্থলের এলএফ-তে রূপান্তরিত হয়। আপনার কার্যনির্বাহী ডিরেক্টরিতে লাইনের সমাপ্তি কীভাবে রূপান্তরিত হয় তা মোকাবেলা করার জন্য অন্যান্য পতাকা রয়েছে। আমাদের এখানে ইস্যুটির সম্পূর্ণ তথ্য: https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

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