2011-01-12 14 views
9

के साथ विशिष्ट भंडार शाखाओं को पढ़ें अस्वीकार करें जो मैं प्राप्त करने का प्रयास कर रहा हूं वह निम्नलिखित है: सहकर्मी समूह @cowकर्स में हैं, ग्राहक समूह @clients में हैं।गिटोलाइट

Git रेपो पढ़ सकते हैं और हर किसी के लिए लिखने के लिए उपलब्ध होंगे, लेकिन वहाँ विशेष शाखाओं होगा। यानी मैं एक नई शाखा "प्रशिक्षु" बना सकते हैं और @coworkers आरडब्ल्यू + acces है परन्तु ग्राहकों नहीं डब्ल्यू आर करने में सक्षम हो या चाहिए

मैंने सोचा था कि मैं प्राप्त कर सकते हैं कि

repo myrepo 
    - intern = @clients 
    RW+   = @clients @coworkers 

द्वारा लेकिन इस करता है काम नहीं।

उत्तर

0

मैं एक गिटोलाइट विशेषज्ञ नहीं हूं, लेकिन मैं सोचता हूं नियमों को क्रमशः संसाधित किया जाता है। क्या आपने पिछले दो लाइनों को आसानी से उलटाने की कोशिश की है? यही है, @clients और @cowकर्स को पहले अनुदान की अनुमति दें, और फिर दूसरी बार @clients द्वारा इंटर्न तक पहुंच से इंकार कर दें।

9

gitolite के लेखक के साथ एक discussion के अनुसार, पढ़ने के लिए पहुंच प्रतिबंध शाखाओं के लिए संभव नहीं है:

Gitolite के प्रति शाखा सामान केवल लेखन पहुँच के लिए काम करता है। यह पढ़ने की पहुंच के लिए काम नहीं करता है क्योंकि गिट खुद उस भेद को समर्थन देने का समर्थन नहीं करता है।

+0

सीमित करने पठन पहुँच * डिजाइन द्वारा Git * में संभव नहीं है - जब आप हमेशा पूरा भंडार लाने चाहिए क्लोनिंग, वहाँ बस इसके चारों ओर कोई रास्ता नहीं (मौलिक बदल रहा है कैसे Git संचालित बिना)। – sleske

+0

अब गिटोलाइट के नवीनतम संस्करण की आंशिक प्रतिलिपि विशेषता के साथ यह संभव है। नीचे मेरा जवाब देखें। –

3

अब यह उपयोग कर रहा gitolite

  1. की partial-copy feature
  2. टिप्पणी हटाएं नवीनतम gitolite संस्करण का उपयोग सुनिश्चित करें gitolite v3.x के नवीनतम संस्करण के साथ शाखाओं gitolite को पढ़ने के उपयोग को सीमित करने के लिए संभव है ~/.gitolite.rc फ़ाइल
  3. की ENABLE खंड में partial-copy लाइन ~/.gitolite.rc फ़ाइल
  4. उपयोग आंशिक में $GIT_CONFIG_KEYS = '.*' सेट कॉपी विकल्प को एक और भंडार रखने के लिए जो आपकी मूल भंडार की एक प्रति है लेकिन कुछ शाखाओं के बिना।

उदाहरण: यदि आप करने के लिए ग्राहक चाहते हैं केवल deploy शाखा

repo my-repo 
    RW+  = @coworkers 

repo my-repo-deploy 
    RW deploy = @clients 
    -   = @clients 

    - VREF/partial-copy   = @all 
    config gitolite.partialCopyOf = my-repo 

के लिए उपयोग किया है, तो Git शिकायत इसे हटा नहीं सकते कि मास्टर शाखा आप सर्वर पर इस आदेश का उपयोग कर सकते हैं:

:
sudo git config --system receive.denyDeleteCurrent warn 
sudo git config --global receive.denyDeleteCurrent warn 

ग्राहकों अब इस तरह एक कमांड के साथ अपने-रेपो तैनाती भंडार की तैनाती शाखा क्लोन कर सकते हैं

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