मैं संज्ञानात्मक तंत्रिका विज्ञान (एक मालिकाना भाषा में) में एक प्रयोग में उत्तेजना प्रस्तुति के लिए स्क्रिप्ट विकसित कर रहा हूं। इन लिपियों को 'डिप्लॉय करने' का मतलब बस उन्हें एक प्रयोगशाला में विंडोज 7 मशीन के डेस्कटॉप पर कॉपी करना है, जहां से विभिन्न प्रयोगकर्ता उन्हें लॉन्च कर सकते हैं। यह मशीन एक वीपीएन के अंदर रहती है और इंटरनेट से कनेक्ट हो सकती है, लेकिन यह हमेशा चालू नहीं होती है और केवल अनियमित अंतराल पर चालू होती है और विभिन्न उपयोगकर्ता खातों द्वारा लॉग इन की जाती है। मेरे पास इस पर व्यवस्थापक अधिकार हैं, प्रति सप्ताह केवल दो बार भौतिक पहुंच।
मैं git + github का उपयोग करना चाहूंगा लेकिन सोच रहा हूं कि इस तरह के वर्कफ़्लो में 'तैनाती' को कैसे लागू किया जाए। एक विचार यह होगा कि 'प्रोडक्शन' मशीन पर गिट स्थापित करें और हर टास्क / नियमित रूप से मास्टर ब्रांच के 'गिट पुल' के लिए विंडो टास्क शेड्यूलर का उपयोग करें। यह मशीन के वर्तमान उपयोगकर्ता (कोई यूएसी प्रॉम्प्ट या संभावित त्रुटि पॉपअप) के लिए अदृश्य नहीं होगा और सिस्टम प्रदर्शन को प्रभावित नहीं करेगा; महत्वपूर्ण रूप से, यदि मेरा प्रयोग वर्तमान में चल रहा है, तो फ़ाइलों को स्पर्श नहीं किया जाना चाहिए। अगर यह व्यवहार्य है, तो यह जानकारी के रूप में गिट इतिहास में दिखाई देने वाली खींचतान को बेहतर बनाने के लिए क्या एक अच्छा तरीका होगा, जिसमें यह जानकारी भी शामिल है कि क्या कोई बदलाव खींचा गया था? अनुक्रम इस तरह होगा:
changes to develop branch -> merge develop into master (maybe tag it with a version number) -> time goes by -> 'production' machine does a git pull
अगली बार जब प्रयोग किया जाएगा, तो इस संस्करण के परिवर्तन प्रभावी होंगे।
इसका मतलब यह होगा कि कभी-कभी मास्टर शाखा के टैग किए गए संस्करण होते हैं जो इसे उत्पादन मशीन पर कभी नहीं बनाते हैं क्योंकि मैंने उत्पादन मशीन को फिर से चालू करने से पहले एक नए संस्करण को धक्का दिया था।
git pull
, आप एक सरल "लॉन्च" प्रोग्राम बना सकते हैं जो सबसे हालिया प्रयोग को खींचता है और फिर इसे लॉन्च करता है।