हम एक गैर मानक तोड़फोड़ respository कि हम Git कन्वर्ट करने के लिए करना चाहते हैं संभाल करने के लिए कैसे। समस्या यह है कि मुझे यह सुनिश्चित करने के लिए वास्तव में कहां से शुरू करना है कि हम पूरा इतिहास नहीं रखते हैं लेकिन पूरी गड़बड़ी के साथ खत्म नहीं होते हैं।अमानक तोड़फोड़ आयात Git को
हमारे भंडार में हमारे कंपनियों के उत्पाद सूट के लिए पिछले 6 वर्षों का इतिहास है और कई पुनर्गठन के माध्यम से चला गया है। सभी मामलों में हमारे पास कोर प्लेटफॉर्म कोड बेस है और फिर कई प्रोजेक्ट/प्लगइन्स हैं जो कोर प्लेटफॉर्म के शीर्ष पर विभिन्न तरीकों से गठबंधन करते हैं।
-- plugin1
- trunk
- branches
- tags
-- pluginX
- trunk
- branches
- tags
-- trunk (core platform)
- <various sub dirs)
-- branches (various feature branches of the entire repository)
- refactoring1
- refactoringX
-- tags (various tags of customer releases of full respository)
- customerX_1.x
-- vendor (vendor drops and tracking of 3rd party source deps)
- 3rd_party_code_A
- 3rd_party_code_X
समय के साथ हम एक जोड़े को जोड़ा अधिक निर्देशिकाओं सहित जड़ हैं:
-- releases (replaced tags; branches for released stable versions of repos)
-- sandbox (area for misc projects of interest; should have been new repo)
फिर हम इस साफ और साथ समाप्त हो गया
साल के पहले जोड़े की तरह संरचित किया गया था:
-- trunk
- platform
- plugin1
- pluginX
-- stable (stable release branches of trunk)
- 1.1
- 1.2
-- tags (release points; marks a point on a stable branch)
- 1.1.1
- 1.1.2
-- vendor
-- sandbox
-- releases (copies of old releases of interest)
तो यह हमारा इतिहास है। हम क्या खत्म करना चाहते हैं उम्मीद है कि बहुत साफ है। फिलहाल हम इस तरह दिखने वाले गिट रिपोजिटरी के आधार के बारे में सोच रहे हैं (मूल रूप से पिछले 'ट्रंक' निर्देशिका की एक प्रति)।
- platform
- plugin1
- pluginX
Branches:
- stable/1.1
- stable/1.2
Tags:
- rel/1.1.1
- rel/1.1.2
हम सैंडबॉक्स और विक्रेता को अपने स्वयं के भंडार में रखना चाहते हैं। (यह सुनिश्चित नहीं है कि यह कैसे करें, लेकिन हो सकता है कि केवल एक एसवीएन रिपोजिटरी का सबसेट आयात करने का कोई तरीका हो)
शाखाओं और टैग तक, हम चाहते हैं कि कोड 'स्थिर' से शाखाओं के रूप में समाप्त हो जाए, टैग के रूप में 'टैग' से कोड को स्थिर में टैग के रूप में समाप्त करने के लिए।
मूल संरचना से पुराने इतिहास के लिए, हम जितना संभव हो उतना इतिहास रखना चाहते हैं लेकिन नए भंडार को प्रदूषित नहीं करना चाहते हैं। उदाहरण के लिए यदि हम वापस देख सकते हैं और रिफैक्टरिंग शाखाओं पर हुए परिवर्तनों को देख सकते हैं जो बहुत अच्छे होंगे लेकिन बिल्कुल जरूरी नहीं हैं।
वर्तमान में हम बहस कर रहे हैं कि कैसे आगे बढ़ना है और कैसे एक साफ तरीके से पुनर्गठित और आयात किया जा सकता है। कम से कम हमें आवश्यकता है कि पिछले शीतकालीन पुनर्गठन दोनों में मंच और प्लगइन कोड का पूरा इतिहास हो। यदि संभव हो तो हम सबसे हालिया भंडार संरचना से स्थिर और टैग जानकारी भी प्राप्त करना चाहेंगे।
किसी को भी यह कैसे आयात आवश्यक कार्रवाई की अनुशंसाओं है?
उदाहरण के लिए:
- यह पुनर्गठन भर में पूरा इतिहास रखने के लिए संभव है?
- क्या हमें किसी भी तरह से आयात से पहले इसे साफ करने के लिए सबवर्सन रिपोजिटरी को फिर से लिखना चाहिए और यदि ऐसा है तो कैसे?
- क्या हमें पूरा इतिहास आयात करना चाहिए और फिर इसे गिट में पुन: व्यवस्थित करना चाहिए और ऐसा कैसे?
- इस आयात को साफ करने के तरीके के बारे में कोई विचार?
प्लगइन 1 और प्लगइनएक्स अनिवार्य रूप से अपने स्वयं के ट्रंक/शाखाओं/टैग के साथ स्टैंडअलोन रिपोज़ हैं, क्या यह सही है? – prusswan
इस प्रकार उन्होंने शुरुआत की लेकिन हमने पाया कि यह अच्छी तरह से काम नहीं कर रहा है क्योंकि कोड एक ही समय में बदलता है। तो हम दूसरी भंडार संरचना की तरफ चले गए। यह संरचना अब हमारे लिए बहुत अच्छी तरह से काम करती है और हम इसे गिट के साथ रखना चाहते हैं, बस इस बारे में चिंतित हैं कि इतिहास को सवारी के लिए कैसे रखा जाए। – Allen
पूर्ण इतिहास रखने के लिए, मुझे लगता है कि यह पता लगाने की बात है कि कौन सी शाखाओं को नक्शे पर नक्शा करना चाहिए, और बहुत धैर्य (गिट-एसवीएन क्लोनिंग में गहरे इतिहास के साथ svn के लिए बहुत लंबा समय लगता है)। अनिवार्य रूप से उन ट्रंक गिट शाखाएं बन जाएंगे (हालांकि आप उनमें से एक को ट्रंक/मास्टर होने के लिए नामित कर सकते हैं जो प्रभावी रूप से अभी भी एक शाखा है) – prusswan