2009-07-28 15 views
15

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

उत्तर

1

देशी गिट प्रोटोकॉल इसका समर्थन नहीं करता है; गिट कई स्थानों पर मानता है कि प्रत्येक के पास पूर्ण इतिहास की सभी की प्रति है।

यह कहा गया है कि, एक विकल्प git-subtree का उपयोग रिपोजिटरी के हिस्से को अपने स्वयं के सबसेट भंडार में विभाजित करने के लिए किया जा सकता है, और समय-समय पर विलय कर सकता है।

2

गिट भंडार पर अभिगम नियंत्रण का समर्थन नहीं करता है। आप तथापि, भंडार खुद पर अभिगम नियंत्रण लागू, hooks का उपयोग कर, और अधिक विशेष update हुक से कर सकते हैं।

11

संक्षेप में: आप नहीं कर सकते हैं। गिट स्नैपशॉट आधारित है (कम से कम वैचारिक स्तर पर) संस्करण नियंत्रण प्रणाली, परिवर्तन आधारित नहीं है। यह पूरे के रूप में परियोजना (भंडार) का इलाज करता है। इतिहास एक परियोजना का इतिहास है, एकल फ़ाइल इतिहास का संघ नहीं है (यह प्रति-फ़ाइल इतिहास में शामिल होने से अधिक है)।

योगदान में update-paranoid हुक, या gitolite की VREFs तंत्र की तरह उपयोग करना हुक, आप की अनुमति देने या भंडार के लिए उपयोग न करे कर सकते हैं, तो आप अनुमति देते हैं या अलग-अलग शाखाओं को acces न करे कर सकते हैं। आप निर्दिष्ट उपनिर्देशिका में चीजों को बदलने वाले किसी भी काम को भी रोक सकते हैं। लेकिन परियोजना हमेशा पूरी तरह से इलाज किया जाता है। निर्देशिका है जिसे आप submodule में करने के लिए उपयोग को प्रतिबंधित करना चाहते हैं, और इस submodule भंडार तक पहुंच को रोकना:

वैसे, एक बात आप कर सकते है।

+0

गिट परिवर्तन-आधारित नहीं है ?? – orbfish

+3

नहीं, यह नहीं है। रिपोजिटरी राज्य के स्नैपशॉट का प्रतिनिधित्व करने वाले पेड़ ऑब्जेक्ट को ऑब्जेक्ट पॉइंट ऑब्जेक्ट करें। परिवर्तन वर्तमान और माता-पिता प्रतिबद्धता के दो पेड़ों के बीच अंतर है। –

2

जोर्ग ने पहले ही बताया है कि आप ऐसा करने के लिए हुक का उपयोग कर सकते हैं। वास्तव में आपको कौन सा हुक (ओं) चाहिए, आपके सेटअप पर निर्भर करता है। यदि आप एक रेपो पर अनुमतियां चाहते हैं जो धक्का दिया जाता है, तो आपको update हुक की आवश्यकता होगी जैसा कि उसने कहा था। हालांकि, अगर यह एक रेपो पर है कि आप वास्तव में काम कर रहे हैं (काम कर रहे हैं और विलय कर रहे हैं), तो आपको pre-commit और post-merge हुक की भी आवश्यकता होगी। githooks manpage (जोर्ग भी इससे जुड़ा हुआ है) नोट करता है कि वास्तव में contrib खंड में एक स्क्रिप्ट ऐसा करने का एक तरीका प्रदर्शित करती है। आप इसे गिट टैरबॉल पकड़कर प्राप्त कर सकते हैं, या इसे गिट के गिटवेब रेपो से बाहर खींच सकते हैं: setgitperms.perl। भले ही आप केवल अद्यतन हुक का उपयोग कर रहे हों, यह एक उपयोगी मॉडल हो सकता है।

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