2012-10-04 14 views
12

पर अनुमतियों को बदलने से गिट को रोकें जब मैं अपने भंडारों से परिवर्तन खींचता हूं, तो गिट फ़ाइल अनुमतियां बदलता है (वास्तव में, वह समूह write अनुमति को बदलता है)।खींचें

यदि मैं सही हूं, तो गिट को केवल निष्पादन योग्य बिट को ट्रैक करना चाहिए और इसे core.filemode को गलत पर सेट करके हटाया जा सकता है।

लेकिन, हालांकि, जब मैं खींचता हूं, तो 0mअनुमति लगातार बदलती है, तो फ़ाइल मोड को गलत (स्थानीय, वैश्विक और उपयोगकर्ता में) पर सेट किया जाता है।

मैं सही chmod रीसेट करने के लिए एक गिट-हुक का उपयोग कर सकता हूं, लेकिन यह कुछ ओवरहेड है और अगर मैं फ़ाइल मोड परिवर्तन को पूरी तरह से अनदेखा करने के लिए गिट से पूछने का कोई तरीका हूं तो मैं चाहूंगा।

कोई भी यह कैसे प्राप्त करने के बारे में जानता है?

उत्तर

8

एक config यहां अपनी सेटिंग कि पराक्रम मदद, core.sharedRepository है ब्लॉग पोस्ट "Preserving Group Write on Git Objects in a Collaborative Repository" में प्रस्तुत किया:

समाधान निकला काफी सरल किया जाना है। , "sharedRepository = group" इतनी तरह:
फ़ाइल .git/config में, मैं एक पंक्ति है कि पढ़ जोड़ा

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    sharedRepository = group 

इसके बाद, .git/objects में नई फ़ाइलें समूह लिखने के लिए उचित अनुमति के साथ बनाया गया था।
(हालांकि, ध्यान दें कि नई फाइलें उपयोगकर्ता खाते के प्राथमिक समूह द्वारा समूह-स्वामित्व वाली हैं, जिसके माध्यम से पुश प्राप्त हुआ था। यदि परियोजना पर सहयोग करने वाले उपयोगकर्ता के पास अलग-अलग प्राथमिक समूह हैं, और यदि वे उपयोगकर्ता उसमें सदस्यता साझा नहीं करते हैं समूहों के सेट, आप अभी भी समस्या में पड़ सकते)

की मूल्य की सुनिश्चित करें कि आपके umask:।

उदाहरण: 0660 रेपो पढ़ने बनाने/लिखने योग्य मालिक के लिए होगा और समूह, लेकिन दूसरों के लिए पहुंच योग्य (तक समूह के बराबरउदा। 0022)।

+1

'umask' (या http://serverfault.com/questions/26954/how- पर https://groups.google.com/forum/?fromgroups=#!topic/repo-discuss/QrJII6gTLGM भी देखें) डू-आई-शेयर-ए-गिट-रिपोजिटरी-साथ-एकाधिक-उपयोगकर्ता-ऑन-ए-मशीन) – VonC

+2

अरे धन्यवाद! मेरी परेशानी .git/ऑब्जेक्ट्स के बारे में नहीं थी, लेकिन रेपो में फाइलें थीं, लेकिन 'उमास्क' पर आपकी टिप्पणी सही थी। 'Umask' को' 002 'सेट करने की अनुमति समूह द्वारा डिफ़ॉल्ट रूप से एक्सेस लिखने की अनुमति है। –

3

समाधान मैं का उपयोग किया है कि अनुमतियों आप रखना चाहते हैं run the command as the user के लिए है:

sudo -u user command 

इस मामले में, यह हो सकता है:

sudo -u www-data git pull 

www-databeing the apache default user on Ubuntu at least

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

+2

दिलचस्प।मुझे इसका परीक्षण करना होगा। +1 – VonC

संबंधित मुद्दे