मैं इनॉटिफाई इवेंट्स का उपयोग करके बदलावों के लिए फाइलें देख रहा हूं (जैसा कि यह होता है, पायथन से, लिबाक में कॉलिंग)।
एक के दौरान कुछ फ़ाइलों के लिए 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
फ़ाइल किसी अन्य फ़ाइल की कड़ी है, और इस मामले में अपलोड हो रही है?