यह प्रश्न संबंधित से संबंधित प्रश्नों के लिए है: https://stackoverflow.com/search?q=[git]+%2Bassume-unchanged, हालांकि, इन सवालों के दिए गए उत्तरों में से कोई भी मेरी आवश्यकताओं को पूरा नहीं कर रहा है।क्या .gitignore संस्करण नियंत्रित फ़ाइलों के बराबर है?
मेरे पास एक हेडर फ़ाइल (key_info.h) है जो एक पायथन स्क्रिप्ट द्वारा उत्पन्न होती है। चतुर होने के लिए, मैं संस्करण हैडर (key_info.h) की एक प्लेसहोल्डर संस्करण नियंत्रित कोड की एक लाइन के साथ:
int i = you_need_to_run_the_key_info_gen_python_script_to_generate_this_file();
पहले अजगर स्क्रिप्ट चलाने, इस कोड संकलन बिल्कुल डेवलपर कह एक त्रुटि निकलेगा को क्या करें; स्क्रिप्ट चलाओ।
स्वाभाविक रूप से, डेवलपर key_info.h का नवीनतम संस्करण उत्पन्न करने के लिए पायथन स्क्रिप्ट चलाकर आगे बढ़ेगा और कोड सफलतापूर्वक संकलित होगा। डेवलपर फिर बदलावों की एक श्रृंखला बनाने के लिए आगे बढ़ेगा और फिर उनके कोड को 'गिट प्रतिबद्ध' करेगा।
हम जिस समस्या को चलाते हैं वह यह तथ्य है कि key_info.h अब संशोधित किया गया है। इस प्रकार, गिट इसे एक संशोधन के रूप में उठाएगा और इसे प्रतिबद्ध करने की अनुमति देगा। हालांकि, इस हेडर के जेनरेट किए गए संस्करण को संस्करण नियंत्रित नहीं किया जाना चाहिए। डेवलपर्स को संकलन त्रुटि संकेत प्रदान करने के लिए हमें अपरिवर्तित रहने के लिए प्लेसहोल्डर संस्करण की आवश्यकता है।
मेरी पहली प्रवृत्ति गिट को key_info.h को एक प्रतिबद्धता में लेने से रोकने के लिए .gitignore का उपयोग करना था। .gitignore तब डेवलपर्स के बीच आसानी से साझा किया जाता है .gitignore स्वयं संस्करण नियंत्रित है। दुर्भाग्यवश, .gitignore केवल उन फ़ाइलों के लिए काम करता है जो संस्करण नियंत्रित नहीं हैं।
मेरा अगला विचार 'गिट अपडेट-इंडेक्स --assume-unchanged/path/to/file' का उपयोग करना था। यह स्थानीय स्तर पर बहुत अच्छा काम करता है, लेकिन मेरे पास अन्य डेवलपर्स पर इस नियम को लागू करने का कोई तरीका नहीं है। देवता गलती से जेनरेट किए गए हेडर को करने से पहले ही समय की बात है।
तो मेरा प्रश्न यह है: संस्करण को नियंत्रित करने का कोई तरीका है, जबकि चुपचाप एक नियम लागू करना है कि परिवर्तन करने का समय आने पर फ़ाइल को अनदेखा किया जाना चाहिए? मैं वास्तव में क्या चाहता हूं संस्करण संस्करण फ़ाइलों के लिए gitignore है।
मैं टेम्पलेट फ़ाइल को टेम्पलेट फ़ाइल का नाम बदलकर जेनरेट की गई फ़ाइल से अलग करने की अनुशंसा करता हूं। फिर एक असुरक्षित निर्माण एक लापता फ़ाइल (जो, कुछ काम के साथ, अब आपके पास समान कार्य करने के लिए किया जा सकता है) के कारण विफल हो जाएगा, लेकिन फ़ाइल की उपस्थिति को आपके संस्करण नियंत्रण प्रणाली द्वारा पूरी तरह से अनदेखा किया जा सकता है, क्योंकि जेनरेट की गई फ़ाइल में टेम्पलेट से एक अलग और अलग फ़ाइल नाम होगा। – twalberg