यह हमारे पुस्तकालयों में GIT v1.7.1 के साथ काम करता है, जहां हमारे पास एक DEV पैकेज रेपो और LIVE पैकेज रेपो है। भंडार अपने आप में एक परियोजना के लिए परिसंपत्तियों को पैकेज करने के लिए एक शेल के अलावा कुछ भी नहीं हैं। सभी सबमॉड्यूल्स।
LIVE को कभी जानबूझकर अपडेट नहीं किया जाता है, हालांकि कैश फ़ाइल या दुर्घटनाएं हो सकती हैं, जिससे रेपो गंदा हो जाता है। DEV में जोड़े गए नए सबमॉड्यूल्स को LIVE के भीतर भी आरंभीकृत किया जाना चाहिए।
DEV में पैकेज रिपोजिटरी
यहां हम उन सभी अपस्ट्रीम परिवर्तनों को खींचना चाहते हैं जिनके बारे में हमें अभी तक जानकारी नहीं है, फिर हम अपने पैकेज रिपॉजिटरी को अपडेट करेंगे।
# Recursively reset to the last HEAD
git submodule foreach --recursive git reset --hard
# Recursively cleanup all files and directories
git submodule foreach --recursive git clean -fd
# Recursively pull the upstream master
git submodule foreach --recursive git pull origin master
# Add / Commit / Push all updates to the package repo
git add .
git commit -m "Updates submodules"
git push
पैकेज रिपॉजिटरी LIVE में
यहां हम उन परिवर्तनों को खींचना चाहते हैं जो DEV रिपॉजिटरी के लिए प्रतिबद्ध हैं, लेकिन अज्ञात अपस्ट्रीम परिवर्तन नहीं।
# Pull changes
git pull
# Pull status (this is required for the submodule update to work)
git status
# Initialize / Update
git submodule update --init --recursive
git reset --hard
काम नहीं करता है, तो पहले दूरस्थ शाखा को निर्दिष्ट करने का प्रयास करेंgit reset --hard origin/<branch_name>
।