জিআইটিতে ফাইল করার জন্য কীভাবে chmod অনুমতি যুক্ত করবেন?


182

আমি একটি .sh ফাইলের প্রতিশ্রুতিবদ্ধ করতে চাই, কিন্তু যখন আমি অন্য সার্ভারে সেই একই ফাইলটি চেকআউট করি তখন এটি কার্যকর হতে পারে।

সার্ভারগুলিতে যে ফাইলটি চেকআউট করা আছে সেটিতে ম্যানুয়ালি chmod u + x ছাড়া ফাইল করার কোনও উপায় আছে?

উত্তর:


291

অফিসিয়াল ডকুমেন্টেশন অনুসারে , আপনি update-indexসাব-কমান্ড ব্যবহার করে যে কোনও ট্র্যাক করা ফাইলটিতে "এক্সিকিউটেবল" পতাকা সেট বা সরিয়ে দিতে পারেন ।

পতাকাটি সেট করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

git update-index --chmod=+x path/to/file

এটি সরাতে, ব্যবহার করুন:

git update-index --chmod=-x path/to/file

ফণা অধীনে

এটি নিয়মিত ইউনিক্স ফাইল অনুমতি সিস্টেমের মতো দেখায়, বাস্তবে তা হয় না। গিট তার অভ্যন্তরীণ স্টোরেজে প্রতিটি ফাইলের জন্য একটি বিশেষ "মোড" বজায় রাখে:

  • 100644 নিয়মিত ফাইলের জন্য
  • 100755 কার্যকর করার জন্য

আপনি বিকল্প ls-fileসহ সাবকম্যান্ড ব্যবহার করে এটি দেখতে পারবেন --stage:

$ git ls-files --stage
100644 aee89ef43dc3b0ec6a7c6228f742377692b50484 0       .gitignore
100755 0ac339497485f7cc80d988561807906b2fd56172 0       my_executable_script.sh

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

git config core.fileMode false

সমস্যা সমাধান

যদি কোনও সময়ে গিট ফাইলমোড সেট না করা থাকে তবে ফাইলটিতে সঠিক ফাইল সিস্টেম পতাকা রয়েছে, মোডটি সরিয়ে আবার সেট করার চেষ্টা করুন:

git update-index --chmod=-x path/to/file
git update-index --chmod=+x path/to/file

বোনাস

গিট ২.৯ দিয়ে শুরু করে আপনি একটি ফাইল মঞ্চস্থ করতে পারেন এবং পতাকাটি একটি কমান্ডে সেট করতে পারেন:

git add --chmod=+x path/to/file

যখন আমি টেস্ট.শ, গিট কমিট এবং পুশ করতে এবং অন্য সার্ভারে চেকআউট করার জন্য এটি করি তখন সেগুলিই এই ফাইলটির পার্মস: আরআর
হেনলি চিউ

আমি কেবল আমার সংগ্রহস্থলের একটিতে পরীক্ষা করেছিলাম এবং এটি প্রত্যাশার মতো কাজ করে। উইন্ডোজ অধীন প্রদত্ত কমান্ড ব্যবহার করে ফাইলটিতে অনুমতিগুলি সেট করা হয়েছিল। আমার সার্ভারের একটিতে (দেবিয়ান) ফাইলটিতে আগে -rw-r - r-- অনুমতি ছিল, এখন -rwxr-xr-x এ সেট করা হয়েছে। আপনি স্থানীয় এবং দূরবর্তী মেশিনে কোন গিট সংস্করণ ব্যবহার করেন?
আন্তওয়ানে

আমার স্থানীয় সংস্করণে 1.9.5 সংস্করণ এবং সার্ভারে 1.7.1 গিট চেকআউট করছে।
হেনলি চিউ

1.7.10 গিট দিয়ে কেবলমাত্র অন্য কোনও (পুরানো) সার্ভারে ক্লোন করার চেষ্টা করেছি, এটি এখনও ভালভাবে কাজ করে, ফাইলটির এক্স অনুমতি রয়েছে। হতে পারে আপনি কোনও সময় ভুল করেছেন, বা রিমোট সার্ভারে ক্লোন করেছেন এমন ব্যবহারকারীর সাথে আপনার অনুমতি সংক্রান্ত সমস্যা রয়েছে
অ্যান্টওয়েন

নোট করুন যে আপনি কেবল সম্পাদন অনুমতিটি পরিবর্তন (সেট বা সাফ) করতে পারেন। গিট অন্য কোনও অনুমতি ট্র্যাক করে না (যেমন পড়ার বা লেখার অনুমতি হিসাবে)।
ড্যান অ্যান্ডারসন

25

আন্তওয়ানের উত্তর সঠিক, এবং এটি একটি মন্তব্য হওয়া উচিত তবে মন্তব্যে পর্যাপ্ত স্থান নেই এবং ফর্ম্যাট করতে দেয় না। :-) আমি কেবল এটিই যোগ করতে চাই যে গিটের মধ্যে, ফাইল অনুমতিগুলি কেবলমাত্র 1 হিসাবে 644বা 755(বানান ( 100644এবং অংশটির অর্থ "নিয়মিত ফাইল") রেকর্ড করা হয় :100755100

diff --git a/path b/path
new file mode 100644

পূর্ববর্তী — 644 — এর অর্থ হল যে ফাইলটি কার্যকর করা উচিত নয় এবং পরবর্তীকালের অর্থ এটি কার্যকর করা উচিত । আপনার ফাইল সিস্টেমের মধ্যে এটি কীভাবে প্রকৃত ফাইল মোডে রূপান্তরিত হয় তা কিছুটা ওএস-নির্ভর। ইউনিক্সের মতো সিস্টেমে বিটগুলি আপনার umaskসেটিংয়ের মধ্য দিয়ে যায় , যা সাধারণত 022"গ্রুপ" এবং "অন্যান্য" 002থেকে লেখার অনুমতি সরিয়ে ফেলা হয় বা কেবল "অন্যান্য" থেকে লেখার অনুমতি সরিয়ে ফেলা হয়। এটি 077যদি আপনি বিশেষত গোপনীয়তা সম্পর্কে উদ্বিগ্ন থাকেন এবং "গ্রুপ" এবং "অন্য" উভয় পক্ষের থেকে পড়া, লেখার এবং অনুমতি কার্যকর করতে চান তবে এটিও হতে পারে ।


1 গিটের অতি-প্রাথমিক সংস্করণগুলি গোষ্ঠী অনুমতিগুলি সংরক্ষণ করেছে, যাতে কিছু সংগ্রহস্থলগুলিতে মোডের সাথে গাছের প্রবেশ থাকে 664। আধুনিক গিট দেয় না, তবে যেহেতু কোনও বস্তুর কোনও অংশই পরিবর্তন করা যায় না, সেই পুরানো অনুমতি বিটগুলি এখনও পুরানো গাছের বস্তুতে টিকে থাকে pers

কেবল 0644 বা 0755 সঞ্চয় করার পরিবর্তন কমিট e44794706eeb57f2 সালে ছিল যা গিট ভি0.99 এর আগে এবং 16 এপ্রিল 2005 এর তারিখের।


"গিট এর প্রাথমিক সংস্করণ" কোন ধারণা কোন সঠিক সংস্করণগুলি এর দ্বারা প্রভাবিত হয়?
ব্যবহারকারী5359531

2
প্রতিশ্রুতি দেওয়ার আগে @ ব্যবহারকারীর 35359531 সংস্করণ e44794706eeb57f2ee38ed1604821aa38b8ad9d2, অর্থাত্ গিট সংস্করণ ০.৯৯ ating
19-28 এ টেরিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.