यदि आप लिनक्स (या गिट बैश या सिगविन या इसी तरह) का उपयोग कर रहे हैं, तो पूर्व-प्रतिबद्ध हुक के लिए एक विकल्प, शेल हेल्पर फ़ंक्शन में git
को लपेटना है।
real_git=$(which git)
function git {
if [[ ($1 == svn) && ($2 == dcommit) ]]
then
curr_branch=$($real_git branch | sed -n 's/\* //p')
if [[ ($curr_branch != master) && ($curr_branch != '(no branch)') ]]
then
echo "Committing from $curr_branch; are you sure? [y/N]"
read resp
if [[ ($resp != y) && ($resp != Y) ]]
then
return 2
fi
fi
fi
$real_git "[email protected]"
}
(मैं पार्टी और रेड हैट पर zsh के साथ इस परीक्षण किया है: या ~/.zshrc
(zsh के लिए) फ़ाइल, या जो कुछ भी बराबर अपने खोल के लिए है (bash, Git बैश के लिए) अपने ~/.bashrc
लिए नीचे दिए गए जोड़ें , और सिगविन पर बैश)
जब भी आप git
पर कॉल करते हैं, तो आप अब सामान्य बाइनरी के बजाय इस फ़ंक्शन को कॉल करेंगे। फ़ंक्शन सामान्य रूप से गिट चलाएगा, जब तक कि आप मास्टर नहीं हैं, तब तक git svn dcommit
पर कॉल करते समय। उस स्थिति में, यह आपको प्रतिबद्ध करने से पहले पुष्टि करने के लिए संकेत देगा। आप git
को स्पष्ट रूप से पथ निर्दिष्ट करके फ़ंक्शन को ओवरराइड कर सकते हैं (यही वह है जो $real_git
कर रहा है)।
याद रखें कि ~/.bashrc
या समकक्ष अद्यतन करने के बाद, आपको एक नया खोल सत्र (लॉग आउट करना और फिर से लॉग इन करना) या source ~/.bashrc
चलाकर इसे फिर से लोड करना होगा।
संपादित: एक वृद्धि के रूप में, आप पहली पंक्ति को हटा सकते हैं, real_git=
शुरू करने, और command git
है, जो एक ही बात को प्राप्त होता है के साथ लेकिन पसंदीदा तरीका में $real_git
के अन्य उदाहरण की जगह। मैंने स्क्रिप्ट को स्वयं अपडेट नहीं किया है क्योंकि मैं zsh पर परिवर्तन का परीक्षण करने में सक्षम नहीं हूं।
स्रोत
2012-02-17 14:52:34
नहीं निर्मित लेकिन एक विचार: जैसे ही आप शाखा, एक 'Git config --rename अनुभाग" SVN-remote.svn कर के रूप में "" नो-एसवीएन-रिमोट "'। एक बार जब आप डॉकिट करना चाहते हैं, तो आप इसे वापस कर सकते हैं। – vasquez
या शायद मैं किसी भी तरह से निर्दिष्ट कर सकता हूं कि इस स्थानीय शाखा के लिए कोई अपस्ट्रीम शाखा नहीं है? क्या आप जानते हैं कि मैं यह कैसे कर सकता हूं? – greg0ire
मैंने शोध किया कि आपके प्रश्न के प्रकाश में, लेकिन ऐसा लगता है कि गिट svn को स्थानीय शाखा स्विच नहीं मिलता है, इसलिए ऐसा लगता है कि यह अभी भी ट्रंक या चेकआउट आउट शाखा/टैग पर है। यह जांचने के लिए कॉन्फ़िगरेशन फ़ाइल में डिफ़ॉल्ट शाखा रेखा को बदलने का प्रयास करने योग्य हो सकता है। – vasquez