मैं इनॉटिफाई इवेंट्स का उपयोग करके बदलावों के लिए फाइलें देख रहा हूं (जैसा कि यह होता है, पायथन से, लिबाक में कॉलिंग)।
एक के दौरान कुछ फ़ाइलों के लिए git clone, मुझे कुछ विषम दिखाई देता है: मुझे एक IN_CREATEघटना दिखाई देती है , और मैं देखता हूं lsकि फ़ाइल में सामग्री है, हालांकि, मैं कभी नहीं देखता IN_MODIFYया IN_CLOSE_WRITE। यह मेरे लिए समस्याएँ पैदा कर रहा है क्योंकि मैं IN_CLOSE_WRITEफ़ाइलों पर प्रतिक्रिया देना चाहूंगा : विशेष रूप से, फ़ाइल सामग्री के अपलोड को आरंभ करने के लिए।
अजीब तरह से व्यवहार करने वाली फाइलें .git/objects/packनिर्देशिका में हैं, और वे अंत में .packया .idx। अन्य फाइलें जो गिट बनाती हैं, वे अधिक नियमित होती हैं IN_CREATE-> IN_MODIFY-> IN_CLOSE_WRITEश्रृंखला (मैं IN_OPENघटनाओं के लिए नहीं देख रही हूं )।
यह मैकओएस पर डॉकटर के अंदर है, लेकिन मैंने रिमोट सिस्टम में लिनक्स पर डॉकटर पर उसी का सबूत देखा है, इसलिए मेरा संदेह मैकओएस पहलू प्रासंगिक नहीं है। अगर देख रहे हैं और मैं इस देख रहा हूँ git cloneमें हैं एक ही डोकर कंटेनर।
मेरे सवाल:
ये फाइलें इन घटनाओं को क्यों याद कर रही हैं?
इस विषय में क्या किया जा सकता है? विशेष रूप से, मैं इन फ़ाइलों को लिखने के पूरा होने पर कैसे प्रतिक्रिया दे सकता हूं? नोट: आदर्श रूप से मैं जवाब देना चाहूंगा जब लेखन "समाप्त" होता है तो अनावश्यक रूप से बचने के लिए "(गलत तरीके से)" अधूरा "लेखन अपलोड करना।
संपादित करें: https://developer.ibm.com/tutorials/l-inotify/ पढ़ना ऐसा लग रहा है कि मैं जो देख रहा हूं वह संगत है
- नाम के साथ एक अलग अस्थायी फ़ाइल,
tmp_pack_hBV4Alzबनाई जा रही है, संशोधित और, बंद; - इस फ़ाइल के लिए एक हार्ड लिंक बनाया गया है, अंतिम
.packनाम के साथ; - मूल
tmp_pack_hBV4Alzनाम हटा दिया गया है।
मुझे लगता है कि मेरी समस्या, जो फ़ाइलों को अपलोड करने के लिए एक ट्रिगर के रूप में उपयोग करने की कोशिश कर रही है, फिर यह नोट करना कम कर देता है कि .packफ़ाइल किसी अन्य फ़ाइल की कड़ी है, और इस मामले में अपलोड हो रही है?