मैं एक अद्यतन स्क्रिप्ट लिखने की प्रक्रिया हूं, जो कई रिपॉजिटरीज़ का नवीनतम संस्करण खींचता है, और परियोजनाओं का पुनर्निर्माण करता है। मैं निर्माण सशर्त बनाना चाहते थे, इसलिए मैंMercurial: जांचें कि आखिरी पुल/अपडेट में बदलाव हुए बदलाव
hg pull -u && ant clean build
और विभिन्नता
hg pull; hg update && ant clean build
हालांकि, चींटी निर्माण हमेशा शुरू हो जाती है की कोशिश की, तब भी जब कुछ भी नहीं बदला है। मुझे पता है कि खींचने से पहले परिवर्तनों की जांच के लिए मैं hg incoming
का उपयोग कर सकता हूं, लेकिन यह मेरे लिए अपर्याप्त लगता है।
मैं दो बार सर्वर से संपर्क किए बिना नए बदलावों की जांच कैसे कर सकता हूं (एक बार hg incoming
के लिए, एक बार hg pull
के लिए)?
अद्यतन: यह अब अपने निर्माण स्क्रिप्ट है:
update() {
TIP=$(hg tip --template "{node"})
hg pull -u
if test "$TIP" != $(hg tip --template "{node}"); then
ant clean build
fi
}
(cd repo1; update)
(cd repo2; update)
और सोच कारण है कि मैं एक साफ निर्माण हर बार करते हैं, उसके लिए दो कारण हैं लोगों के लिए:
- खजाने एक-दूसरे पर निर्भर करते हैं, और जब उनमें से एक में एपीआई बदलती है, तो मुझे उन जगहों को खोजने के लिए एक पूर्ण पुनर्निर्माण करने की आवश्यकता होती है जहां इन एपीआई ब्रेक कोड
- जावा कंपाइलर इनलाइनों को भी रेखांकित करता है अन्य वर्ग फाइलें। अब, जब मैं कक्षा में एक स्थिर क्षेत्र को फिर से बदलता हूं जो बदल सकता है, तो उस निरंतर उपयोग की जाने वाली सभी अन्य क्लास फाइलें निर्माण द्वारा छूटे रहती हैं, और इससे सूक्ष्म बग हो सकती हैं जिन्हें मैं टालना चाहता हूं।
उचित बिल्ड सिस्टम नहीं होना चाहिए, पढ़ना: चींटी नहीं, वृद्धिशील बिल्ड करने में सक्षम हो? – jmg
चींटी वृद्धिशील बिल्ड कर सकती है, लेकिन मैं सूक्ष्म बग से बचना चाहता हूं, इसलिए मैं हर बार एक साफ निर्माण करता हूं। –
तो कैसे अपने स्वयं के वृद्धिशील निर्माण रोलिंग सूक्ष्म बग से बचने में मदद करते हैं? –