2011-03-20 21 views
9

क्षमा करें अगर यह एक डुप्लिकेट है, तो मुझे अभी भी सही उत्तर नहीं मिला ..एसवीएन एक निर्देशिका को लॉक करें

आप कमांड लाइन से svn निर्देशिका को कैसे लॉक करते हैं?
इन उत्तरों मैंने पाया SVN सर्वर तक पहुँचने के लिए व्यक्ति की आवश्यकता होती है सब के सब: मैं चेकइन

संपादित से एक शाखा लॉक करने के लिए की जरूरत है। मेरे लिए एक विकल्प नहीं है। मैं एक ऐसी कंपनी में काम करता हूं जहां स्रोत नियंत्रण मशीन सचमुच वॉल्ट में बंद हो जाती है। ऑथ नियमों को बदलने के लिए लाभ प्राप्त करना एक ऐसी प्रक्रिया है जिसे मैं एटीएम नहीं कर सकता।

+1

http://stackoverflow.com/questions/4064229/svn-lock-branch – easel

उत्तर

7

आप एक निर्देशिका को लॉक नहीं कर सकते हैं। आप प्राधिकरण नियम बना सकते हैं जो निर्देशिकाओं तक पहुंच पहुंच को प्रतिबंधित कर देगा। यह आमतौर पर इस तरह की चीज कैसे की जाती है। आप प्री-प्रतिबद्ध हुक का भी उपयोग कर सकते हैं लेकिन मुझे लगता है कि सबवर्जन का ऑथज़ सबसे अच्छा है। यहाँ एक कड़ी है:

http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html

+0

क्या स्क्रिप्ट के माध्यम से इसे सेट करने और एथज़ फ़ाइल को संपादित किए बिना कोई तरीका है? मुझे आकस्मिक विलोपन से बचने के लिए अस्थायी रूप से एक निर्देशिका को ब्लॉक करने की आवश्यकता है (उदाहरण के लिए जब एक svn आरएम ऑपरेशन कर रहा हो)। – runlevel0

1

मैं हाल ही में एक समाधान http://www.noah.org/engineering/olden/svn_directory_lock.html

उस पोस्ट में विशेष अजगर स्क्रिप्ट overkill है से प्रेरित करके इस हल, लेकिन मैं के लिए पूर्व प्रतिबद्ध हुक में निम्नलिखित डाल मेरी repsoitory:

#!/bin/sh 

err() { echo ${1+"[email protected]"} 1>&2; } # stderr is sent to user 

REPOS="$1" 
TXN="$2" 

SVNLOOK=/usr/bin/svnlook 

# Make sure there is a log message. 
# 
$SVNLOOK log -t "$TXN" "$REPOS" | grep -q "[a-zA-Z0-9]" 
if [ $? -eq 1 ] 
then 
    err "ERROR: Must enter a log message for this commit!" 
    exit 1 
fi 

# Usage: locked_dir dir [transaction_id] 
locked_dir() 
{ 
    if [ -z "$2" ]; then _tid=""; else _tid="-t $2"; fi 
    $SVNLOOK propget $_tid "$REPOS" lock "$1" >/dev/null 2>&1 
    if [ $? -eq 0 ]; then echo true; else echo false; fi 
} 

for d in $($SVNLOOK dirs-changed -t "$TXN" "$REPOS") 
do 
    locked_before=$(locked_dir $d) 
    locked_tx=$(locked_dir $d "$TXN") 

    if [ $locked_before = $locked_tx -a $locked_tx = true ] 
    then 
    err "ERROR: Directory $d is locked. Delete lock before you commit." 
    exit 1 
    fi 
done 

# All checks passed, so allow the commit. 
exit 0 

तो अब, आप बस का उपयोग करें "SVN propset" और एक निर्देशिका है कि आप लॉक करना चाहते हैं के लिए एक "ताला" प्रॉपर्टी बनाने के लिए प्रतिबद्ध कर सकते हैं।

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