मैं एक होस्ट निरंतर एकीकरण कंपनी चलाता हूं , और हम लिनक्स पर अपने ग्राहकों का कोड चलाते हैं। हर बार जब हम कोड चलाते हैं, तो हम इसे एक अलग वर्चुअल मशीन में चलाते हैं। एक लगातार समस्या यह उठती है कि वीएम पर चेक किए गए उनके कोड के निर्देशिका ऑर्डर के कारण कभी-कभी एक ग्राहक के परीक्षण विफल हो जाएंगे।
मुझे और विस्तार में जाने दो। OSX पर, HFS + फ़ाइल सिस्टम यह सुनिश्चित करता है कि निर्देशिका हमेशा एक ही क्रम में ट्रैवर्स की गई हो। OSX का उपयोग करने वाले प्रोग्रामर यह मानते हैं कि यदि यह उनके मशीन पर काम करता है, तो इसे हर जगह काम करना चाहिए। लेकिन यह अक्सर लिनक्स पर काम नहीं करता है, क्योंकि लिनक्स फ़ाइल सिस्टम निर्देशिकाओं के ट्रैवर्सिंग के दौरान ऑर्डर की गारंटी नहीं देता है।
एक उदाहरण के रूप में, विचार करें कि 2 फाइलें हैं, a.rb, b.rb। a.rb को परिभाषित करता है MyObject
, और b.rb का उपयोग करता है MyObject
। यदि a.rb को पहले लोड किया जाता है, तो सब कुछ काम करेगा। यदि b.rb को पहले लोड किया जाता है, तो यह अपरिभाषित चर तक पहुंचने का प्रयास करेगा MyObject
, और विफल हो जाएगा।
लेकिन इससे भी बदतर यह है कि यह हमेशा विफल नहीं होता है। क्योंकि लिनक्स पर फ़ाइल सिस्टम ऑर्डर करने का आदेश नहीं दिया गया है, इसलिए यह विभिन्न मशीनों पर एक अलग ऑर्डर होगा। यह बदतर है क्योंकि कभी-कभी परीक्षण पास हो जाते हैं, और कभी-कभी वे असफल हो जाते हैं। यह सबसे खराब संभव परिणाम है।
तो मेरा सवाल यह है कि क्या फाइल सिस्टम को रिपीटेबल बनाने का कोई तरीका है। कुछ ध्वज ext4 के लिए शायद, कहते हैं कि यह हमेशा कुछ क्रम में निर्देशिकाओं को पार करेगा? या शायद एक अलग फ़ाइल सिस्टम है जिसमें यह गारंटी है?