मैनुअल अभिलेखागार के एक सेट से गिट रिपॉजिटरी का निर्माण


1

मैं एक ऐसे एप्लिकेशन के साथ काम कर रहा हूं जो एक उचित सामग्री प्रबंधन प्रणाली के बिना बनाया गया है। इसके बजाय, स्रोत फ़ाइलों को एक ज़िप संग्रह में सहेजा गया है और हर बार एक नया संस्करण जारी किए जाने पर बैकअप लिया जाता है।

समय के साथ बदलावों की एक उचित तस्वीर पाने के लिए मैं इस परियोजना को एक गिट रिपॉजिटरी में शामिल करना चाहता हूं, लेकिन मैं स्पष्ट हूं कि यह कैसे किया जाए क्योंकि मैंने कभी भी केवल नए नए गिट रिपोजिटरी बनाए हैं या मौजूदा के साथ काम किया है लोगों को।

केवल सबसे हाल के संग्रह से एक भंडार बनाना और वहां से काम करना सरल होगा, लेकिन मैं परिवर्तनों का इतिहास कैसे शामिल करूं?

जवाबों:


3

केवल सबसे हाल के संग्रह से एक भंडार बनाना और वहां से काम करना सरल होगा, लेकिन मैं परिवर्तनों का इतिहास कैसे शामिल करूं?

बहुत आसान। कोडबेस एक ज़िप संग्रह से दूसरे में कैसे साफ होता है, इस पर निर्भर करने के दो तरीके हैं: संचयी अनज़िप कमिट या प्रत्येक कमिट के बाद क्लीन अप

संचयी अनज़िप कमिट: अनज़िप, कमिट, अनज़िप अन्य, कमिटेड अनदर, आदि ...

इसका समाधान यह है कि सबसे पहले पुराने संग्रह के आधार पर एक git रिपॉजिटरी बनाएं, इसे कमिट करें, फिर बाद में / उत्तरोत्तर-नया सामान जोड़ें, जो कि और इसी तरह से और इसी तरह। तो उदाहरण के लिए, मान लें कि आपके पास तीन अभिलेख हैं जिनका नाम इस प्रकार है:

  • archive_20150801.zip
  • archive_20150804.zip
  • archive_20150806.zip

अब मैं अनज़िप करके शुरू करूंगा archive_20150801.zipऔर उसके आधार पर प्रारंभिक गिट रिपॉजिटरी बनाऊंगा । फिर मैं unZIP archive_20150804.zipऔर ड्रैग / कॉपी-या बस unZIP जगह में कर दूंगा - ताकि सामान पुराने archive_20150801.zipऔर इतने पर ओवरराइट हो जाए। के साथ डिट्टो archive_20150806.zip

हर कमिट के बाद साफ करें: अनज़िप, कमिट, डिलीट, अनज़िप दूसरे, कमिटेड अनदर, डिलीट अदर, आदि…

लेकिन अगर आप प्रत्येक ज़िप संग्रह में पुरानी फ़ाइलों के साथ नई फ़ाइलों के अपने विलय में अतिरिक्त सटीक होना चाहते हैं, तो मैं यह करने की सलाह दूंगा:

  1. किसी संग्रह को अनज़िप करें और उसे कमिट करें।
  2. तब प्रतिबद्ध के बाद कि किया जाता है, manually- नहीं के माध्यम से git rm-निकालें सभी निर्देशिका कि रेपो शामिल से फाइल। सुनिश्चित करें कि गिट-विशिष्ट सामान को न निकालें .git, .gitignoreऔर ऐसे।
  3. उस काम के साथ — और जगह में एक अपेक्षाकृत खाली निर्देशिका - अगले संग्रह को अनज़िप करें और इसे सामग्री को रिपॉजिटरी डायरेक्टरी में रखें।
  4. अब नई फ़ाइलों के साथ git add -Aएक नया काम करते हैं।
  5. उस के साथ, अगले ज़िप संग्रह के लिए एक चरण पर वापस जाएं जिसे आप मिश्रण में जोड़ना चाहते हैं।

उस "कमिट स्टफ, डिलीट स्टफ्स, न्यू स्टफ्स, न्यू स्टफ्स को कमिट करें" का लाभ यह है कि आप आवारा फाइलों के साथ समाप्त नहीं होंगे जो कि केवल अंतिम रिपॉजिटरी में कोड के शुरुआती संस्करण में मौजूद हो सकते हैं। प्रत्येक कमिट में जिप का एक शुद्ध प्रतिबिंब होता है और फाइलों और निर्देशिकाओं का संचयी ढेर नहीं होता है जो एक दूसरे के ऊपर विस्तारित होते हैं।

कमिट डेट्स को सीधा रखना

दिनांक / समय के इतिहास के कुछ झलक रखने के लिए, आप कुछ फैंसी फुटवर्क कर सकते हैं और वास्तविक संग्रह के लिए वास्तविक स्टैट ओवरफ्लो उत्तर में बताए अनुसार वास्तविक संग्रह तिथियों को लागू करने के लिए प्रतिबद्ध कर सकते हैं । लेकिन मुझे व्यक्तिगत रूप से लगता है कि अति जटिल और जोखिम-भरा है; मैं इस तरह के कार्यों को यथासंभव सरल रखना पसंद करता हूं। इसके बजाय मैं एक प्रतिबद्ध संदेश दूंगा जो स्पष्ट रूप से बताता है कि प्रत्येक प्रतिबद्ध क्या है:

2015-08-01 ज़िप रिलीज़ संग्रह के लिए प्रतिबद्ध।

इस तरह आप आसानी से यह जान सकते हैं कि भविष्य में संग्रह का स्रोत क्या है, केवल टिप्पणी टिप्पणी इतिहास ब्राउज़ करके।

मैंने अपने आप को इस पुराने स्कूल के माध्यम से प्रबंधित पुराने अभिलेखागार के लिए किया है, "कॉपी-द-डायरेक्टरी-एंड-ए-अन-अनेजेड-जिप-आर्काइव" विधि और यह एक दर्द है, लेकिन यह लंबे समय तक मदद करता है एक परियोजना के लिए एक कोडिंग इतिहास के कुछ झलक को बनाए रखें।


मैं बस एक जवाब पोस्ट के बारे में बहुत ज्यादा एक ही बात कह रहा था। यदि आप इसे एक कदम आगे ले जाना चाहते हैं तो आप प्रत्येक कमेटी के लिए प्रतिबद्ध तारीख को भी संशोधित कर सकते हैं।
Gene

@ उस तारीख परिवर्तन टिप के लिंक के लिए धन्यवाद। मैं व्यक्तिगत रूप से ऐसा कुछ कर रहा हूं कि कम से कम कहने के लिए ओवरकिल का एक सा हो। मुझे यह आसान लगता है जब "ऐतिहासिक" अभिलेखागार के साथ इस तरह से व्यवहार करना केवल इसे सरल रखने के लिए और प्रतिबद्ध संदेश को सामग्री को व्यक्त करने दें।
जेकगोल्ड

धन्यवाद। मुझे उम्मीद है कि मैं काम करूंगा। लेकिन मैं फ़ाइलों के निर्माण, विलोपन और नामकरण से कैसे निपटूं? क्या मुझे उस बदलाव की जाँच स्वयं करनी होगी या क्या मुझे उससे add -Aपहले करना चाहिए commit?
बोरोडिन

@ बोरोडिन हां, सिर्फ git add -Aकमिट से पहले इस्तेमाल करें । और अगर आप प्रक्रिया के बारे में अतिरिक्त साफ होना चाहते हैं, तो आप मैन्युअल रूप से कर सकते हैं- git के माध्यम से नहीं - कमिट या परिवर्धन के बीच सभी फ़ाइलों को मिटा दें। मैंने अपने उत्तर को यह समझाने के लिए संपादित किया है कि इसे कैसे संभालें यदि आपको लगता है कि यह एक बेहतर तरीका है।
जेकगोल्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.