आप स्पष्ट रूप से ध्यान देने योग्य है कि तुम क्या जब तुम शब्द का उपयोग के बारे में बात कर रहे हैं सावधान रहना चाहिए 'सबट्री' के संदर्भ में git
वहाँ के रूप में वास्तव में दो अलग-अलग लेकिन संबंधित विषयों यहाँ हैं:
git-subtree और git सबट्री मर्ज रणनीति ।
टीएल, डॉ
दोनों उप-संबंधित अवधारणाएं प्रभावी रूप से आपको एक में कई रिपॉजिटरी का प्रबंधन करने की अनुमति देती हैं। Git-submodule के विपरीत जहां केवल मेटाडेटा को। Repmodules के रूप में रूट रिपॉजिटरी में संग्रहीत किया जाता है , और आपको बाहरी रिपॉजिटरी को अलग से प्रबंधित करना होगा।
अधिक जानकारी
git सबट्री मर्ज की रणनीति मूल रूप से आपके द्वारा संदर्भित आदेशों का उपयोग करके अधिक मैन्युअल विधि है।
git-subtree एक अधिक प्राकृतिक वाक्य रचना की सुविधा के लिए एक आवरण खोल स्क्रिप्ट है। यह वास्तव में अभी भी एक हिस्सा है contrib
और सामान्य आदमी पृष्ठों के साथ पूरी तरह से एकीकृत नहीं है। इसके बजाय दस्तावेज़ को स्क्रिप्ट के साथ संग्रहीत किया जाता है।
यहाँ उपयोग जानकारी है:
NAME
----
git-subtree - Merge subtrees together and split repository into subtrees
SYNOPSIS
--------
[verse]
'git subtree' add -P <prefix> <commit>
'git subtree' add -P <prefix> <repository> <ref>
'git subtree' pull -P <prefix> <repository> <ref>
'git subtree' push -P <prefix> <repository> <ref>
'git subtree' merge -P <prefix> <commit>
'git subtree' split -P <prefix> [OPTIONS] [<commit>]
मैं उपशीर्षक के विषय पर संसाधनों की एक अच्छी संख्या में आया हूं, जैसा कि मैं अपने खुद के ब्लॉग पोस्ट लिखने की योजना बना रहा था। अगर मैं करुँ तो मैं इस पोस्ट को अपडेट करूंगा, लेकिन अब यहाँ प्रश्न के लिए कुछ प्रासंगिक जानकारी है:
आप जो चाह रहे हैं, उसमें से अधिकांश आप इस प्रासंगिक ब्लॉग पर निकोला पाओलूकी द्वारा प्रासंगिक खंड के नीचे पा सकते हैं:
सबमॉड्यूल के बजाय सबट्री का उपयोग क्यों करें?
आपको subtree
उपयोग करने के लिए बेहतर कारण मिल सकते हैं, इसके कई कारण हैं:
- एक साधारण वर्कफ़्लो का प्रबंधन आसान है।
- पुराने संस्करण
git
समर्थित हैं (पहले भी v1.5.2
)।
clone
सुपर प्रोजेक्ट के ठीक बाद सब-प्रोजेक्ट का कोड उपलब्ध है।
subtree
आपके भंडार के उपयोगकर्ताओं को कुछ भी नया सीखने की आवश्यकता नहीं है, वे इस तथ्य को अनदेखा कर सकते हैं कि आप subtree
निर्भरता को प्रबंधित करने के लिए उपयोग कर रहे हैं ।
subtree
नई मेटाडेटा फ़ाइलों को नहीं जोड़ता है जैसे submodules
(करता है
.gitmodule
)।
- मॉड्यूल की सामग्री को कहीं और निर्भरता की एक अलग रिपॉजिटरी कॉपी के बिना संशोधित किया जा सकता है।
मेरी राय में कमियां स्वीकार्य हैं:
- आपको एक नई मर्ज रणनीति (यानी
subtree
) के बारे में सीखना चाहिए ।
upstream
उप-परियोजनाओं के लिए योगदान कोड वापस थोड़ा अधिक जटिल है।
- सुपर और सब-प्रोजेक्ट कोड को कमिट में न मिलाने की जिम्मेदारी आपके साथ है।
मैं इस बात से बहुत सहमत हूँ। मैं कुछ सामान्य उपयोग से अधिक होने पर लेख को देखने की सलाह दूंगा।
आपने देखा होगा कि उन्होंने यहां एक अनुवर्ती भी लिखा है, जहां उन्होंने एक महत्वपूर्ण विवरण का उल्लेख किया है जो इस दृष्टिकोण के साथ छोड़ दिया गया है ...
git-subtree
वर्तमान में रिमोट को शामिल करने में विफल रहता है!
यह छोटी दृष्टि शायद इस तथ्य के कारण है कि लोग अक्सर सबट्रीज़ के साथ काम करते समय मैन्युअल रूप से रिमोट जोड़ते हैं, लेकिन यह या तो गिट में जमा नहीं होता है। लेखक ने अपने द्वारा किए गए इस मेटा डेटा को जोड़ने के लिए लिखे गए एक पैच का विवरण दिया है जो git-subtree
पहले से ही उत्पन्न करता है। जब तक यह आधिकारिक git मेनलाइन में नहीं आता है तब तक आप प्रतिबद्ध संदेश को संशोधित करके या इसे किसी अन्य कमेंट में संग्रहीत करके कुछ ऐसा ही कर सकते हैं।
मुझे यह ब्लॉग पोस्ट बहुत जानकारीपूर्ण भी लगती है। लेखक तीसरे सबट्री विधि को जोड़ता है जिसे वह git-stree
मिश्रण को कहता है। लेख पढ़ने के लायक है क्योंकि वह तीन दृष्टिकोणों की तुलना करने के लिए बहुत अच्छा काम करता है। वह क्या करता है और क्या पसंद नहीं करता है और बताते हैं कि उन्होंने तीसरा दृष्टिकोण क्यों बनाया, इसके बारे में वह अपनी व्यक्तिगत राय देते हैं।
अतिरिक्त
विचार बंद करना
यह विषय उस शक्ति git
और विभाजन दोनों को दिखाता है जो तब हो सकता है जब कोई विशेषता केवल निशान से चूक जाती है।
मैंने व्यक्तिगत git-submodule
रूप से एक अरुचि पैदा की है क्योंकि मुझे यह समझने में योगदानकर्ताओं के लिए अधिक भ्रमित लगता है। मैं अपने सभी आश्रितों को अपनी परियोजनाओं के भीतर प्रबंधित करने के लिए कई रिपॉजिटरी का प्रबंधन करने की कोशिश किए बिना आसानी से प्रतिलिपि प्रस्तुत करने योग्य वातावरण की सुविधा के लिए रखना पसंद करता हूं। git-submodule
हालाँकि, यह वर्तमान में बहुत अधिक अच्छी तरह से जाना जाता है इसलिए स्पष्ट रूप से इसके बारे में पता होना अच्छा है और आपके दर्शकों पर निर्भर करता है जो आपके निर्णय को प्रभावित कर सकते हैं।