विंडोज पर फ़ाइल की अनुमति दें


172

मैंने Git में फ़ाइल अनुमतियों के बारे में कुछ प्रश्नों के माध्यम से पढ़ा है और मैं अभी भी थोड़ा भ्रमित हूं। मुझे GitHub पर एक रेपो मिला है जो दूसरे से मिला है। पोस्ट मर्ज, वे समान होना चाहिए। तथापि:

$ git diff --summary origin/epsilon master/epsilon
 mode change 100644 => 100755 ants/dist/sample_bots/csharp/compile.sh
 mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/MyBot.coffee
 mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/ants.coffee
 mode change 100644 => 100755 ants/util/block_test.sh
 mode change 100644 => 100755 manager/mass_skill_update.py
 mode change 100644 => 100755 worker/jailguard.py
 mode change 100644 => 100755 worker/release_stale_jails.py
 mode change 100644 => 100755 worker/start_worker.sh

मैंने फ़ाइल अनुमतियों को बदलने की कोशिश की है, लेकिन यह अलग-अलग परिणामों को नहीं बदलता है।

जवाबों:


346

मैंने विंडोज पर अनुमतियों (भी) को बदलने के तरीके का समाधान यहां पाया: http://blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html

उदाहरण के लिए निम्नलिखित आदेश उपयोगकर्ता को एक मनमानी फ़ाइल के लिए अनुमति जोड़ता है:

git update-index --chmod=+x <file>

6
+1: वास्तव में मुझे यह सुनिश्चित करने के लिए कि शेल स्क्रिप्ट जो मैं विंडोज से करता हूं (जहां मैंने core.filemodeसेट किया है false) वास्तव में निष्पादित बिट सेट है।
22

मेरे मामले में मैंने फ़ाइल में एक नई लाइन भी जोड़ी, और उसके बाद ही कमिट कर पाया
ओशई

5
विंडोज में, गिट-बैश का उपयोग करते हुए, मुझे --addकिसी कारण से निष्पादन के लिए एक ध्वज की आवश्यकता थी git update-index --add --chmod=+x <file>:। इसके बाद, फ़ाइल पहले से ही
चामोद के

इसका अब कोई प्रभाव नहीं है, न तो git bash में और न ही cmd.exe प्रॉम्प्ट में।
बेन

106

स्टैकओवरफ़्लो पर एक अन्य प्रश्न से: मैं कैसे Git को फ़ाइल मोड (chmod) परिवर्तनों को अनदेखा करता हूं?

प्रयत्न:

git config core.filemode false

से Git-config (1) :

   core.fileMode
       If false, the executable bit differences between the index and the
       working copy are ignored; useful on broken filesystems like FAT.
       See git-update-index(1). True by default.

धन्यवाद। मैंने वो भी देखा। कोशिश की और इससे कोई फर्क नहीं पड़ा।
सिनेसियो

3
मुझे ओपी के समान समस्याएँ थीं और कोई भी बदलाव नहीं कर सकता था चाहे hardमैंने रीसेट करने का प्रयास क्यों न किया हो। इसने मेरे लिए चाल चली।
जो-हरमन हौलॉल्ट

11
[परियोजना] / / git / config में एक ही सेटिंग हो सकती है और ~ / .itconfig को ओवरराइड करेगा। यदि आप इसे विश्व स्तर पर स्थापित करने का प्रयास कर रहे हैं, तो सुनिश्चित करें कि यह स्थानीय रूप से ओवरराइड नहीं किया जा रहा है।
बाइनरी फ़िले

1
मुझे लगता है कि एनटीएफएस पर यह आवश्यक है, दुख की बात है।
मार्क.2377

1
यही जवाब है!
एंड्रयू सर्डू

29

गिट बैश के लिए आसान वन-लाइनर:

find . -name '*.sh' | xargs git update-index --chmod=+x

यह .shनिष्पादन योग्य के रूप में सभी फ़ाइल को चिह्नित करेगा । उसके बाद, आपको बस करना है git commit


2
@ बेनोइट-ब्लैंचोन वन-लाइनर के लिए छोटा सुधार ... .sh उद्धृत किया जाना चाहिए। खोजो। -नाम ' .sh' | xargs git अपडेट-इंडेक्स --chmod = + x
स्टीवन आसानी से उपयोग होने वाला

आप सही हैं, मैंने जवाब संपादित किया। धन्यवाद @SteventheEasilyAmused
बेनोइट ब्लैंचोन

15

यदि आप Cygwin git (या Linux git, भी, मुझे लगता है) का उपयोग करते हैं, तो एक अच्छा मौका है जो आपकी core.filemode सेटिंग को परियोजना स्तर पर $ projdir / .git / config में सेट किया गया है। मैंने पाया कि मुझे अपना Cygwin git पाने के लिए निम्न कार्य करना था और मेरा Windows git किसी भी समय बिना किसी फिल्म्स के बदलाव के बिना विंडोज फाइलसिस्टम पर अच्छी तरह से सह-अस्तित्व में आना चाहिए:

  • $ projdir / .git / config में core.filemode सेट करने वाली लाइन हटाएं
  • Windows git में, "git config --global core.filemode false" चलाएं

यह मेरे साइग्विन गिट को फिल्माईड परिवर्तनों को देखने के लिए जारी रखने की अनुमति देता है, जो आमतौर पर प्रासंगिक होते हैं, जबकि विंडोज गिट को निर्देश देते हैं कि यह उन फिल्म्स परिवर्तनों को अनदेखा करता है, जो आमतौर पर गलत सकारात्मक हैं।


6

नीचे दिए गए कमांड का उपयोग करके पहले फ़ाइल अनुमतियों की जाँच करें।

git ls-files --stage

फिर अनुमतियां बदलें। यहां "x" निष्पादन अनुमतियों का प्रतिनिधित्व करता है।

git update-index --chmod=+x 'scriptname.ext'

अब अनुमतियों को फिर से सत्यापित करें।

git ls-files --stage

==============================================

यदि आप विंडोज पीसी का उपयोग कर रहे हैं, लेकिन लिनक्स मशीन पर तैनात हैं। लिनक्स मशीन पर चलने के लिए अनुकूल बनाने के लिए नीचे दिए गए आदेश को पहले स्थान पर निष्पादित करें

dos2unix scriptname.ext scriptname.ext


क्या ऐसा कुछ करने का कोई तरीका नहीं है git update-index --chmod=1777 'scriptname.ext'?
एलेक्स बार्कर

क्या आपने पथ पर नेविगेट किया है, जहां स्क्रिप्ट फ़ाइल मौजूद है? @alex
सिरेश यरलागड्डा

5

मैंने इसे उबंटू, कमिट, पुश और ऑल ओके में फाइल परमिशन में बदलाव करके ठीक किया। ऐसा लगता है कि यह सिर्फ विंडोज / NTFS पर msysgit के साथ काम नहीं करेगा।


मैं खिड़कियों के लिए GitHub की सलाह देता हूं। वंडरफुल इंटरफ़ेस और वास्तव में अच्छा शेल, मैंने भी आसानी से ssh कुंजी सेटअप और गिट प्रवाह स्थापित किया।
सांगोकु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.