Git add करते समय फ़ाइल को स्वचालित रूप से chmod करें?


2

मेरे पास फ़ाइलों को प्रबंधित करने के लिए गिट का उपयोग करके एक ubuntu विकास प्रणाली है, लेकिन मैं एक अलग (विंडोज़) सिस्टम पर QTCreator में अपना संपादन करना पसंद करता हूं, इसलिए मेरे पास ubuntu सर्वर पर मैप की गई एक विंडोज़ नेटवर्क ड्राइव है।

हालांकि, ऐसा लगता है कि जब भी मैं किसी फाइल को सेव करता हूं, तो यह विंडोज़ पर एक्ज़िक्यूट फ्लैग जोड़ता है। कभी-कभी यह 664 से 764 में बदल जाता है, और कभी-कभी मैंने इसे 777 में बदल दिया है।

इसलिए मैं अपना गम एड करने से पहले 644 बार एक चामोद कर रहा हूं, लेकिन यह गधे में दर्द है, और कभी-कभी मैं भूल जाता हूं।

वहाँ एक अच्छा तरीका है या तो विंडोज़ / क्यूटी + एक्स को जोड़ने से रोकने के लिए है, या बस "git add" स्वचालित रूप से chm 664 मेरी .c और .h फ़ाइलों को स्टेजिंग / कमिट करने से पहले है?

धन्यवाद

जवाबों:


3

संपादित करें:

एक समाधान सेट करने के लिए हो सकता है core.fileMode परिवर्तनशील false अपने में ~/.gitconfig। यह गिट को निष्पादन योग्य बिट की अनदेखी करता है।

यदि आप एक FAT फाइल सिस्टम का उपयोग कर रहे हैं, तो आप सेट करना चाह सकते हैं core.ignorecase सेवा मेरे true भी।

पुराना उत्तर

आपको लिनक्स बॉक्स पर प्रतिबद्ध मानते हुए, आप इस मामले में एक हुक का उपयोग कर सकते हैं .git/hooks/pre-commit:

#!/bin/sh
find . -type f -not -perm 0644 -exec chmod 644 {} \+
find . -type d -not -perm 0755 -exec chmod 755 {} \+
git add .

यह कुछ हद तक इस अर्थ में कच्चा है जो सभी फाइलों और निर्देशिकाओं को एक निश्चित अनुमति के लिए मजबूर करता है। आप जोड़ना चाह सकते हैं chmod विशिष्ट फ़ाइलों के लिए कमांड अगर उन्हें बीच अन्य अनुमतियों की आवश्यकता है find तथा git add। दूसरी ओर यह छोटा और सरल है।

अधिक जटिल समाधान उपयोग कर सकते हैं git diff --cached --name-only यह जाँचने के लिए कि कौन सी फाइलें वास्तव में प्रतिबद्ध होने वाली हैं और केवल उन्हीं को ठीक करेगी। लेकिन यह अधिक जटिल होगा और यादृच्छिक अनुमति परिवर्तनों को ठीक नहीं करेगा।

#!/bin/sh
FILES=$(git diff --cached --name-only)
chmod 644 $FILES

हम्म, बहुत खतरनाक है। रीसेट करना था, इसे संशोधित किया और अन्य फ़ाइलों का एक पूरा गुच्छा जोड़ा;) क्या इसे बनाने का कोई तरीका है ताकि यह केवल उन फ़ाइलों को संशोधित करे जो पहले से ही प्रतिबद्ध हैं? संपादित करें: सिर्फ दूसरा पैराग्राफ देखा, हाँ, यह बेहतर होगा। उसके बारे में कोई कैसे जानेगा? मुझे प्रस्तुत की जाने वाली फ़ाइलों को छोड़कर यादृच्छिक अनुमति परिवर्तनों की परवाह नहीं है
Jordan

@ जोर्डन: दूसरे पैरा का उपयोग करना चाहिए git diff। अद्यतन उत्तर देखें।
Roland Smith

हम्म, ऐसा लगता है कि कमिट के बाद फाइलों को चॉम्ड किया गया है, या कम से कम फाइलों को संशोधित अनुमतियों के साथ फाइल में नहीं जोड़ा गया है। मैंने "git add $ FILES" करने की कोशिश की, लेकिन ऐसा नहीं लगता था
Jordan

@ जोर्डन एक बेहतर तरीका हो सकता है। अद्यतन उत्तर देखें।
Roland Smith

अहा! ठीक वैसा ही मैं देख रहा हूं। धन्यवाद!
Jordan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.