2008-12-18 8 views
5

आज सुबह, मैंने सबवर्जन में संशोधन करने की कोशिश की और पाया कि अचानक मुझे ऐसा करने की अनुमति नहीं थी।सबवर्जन बहुत सख्त अनुमतियों के साथ संशोधन निर्देशिका बना रहा है

Can't move '/svn/db/txn-protorevs/21000-ga9.rev' to '/svn/db/revs/21/21001': 
Permission Denied

revs निर्देशिका को देखते हुए, मैंने देखा है कि किसी को 21000 संशोधन की थी, और नए निर्देशिका के लिए समूह लिखने की अनुमति किसी कारण से याद आ रही है।

 
    drwxrwsr-x 2 svn svn 24K 2008-10-27 10:04 19 
    drwxrwsr-x 2 svn svn 24K 2008-12-18 07:13 20 
    drwxr-sr-x 2 jeff svn 4.0K 2008-12-18 11:18 21 

उस निर्देशिका पर समूह लिखने की अनुमति सेट करने से मुझे प्रतिबद्ध करने की अनुमति मिलती है, इसलिए मैं एक और 1000 संशोधन के लिए अच्छा हूं। लेकिन ऐसा क्यों होता है, और यह सुनिश्चित करने के लिए मैं क्या बदल सकता हूं कि यह फिर से न हो?

उत्तर

8

यदि आपके पास file:// प्रोटोकॉल के माध्यम से रिपोजिटरी तक पहुंचने वाले एक से अधिक डेवलपर हैं, तो आप एक सबवर्सन सर्वर स्थापित करने (svnserve या अपाचे का उपयोग करके) देखना चाहते हैं। उस समाधान के साथ, सर्वर स्वयं भंडार फ़ाइलों पर सभी पहुंच और अनुमतियों के लिए ज़िम्मेदार है, और आप इस समस्या में नहीं भागेंगे।

SVN Book से:

  • करो नहीं अपने सभी उपयोगकर्ताओं के होने का सरल विचार से आकर्षित हो file:// यूआरएल के माध्यम से सीधे भंडार का उपयोग। भले ही भंडार नेटवर्क शेयर के माध्यम से हर किसी के लिए आसानी से उपलब्ध हो, यह एक बुरा विचार है। यह उपयोगकर्ताओं और भंडार के बीच सुरक्षा की किसी भी परत को हटा देता है: उपयोगकर्ता गलती से (या जानबूझकर) भंडार डेटाबेस को भ्रष्ट कर सकते हैं, निरीक्षण या अपग्रेड के लिए भंडार ऑफ़लाइन लेना मुश्किल हो जाता है, और यह फ़ाइल अनुमति समस्याओं की गड़बड़ी कर सकता है (the section called “Supporting Multiple Repository Access Methods” देखें)। ध्यान दें कि यह सुरक्षा कारणों से svn+ssh:// यूआरएल के माध्यम से रिपॉजिटरीज तक पहुंचने के खिलाफ चेतावनी देने के कारणों में से एक है, यह प्रभावी रूप से स्थानीय उपयोगकर्ताओं के रूप में file:// के माध्यम से उपयोग करने जैसा ही है, और यदि व्यवस्थापक सावधान नहीं है तो यह सभी समस्याओं को लागू कर सकता है।
0

सबसे संभावित कारण है की तरह ग्रेग ने कहा। कोई फ़ाइल के माध्यम से भंडार का उपयोग कर रहा है: // प्रोटोकॉल और एक अत्यधिक प्रतिबंधक umask है।

+0

नहीं, सभी के पास एक ही उमास्क है, और वे एसएसएच प्रोटोकॉल का उपयोग कर रहे हैं। – Apocalisp

2

इस समस्या को हल करने का सबसे अच्छा तरीका एक सर्वर के माध्यम से भंडार तक पहुंचना है। उसे सेट अप करने में

svnserve -d -r /svn 

मदद के लिए this reference देखें:

आप एन्क्रिप्ट नहीं किए गए संचार (इस स्थिति के बाद से आप file:// का उपयोग कर रहे हो रहा है) कोई आपत्ति नहीं है, svnserve स्थापित करने के लिए बहुत आसान है और प्रमाणीकरण विन्यास।

बमर यह है कि आपको प्रत्येक उपयोगकर्ता के प्रमाणीकरण को अलग से सेट करना होगा।

अपने ओएस के प्रमाणीकरण में शामिल होने के लिए आपको एक अपाचे एसवीएन सर्वर स्थापित करना होगा, जो थोड़ा अधिक जटिल है, these general instructions देखें। आप अपने ओएस के लिए कुछ googling के साथ विशिष्ट निर्देश मिल सकते हैं।

अंत में, यदि आप file:// का उपयोग करते समय समूह लिखने की अनुमति को रीसेट करने की अनुमति देने के लिए सबसे तेज़ मार्ग चाहते हैं, तो बस अपने शेल स्टार्टअप में उचित उमास्क (002) सेट करें, या एक रैपर स्क्रिप्ट के माध्यम से svn का उपयोग करें जो इसे सेट करता है :

#!/bin/bash 
# svnwrapper.sh 
umask 002 
/usr/bin/env svn $* 

सुनिश्चित करें कि यह उमास्क आपके पर्यावरण में सुरक्षा समस्या नहीं है।

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