एक समाधान के लिए पूरी तरह से पढ़ें, लेकिन दुर्भाग्य से, Git क्लोन फैशन अनुरोध कर रहे हैं में काम नहीं करता: यहाँ एक अच्छा कैसे है। --depth
पैरामीटर revisions
की संख्या को commits
की संख्या से सीमित करता है। एक क्लोन पैरामीटर नहीं है जो काम की मात्रा को सीमित करता है। आपकी स्थिति में, भले ही आपको पता चले कि फ़ाइल से अधिकतम 10 संशोधन अंतर थे जो रेपो में v3.0 और नवीनतम HEAD के बीच सबसे अधिक बदल गए हैं और --depth 10
का उपयोग करते हैं, फिर भी आप अधिकतर या संपूर्ण रेपो इतिहास प्राप्त कर सकते हैं। क्योंकि कुछ वस्तुओं में 10 संशोधन नहीं हो सकते हैं और आप रेपो में अपनी पहली उपस्थिति की शुरुआत में अपना इतिहास वापस ले लेंगे।
अब यह है कि आप क्या चाहते हैं: आपकी समस्या की कुंजी यह है कि आपको v3.0 और हाल ही में सबसे अधिक संदर्भ के बीच की आवश्यकता है।
git clone http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --depth 10075 smaller_kernel_repo
cd smaller_kerenel_repo
- v3.0 की शा
git log --oneline v3.0^..v3.0
- इस शा के साथ शुरू एक भ्रष्टाचार बिंदु बनाएँ निर्धारित (यह 02f8c6aee8df3cdc935e9bdd4f2d020306035dbe है)
: ये कदम उठाएँ मैंने किया था तो बस यही काम कर रहे हैं
echo "02f8c6aee8df3cdc935e9bdd4f2d020306035dbe" > .git/info/grafts
कुछ कर्नेल लॉग प्रविष्टियों के साथ कुछ समस्याएं प्राप्त करने के लिए: export GIT_AUTHOR_NAME="tmp"
और export GIT_COMMITTER_NAME="tmp"
वहाँ आदमी पेज में के बारे में एक अच्छा चेतावनी है के बारे में git filter-branch
भ्रष्टाचार अंक का पालन करते हुए इतिहास को फिर से लिखने ... इसलिए दुरुपयोग कि, अब git filter-branch
चलाने के लिए और आराम से बैठकर प्रतीक्षा करें ... (और इंतजार की सुविधा देता है और इंतजार)
अब तुम सब कुछ साफ करने के लिए की जरूरत है:
git reflog expire --expire=now --all
git repack -ad # Remove dangling objects from packfiles
git prune # Remove dangling loose objects
इस प्रक्रिया में समय लग लेकिन बहुत जटिल नहीं है। उम्मीद है कि यह आपको हर समय बचाएगा जब आप लंबे समय तक उम्मीद कर रहे थे। इस बिंदु पर आप अनिवार्य रूप से लिनक्स-स्थिर.git repo से v3.0 के संशोधित इतिहास के साथ एक रेपो होगा।जैसे कि क्लोन पर --depth
का उपयोग किया गया है, तो आपके पास रेपो पर समान प्रतिबंध हैं और आपके पास पहले से मौजूद इतिहास से पैच को संशोधित और भेजने में सक्षम होंगे। इसके चारों ओर तरीके हैं .. लेकिन यह अपने स्वयं के क्यू & ए
मैं पिछले कुछ चरणों का परीक्षण करने की प्रक्रिया में हूं, लेकिन git filter-branch
ऑपरेशन अभी भी चल रहा है। मैं इस पोस्ट को किसी भी मुद्दे से अपडेट कर दूंगा, लेकिन मैं आगे बढ़ूंगा और इसे पोस्ट करूंगा ताकि अगर आप इसे स्वीकार्य पाते हैं तो आप इस प्रक्रिया को शुरू कर सकते हैं। जारी करने के लिए
अद्यतन
वर्कअराउंड (घातक: खाली अध्यक्ष < अनुमति नहीं>)। यह समस्या लिनक्स रेपो के प्रतिबद्ध इतिहास में एक समस्या के साथ उपजी है।
को git filter-branch
आदेश बदलें:
git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_EMAIL" = "" ];
then
GIT_AUTHOR_EMAIL="[email protected]";
GIT_AUTHOR_NAME='tmp'
GIT_COMMITTER_NAME='Me'
GIT_COMMITTER_EMAIL='[email protected]'
git commit-tree "[email protected]";
else
git commit-tree "[email protected]";
fi '
यह भी देखें [मैं एक गिट भंडार से पुराने इतिहास को कैसे हटा सकता हूं?] (Http://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a- गिट-रिपोजिटरी) – Alberto