2012-03-06 13 views
16

मैं अस्थिर changegroup हुक लिखने की प्रक्रिया में हूँ परीक्षण करने के लिए जिस तरह से। मेरे पास अभी तक सब कुछ पता नहीं है, लेकिन परीक्षण और त्रुटि की प्रक्रिया को इस तथ्य से और अधिक दर्दनाक बना दिया गया है कि मुझे अपने काम को प्रगति पर परीक्षण करने के लिए प्रतिबद्ध और धक्का देना है।आसान, दर्द रहित नई तेज हुक (जो प्रगति पर काम करता है कर रहे हैं)

वहाँ 'झूठे' एक ट्रिगर भंडार की वर्तमान स्थिति के साथ अपने changegroup हुक पर अमल करने के लिए किसी भी तरह से यह पैरामीटर है के लिए प्रयोग की जाने वाली है?

इस प्रक्रिया को कारगर बनाने के लिए किसी भी मदद की बहुत सराहना की जाएगी। धन्यवाद निक

उत्तर

18

मुझे डर है कि इसके लिए कोई अंतर्निहित डीबगिंग क्षमता नहीं है।

$ hg init repo 
$ hg clone repo clone 

और फिर repo में changegroup हुक कॉन्फ़िगर करें: मैं क्या जब एक हुक लिख सेटअप करने के लिए दो स्थानीय खजाने है। अब clone में जाने और सेटअप clone को

$ echo a > a 
$ hg add a 
$ hg commit -m 'a file' 

है। हर बार जब मैं हुक जाँच करना चाहते हैं, मैं

$ hg push; hg -R ../repo rollback 

clone अंदर चलाते हैं। मैं रखना है कि मेरे आदेश पंक्ति के इतिहास में इतना है कि मैं सिर्फ + वापसी यह बार-बार निष्पादित करने के लिए दबा सकते हैं। hg rollback कुंजी है: प्रभावी रूप से hg push को रद्द कर देती है ताकि मैं इसे बार-बार दोहरा सकूं।

आप निश्चित रूप से इस समायोजित करने के लिए के रूप में अपने हुक के लिए आवश्यक आवश्यकता होगी। यदि हुक कमिटर नाम की जांच करता है, तो इसे आवश्यकतानुसार सेट करने के लिए hg commit -u someone का उपयोग करें। यदि हुक को चेंज ग्रुप में एक से अधिक परिवर्तनों की आवश्यकता है, तो पुश करने से पहले दो या दो से अधिक काम करें - रोलबैक सभी धक्का वाले परिवर्तनों को हटाने का ख्याल रखेगा। हुक hgweb द्वारा चलाया जाता है, तो एक टर्मिनल में चलाया

$ hg serve --config 'web.push_ssl=no' --config 'web.allow_push=*' 

repo सेवा करने के लिए जब आप किसी अन्य टर्मिनल में इसे करने के लिए धक्का।

+0

धन्यवाद, यह जिस तरह से मैं कई तरीकों से इसके बारे में जा रहा था उसे सरल बना रहा हूं! :) –

6

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

from mercurial import ui, hg 
repo = hg.repository(ui.ui(), '.') 
execfile('./myhook.py') 
myhook(repo.ui, repo, 'hash', 'outgoing') 

कहाँ myhook अपने हुक समारोह (myhook.py में स्थित) है, hash changeset आप के साथ अपने हुक परीक्षण करना चाहते हैं के हैश है, और outgoing हुक प्रकार है।

यदि आपका हुक अपेक्षित व्यवहार नहीं करता है तो आप अपनी स्क्रिप्ट को संशोधित कर सकते हैं और पुनः प्रयास करने के लिए अंतिम दो पंक्तियों को फिर से निष्पादित कर सकते हैं।