2010-07-08 16 views
6

विशिष्ट उपयोगकर्ता के अंदर मौजूद फ़ाइलों को बदलने के लिए विशिष्ट उपयोगकर्ता को अनुमति देने के लिए गिट और गिटोलाइट को कॉन्फ़िगर कैसे करें?गिटोलाइट: केवल selelected फ़ाइलों को बदलने की अनुमति

उदा मूल मास्टर शाखा में फाइलें: वहाँ gitolite.conf या किसी भी प्रति-निर्देशिका निर्देशों हैं

/dir2/file1 
/dir2/file2 

:

/dir1/ 
/dir2/file1 
/dir2/file2 
/dir3/file1 

उपयोगकर्ता kathrine, में केवल /dir2/file1 और /dir2/file2

$kathrine: git clone [email protected]:test.git 

परिणाम को बदलने की अनुमति क्या मैं इस उपयोगकर्ता के लिए नई शाखा के साथ गिट को कॉन्फ़िगर करूँगा?

मैं नहीं चाहता कि ग्राफिक्स डिजाइनर को स्रोत कोड फ़ाइलों तक पहुंच प्राप्त हो।

उत्तर

4

2010: Gitolite 2 के लिए

नहीं (सही सामग्री के साथ एक समर्पित शाखा जिसका अर्थ है की जरूरत है बनाया जाना) (gitolite 3 के लिए परिवर्तित हो सकता है)।

author of gitolite himself put it के रूप में:

मैं एक परियोजना कहा जाता gitolite है कि एक केंद्रीय सर्वर पर एक से अधिक Git संग्रह के लिए शाखा स्तर तक पहुँच नियंत्रण का एक बहुत अच्छा काम करता है के लेखक हूँ। मेरा लक्ष्य "बाजार" गिट के सटीक कॉर्पोरेट उपयोगकर्ता है।

अब तक, मैं एक स्थिति है जहाँ -पढ़ने के लिए पहुँच जरूरतों (Git कि वैसे भी नहीं कर सकते) एक रेपो के ortions लिए प्रतिबंधित किया जा करने के लिए नहीं देखा है।

[अच्छी तरह से sparse checkout मदद कर सकता है, लेकिन यह वैसे भी आसान नहीं है)

राइट-पहुँच अक्सर प्रतिबंधित किए जाने की जरूरत है, और gitolite आप को सीमित कर सकते हैं:

  • दोनों द्वारा शाखा का नाम (उदाहरण के लिए केवल क्यूए लीड "क्यूए-किए गए" शाखा में एक प्रतिबद्ध श्रृंखला को धक्का दे सकती है)
  • या फ़ाइल नाम से (उदाहरण के लिए, केवल टीम लीड मेकफ़ाइल में परिवर्तन कर सकती है और src/very-important-and-critical-module में फ़ाइलें)।

अनुभाग "security, access control, and auditing" देखो, और यहाँ लिखने पहुँच का एक उदाहरण है:

conf/example.conf file सभी विस्तृत वाक्य रचना है:

repo foo 
     RW+ = lead_dev # rule 1 
     RW = dev1 dev2 dev3 dev4 # rule 2 

     RW NAME/ = lead_dev # rule 3 
     RW NAME/doc/ = dev1 dev2 # rule 4 
     RW NAME/src/ = dev1 dev2 dev3 dev4 # rule 5 

प्रत्येक फ़ाइल टच उन नियमों के खिलाफ धक्का दिया जा रहा है द्वारा धोया जाता है।

  • lead_dev किसी भी फ़ाइलों में परिवर्तन धक्का कर सकते हैं,
  • dev1/2 "doc/" में फ़ाइलों में परिवर्तन धक्का कर सकते हैं और "src/" (लेकिन शीर्ष स्तर README),
  • और dev3/4 कर सकते हैं केवल "src/" में फ़ाइलों में परिवर्तनों को पुश करें।

कहा जा रहा है, कठिन सवाल बनी हुई है, ओपी यह कहते हैं:

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

जनरल सिद्धांत:

इतिहास में एक बिंदु है जहां उन फ़ाइलों को वर्तमान नहीं थे पर 'graph_designer' शाखा पैदा करते हैं।

वहाँ से, दो विकल्प:

  • या तो आदेश पहले ही dir2 फाइलों के साथ एक है करने के लिए अपने वर्तमान प्रतिबद्ध (git rebase --interactive) पुनर्निर्माण
  • या, यदि (और फिर किसी अन्य निर्देशिका को प्रभावित करता है) पहली पसंद बहुत अधिक काम का प्रतिनिधित्व करती है (या संभव नहीं है क्योंकि उन लोगों को पहले ही धक्का दिया गया है और अन्य रिपो में खींच लिया गया है), बस उस नई शाखा में प्रासंगिक फाइलों की प्रतिलिपि बनाएँ और जोड़ें।
    इसका मतलब है, उन फ़ाइलों के लिए कोई पिछला इतिहास नहीं है, लेकिन उन्हें शुरुआत से ही उस इतिहास की आवश्यकता नहीं हो सकती है।

कि 'graph_designer' क्लोन होने की अनुमति देने वाली एकमात्र शाखा होगी, और इसमें गैर-अधिकृत फ़ाइलों के साथ कोई इतिहास नहीं होगा।

+0

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

+0

@takeshin: इतिहास में एक बिंदु पर '' graph_designer' 'शाखा बनाएं जहां वे फ़ाइलें मौजूद नहीं थीं, उदाहरण के लिए, आप सीधे इसमें सही फाइलों की प्रतिलिपि बना सकते हैं और उन्हें प्रतिबद्ध कर सकते हैं (अर्थ: उन फ़ाइलों के लिए कोई पिछला इतिहास नहीं , लेकिन उन्हें शुरुआत से ही उस इतिहास की आवश्यकता नहीं हो सकती है)। वह 'graph_designer'' क्लोन होने की अनुमति देने वाली एकमात्र शाखा होगी, और इसमें गैर-अधिकृत फ़ाइलों के साथ कोई इतिहास नहीं होगा। – VonC

+0

ध्यान दें कि यह अब gitolite v3 – jan

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