bisect
कमांड आपको एक बग पेश करने वाले परिवर्तन को खोजने में मदद करता है। यह अक्सर होता है कि आप महसूस करते हैं कि कुछ टूटा हुआ है और यह थोड़ी देर के लिए टूट गया है। hg bisect
के साथ, आप यह समझ सकते हैं कि यह कब टूट गया था। जब आप इसे जानते हैं, तो समस्या को ठीक करने के लिए अक्सर अधिक आसान होता है।
यह इस तरह काम करता है। आप द्विविभाजित राज्य को रीसेट और बुरे के रूप में वर्तमान संशोधन चिह्नित करके शुरू के बाद से यह बग शामिल हैं:
$ hg bisect --reset
$ hg bisect --bad
फिर आप एक बिंदु है जहां आप बग आशा को इतिहास में वापस कूद मौजूद नहीं है:
$ hg update -r -100
89 files updated, 0 files merged, 30 files removed, 0 files unresolved
आप इस संशोधन पर अपने सॉफ्टवेयर का परीक्षण करने के लिए है और यदि बग मौजूद नहीं है, तो आप इसे चिह्नित कर सकते हैं के रूप में अच्छा:
$ hg bisect --good
Testing changeset 11964:79bd860b8eb7 (81 changesets remaining, ~6 tests)
36 files updated, 0 files merged, 22 files removed, 0 files unresolved
जब आप इसे के रूप में अच्छा के रूप में चिह्नित, मर्क्युरियल अपने काम को अपडेट किया है अच्छे और बुरे बदलावों के बीच बीच में मोटे तौर पर एक जगह पर प्रतिलिपि बनाएँ। अब आपको इस बदलाव का परीक्षण करना होगा और इसे अच्छे/बुरे चिह्नित करना होगा।
$ hg bisect --good
Testing changeset 11985:81edef14922e (41 changesets remaining, ~5 tests)
23 files updated, 0 files merged, 26 files removed, 0 files unresolved
मैं इस तरह जारी रखने के लिए जब तक मर्क्युरियल एक भी changeset के लिए खोज को संकुचित होता है:
$ hg bisect --bad
Testing changeset 11975:21884b433c51 (20 changesets remaining, ~4 tests)
18 files updated, 0 files merged, 8 files removed, 0 files unresolved
$ hg bisect --good
Testing changeset 11980:c443e95d295b (10 changesets remaining, ~3 tests)
5 files updated, 0 files merged, 10 files removed, 0 files unresolved
$ hg bisect --good
Testing changeset 11982:56d9b73487ff (5 changesets remaining, ~2 tests)
2 files updated, 0 files merged, 4 files removed, 0 files unresolved
$ hg bisect --bad
Testing changeset 11981:518b90d66fad (2 changesets remaining, ~1 tests)
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg bisect --bad
The first bad revision is:
changeset: 11981:518b90d66fad
user: Pradeepkumar Gayam <[email protected]>
date: Wed Aug 18 05:55:56 2010 +0530
summary: tests: unify test-merge8
आप अभी भी अपने आप डीबगिंग, लेकिन hg bisect
का उपयोग कर ऐसा करने के लिए जो changesets का ट्रैक रखने से बचाता है आप पहले से ही परीक्षण कर चुके हैं और जिन्हें आपको अभी भी परीक्षण करने की आवश्यकता है। आप इसके लिए पोस्ट-नोट्स का एक समूह का उपयोग कर सकते हैं, लेकिन Mercurial इसे करने के लिए यह बहुत अच्छा है। यह विशेष रूप से सच है जब परिवर्तन ग्राफ एक विलय की वजह से गैर-रैखिक है।
तो सभी में, hg bisect
आपको लॉगरिदमिक समय में एक दोषपूर्ण परिवर्तन की खोज करने में मदद करता है, बिना किसी खोज के जहां आप खोज में हैं।
एक संशोधन का परीक्षण करने के लिए एक स्क्रिप्ट लिखने में सक्षम होने के लिए, मुझे यह पता लगाना होगा कि बग कहां है और इसका परीक्षण करें। जहां तक तारीखें हैं, मैं बता सकता हूं कि मैंने 7/1 पर कुछ किया है और इसे 7/15 को हमारे उत्पादन माहौल में जारी किया गया था और मुझे डेटाफिक्स करना है, मुझे पता है कि मुझे केवल 7 से अधिक डेटा के साथ काम करना है/15। वह सारी जानकारी एनोटेशन में उपलब्ध है, इसलिए मुझे यकीन नहीं है कि बिसेक्ट कैसे मदद करता है। –
यह आपके जैसा ही है, आपको यह पता लगाना होगा कि बग कहां है। बिसेक्ट उस के साथ मदद करता है। यदि आप जानते हैं कि 7/15 से पहले कुछ भी अच्छा है तो आपको अभी भी उस बदलाव को ढूंढना होगा जिसने 7/15 के बाद बग का कारण बना दिया है। यह बिल्कुल ठीक है कि किसके लिए अच्छा है। आप इसे 7/15 पर परिवर्तन देते हैं जो आपको पता है कि अच्छा है और वह सिर जो विफल रहता है और यह आपको अपराधी को खोजने के लिए जल्दी से बाइनरी खोज करता है। –