2013-02-25 127 views
11

मैं यह देख रहा हूं कि जब मैं विकास सर्वर (Red Hat) पर अपने github repo से खींचता हूं तो पुल पूरा होने के बाद फ़ाइलों का स्वामित्व बदल जाता है। .git फ़ाइल मेरे स्वामित्व में थी लेकिन फिर मैंने देखा कि यह मेरे रूप में फाइलें लिखता है और मुझे इसे एक अलग उपयोगकर्ता के रूप में फाइल लिखने की आवश्यकता है। इसलिए मैंने .git निर्देशिका का स्वामित्व बदल दिया।फ़ाइल स्वामित्व बदलने से गिट को कैसे रखा जाए

मैं गिट कॉन्फ़िगर core.filemode पर ठोकर खा गया जो सच था। मैंने तब से इसे झूठा कर दिया है। झूठी को स्थापित करने के बाद मैंने कोई अंतर नहीं देखा है। मेरी फाइल स्वामित्व को बदलने से रोकने के लिए मुझे क्या करना चाहिए।

यह स्थानीय रूप से मेरे साथ नहीं होता है।

उत्तर

7

गिट एक परिनियोजन सर्वर नहीं है। यह फाइलें लिखता है क्योंकि जो भी फाइलें लिख रहा है, वह आप होंगे। यदि आपको अनुमतियां और स्वामित्व सेट की आवश्यकता है, तो आप पोस्ट-चेकआउट हुक को पका सकते हैं और इसे कॉन्फ़िगरेशन फ़ाइल या कुछ तय करना है कि यह तय करने के लिए कि आगे क्या करना है।

+0

मेरे अनुभव से मैं नहीं कह सकता कि पूरी तरह सच है। अगर मैं निर्देशिका में फ़ाइलों का स्वामित्व बदलता हूं और फिर 'गिट पुल' चलाता हूं तो मुझे अलग-अलग फाइलों के लिए अलग-अलग मालिक जहाज मिलते हैं। कुछ जड़ और कुछ मुझे और कुछ अन छुआ। – user2108258

+2

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

+0

.git निर्देशिका का स्वामित्व कौन होना चाहिए? सर्वर पर मेरा उपयोगकर्ता वह है जिसे मैं गीथूब से खींचने के लिए उपयोग करता हूं। हालांकि अगर मैं उपयोगकर्ता के रूप में अपने स्वयं का उपयोग करता हूं तो फ़ाइलों को डिस्क पर मेरे रूप में लिखा जाता है। लेकिन मैं चाहता हूं कि वे वेब सर्वर के स्वामित्व में हों। – user2108258

20

यदि यह समूह को संरक्षित करने के लिए पर्याप्त है, तो आप निर्देशिकाओं पर सेटगिड ध्वज सेट कर सकते हैं। http://en.wikipedia.org/wiki/Setuid

देखें एक निर्देशिका ("chmod g + रों") पर setgid अनुमति स्थापना, नई फ़ाइलें और उप निर्देशिकाओं अपने समूह की आईडी के वारिस के लिए यह भीतर बनाया का कारण बनता है बल्कि उपयोगकर्ता के लिए जो फ़ाइल बनाई का प्राथमिक समूह आईडी से (मालिक आईडी कभी प्रभावित नहीं होता है, केवल समूह आईडी)। नई बनाई गई उपनिर्देशिका सेटगिड बिट का उत्तराधिकारी है। इस प्रकार, यह समूह फ़ाइलों के लिए नई फ़ाइलों या निर्देशिका बनाने से पहले समूह के सदस्यों को स्पष्ट रूप से अपने मौजूदा समूह को बदलने की असुविधा के बिना किसी समूह के लिए साझा कार्यक्षेत्र को सक्षम बनाता है। ध्यान दें कि निर्देशिका पर सेटगिड अनुमति को सेट करना केवल नई फाइलों की समूह आईडी को प्रभावित करता है और सेटडिड बिट सेट होने के बाद बनाई गई उपनिर्देशिकाएं, और मौजूदा इकाइयों पर लागू नहीं होती हैं। स्थापना मौजूदा उप निर्देशिकाओं पर setgid बिट जैसे कि निम्न मैन्युअल रूप से किया जाना चाहिए, एक कमांड के साथ: इस के साथ

[[email protected]]# find /path/to/directory -type d -exec chmod g+s '{}' \;

+2

अच्छा समाधान - हमेशा समस्या के समाधान को देखना पसंद करते हैं किस विशेष सॉफ्टवेयर के आधार पर टिप्पणी - ग्रिड बिट्स का उपयोग करना यहां आसान जीत है। –