2011-01-22 11 views
6

क्या Mercurial में कोई मौजूदा हुक है, जो परिवर्तन समूह की तरह, धक्का पर क्रियाएं करने की अनुमति देता है, लेकिन मुझे कई कार्रवाइयों (या उन्हें अलग करने) की अनुमति देता है, जिसके आधार पर शाखाएं प्रभावित होती हैं इसमें परिवर्तन?Mercurial Changegroup हुक शाखाओं के आधार पर भिन्न होता है

उदाहरण के लिए, जब पुश बनाया जाता है तो मुझे एक यूआरएल में श्रोता को सूचित करने की आवश्यकता होती है लेकिन आदर्श रूप से यह विभिन्न यूआरएल को सूचित करेगा कि किस शाखा को केवल उन्हें कंबल किए बिना प्रभावित किया जाता है।

उत्तर

7

कोई शाखा-specfic हुक नहीं हैं, लेकिन आप हुक में यह तर्क कर सकते हैं। अपने hgrc में उदाहरण के लिए:

[hooks] 
changeset = actions-by-branch.sh 

और उसके बाद में अपने actions-by-branch.sh तुम क्या चाहते हैं:

#!/bin/bash 
BRANCH=$(hg log --template '{branch}' -r $HG_NODE) 
BRANCH=${BRANCH:-default} # set value to 'default' if it was empty 

if [ "$BRANCH" == "default" ] ; then 
    do something 
elif [ "$BRANCH" == "release" ] ; then 
    do something else 
else 
    do a different thing 
fi 

सूचना है कि मैं changegroup हुक एक changeset के बजाय इस्तेमाल किया। एक एकल परिवर्तन समूह में कई शाखाओं में परिवर्तन हो सकते हैं, जो तर्क को जटिल बनाते हैं। यदि आप उस मार्ग पर जाने का निर्णय लेते हैं तो आपको परिवर्तन समूह में प्रत्येक परिवर्तन पर कार्य करने के लिए से tip तक लूप की आवश्यकता है।

+1

मुझे लगता है कि '$ {शाखा: = डिफ़ॉल्ट}' 'BRANCH = $ {BRANCH: = default} होना चाहिए। – palacsint

+0

यह लिखित के रूप में काम करता है। बैश मैन पेज से "$ {पैरामीटर: = शब्द} डिफ़ॉल्ट मान असाइन करें। यदि पैरामीटर अनसेट या शून्य है, तो शब्द का विस्तार पैरामीटर को असाइन किया गया है। Param- eter का मान प्रतिस्थापित किया गया है। स्थितित्मक पैरामीटर और विशेष पैरामीटर इस तरह से असाइन नहीं किए जा सकते हैं। " अगर हम अधिक वर्बोज असाइनमेंट स्टेटमेंट चाहते थे तो हम ': =' के बजाय ': -' का उपयोग करेंगे। –

+1

ठीक है, मैंने समस्या का पता लगाया है। बैश कमांड के रूप में '$ BRANCH' के मान को चलाने का प्रयास करता है। यही कारण है कि मुझे एक 'mybranchname: आदेश नहीं मिला' त्रुटि संदेश मिला। इसलिए, आपको या तो इस त्रुटि से बचने के लिए असाइनमेंट की आवश्यकता है या बैश नो-ऑप (': $ {BRANCH: = default} ') का उपयोग करें। – palacsint

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