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

मान लें कि हमारे पास दो उपयोगकर्ता (प्रशासक और अतिथि) और 2 फाइलों के साथ एक गिट भंडार है: (a.txt और b.txt)।

मान लें कि "b.txt" एक प्रतिबंधित फ़ाइल है जिस तक अतिथि की पहुंच नहीं होनी चाहिए।

git clone guest@ipaddress:C:/path/to/repository.git या git pull guest@ipaddress:C:/path/to/repository.git

क्लोन करना चाहिए या "a.txt" खींचना चाहिए

git clone administrator@ipaddress:C:/path/to/repository.git या git pull administrator@ipaddress:C:/path/to/repository.git

दोनों फाइलों को क्लोन या खींचना चाहिए।

क्या इस परिणाम को .gitignore या .git/info/exclude के साथ प्राप्त करने का कोई तरीका है?

0
Jeremy David 27 नवम्बर 2019, 04:57

2 जवाब

क्या इस परिणाम को .gitignore या .git/info/exclude के साथ प्राप्त करने का कोई तरीका है?

नहीं।

Git सभी के बारे में है प्रतिबद्ध, और खींचें (वास्तव में, git fetch) और पुश संचालन स्थानांतरण प्रतिबद्ध। कमिट शामिल फाइलें—एक कमिटमेंट में आंशिक रूप से डेटा (एक स्नैपशॉट) और आंशिक रूप से मेटाडेटा (सूचना के बारे में स्नैपशॉट) होता है—और आपके पास या तो एक कमिटमेंट होता है, जिस स्थिति में आप आपके पास सभी फ़ाइलें हैं, या आपके पास कोई कमिटमेंट नहीं है, इस स्थिति में आपके पास सभी फ़ाइलें नहीं हैं।

जिन फ़ाइलों को किसी भी कारण से प्रतिबंध की आवश्यकता होती है - कानूनी, कॉर्पोरेट, या अन्यथा - या तो Git में बिल्कुल नहीं होनी चाहिए, या किसी प्रकार के पूर्व-सुरक्षित फैशन (जैसे, एन्क्रिप्टेड) ​​में संग्रहीत होनी चाहिए। आम तौर पर "जीआईटी में बिल्कुल नहीं" दृष्टिकोण सबसे अच्छा काम करता है। वास्तविक फ़ाइल को संग्रहीत करने वाली प्रतिबंधित वेब साइट के URL को Git में संग्रहीत करने पर विचार करें।

1
torek 27 नवम्बर 2019, 05:10

उपयोगकर्ता पहुंच को केवल भंडार के कुछ हिस्सों तक सीमित करना संभव नहीं है। gitignore फाइलें लोगों को गलती से उस कोड की जांच करने से रोकने के लिए डिज़ाइन की गई हैं जिसका उनका इरादा नहीं था, न कि पहले से ही रिपॉजिटरी में कोड तक पहुंच को प्रतिबंधित करने के लिए।

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

1
bk2204 27 नवम्बर 2019, 08:13