2010-07-02 13 views
7

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

तो मैं कुछ सही नहीं कर रहा हूं; इससे निपटने का सही तरीका क्या है?

+3

तो, मैं उत्सुक हूं - आपको फ़ाइलों पर रूट स्वामित्व की आवश्यकता क्यों है? इसके बिना क्या टूट जाएगा? – Amadan

उत्तर

7

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

जब आप एम्बेडेड छवि जेनरेट करना चाहते हैं, तो सब कुछ एक नई निर्देशिका में कॉपी करें और फिर अनुमतियों को सेट करें जैसा आपको चाहिए।

+1

यह वास्तव में लागू करने के लिए बहुत आसान साबित हुआ। मैंने एक find -user root> rootlist.txt किया और एक स्क्रिप्ट बनाई जो rootlist.txt में फ़ाइलों को रूट करने के लिए दिखाती है तो बिल्ड स्क्रिप्ट को कॉल करती है और फिर फ़ाइलों को वर्तमान उपयोगकर्ता को दिखाती है। –

+0

मेरी पिछली टिप्पणी में समाधान विफल हो जाएगा यदि फ़ाइल नाम में एक न्यूलाइन चरित्र है; आउटपुट नल-डिलीमिटेड फ़ाइल नाम ढूंढना बेहतर है। इस सवाल के बाद से, मैं इसके बजाय बिल्ड्रूट का उपयोग करने के लिए स्थानांतरित हो गया हूं, जो मेरे से-स्क्रैच सेटअप से काफी अच्छा है। –

3

सबसे आसान तरीका है (यदि यह संभव है), किसी भी परिचालन (आदि क्लोनिंग) रूट के रूप में ऐसा नहीं होगा क्योंकि है कि अन्य उपयोगकर्ता नहीं फाइलों के साथ काम करने में सक्षम होने की ओर जाता है।

एक वैकल्पिक साझा (समूह या सभी) भंडार के लिए अनुमतियाँ, एक git remote add origin http://host/repo.git और एक git pull origin master के बाद स्थापित करने के लिए git init --shared का उपयोग कर किया जाएगा। जो मूल रूप से कम सख्त अनुमतियों वाला एक क्लोन है।

1

मुझे यकीन है कि मुझे समझ में क्यों कुछ फ़ाइलों chowne 'घ जड़ होना चाहिए नहीं कर रहा हूँ। सहजता से मुझे लगता है कि आपकी समस्या मालिक पर निर्भरता है, न कि गिट स्वामित्व को स्टोर नहीं करता है। आप क्या आपके निर्माण में chown कर सकते हैं।

5

कर्मस्तन के उत्तर पर निर्माण करने के लिए, यहां जादू शब्द "स्क्रिप्ट बनाएं" हैं।

गिट में फ़ाइलें तैनाती संस्करणों की तरह दिखने की ज़रूरत नहीं है। आप .c फ़ाइलों को तैनात नहीं करते हैं - आप उन्हें पहले संकलित करते हैं। इसी प्रकार कुछ कॉन्फ़िगरेशन फ़ाइलें तैनात/स्थापित होने से पहले एक बिल्ड प्रक्रिया के माध्यम से जा सकती हैं।

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