আসন্ন git1.8.4 এ নতুন (জুলাই 2013) :
" git submodule update
" বিকল্পভাবে সাবমডিউল সংগ্রহস্থলগুলিকে অল্প পরিমাণে ক্লোন করতে পারে।
(এবং Git 2.10 চতুর্থাংশ 3 2016 রেকর্ড করতে যে সঙ্গে পারবেন git config -f .gitmodules submodule.<name>.shallow true
।
এই উত্তরটি শেষে দেখুন)
কমিট 275cd184d52b5b81cb89e4ec33e540fb2ae61c1f দেখুন :
যোগ --depth
"Git submodule" যা পরে ক্লোন কমান্ড কাছে হস্তান্তর করা হয় অ্যাড এবং আপডেট কমান্ড করার অপশন। সাবমোডুল (গুলি) বিশাল হয় এবং আপনি সর্বশেষ প্রতিশ্রুতি ব্যতীত অন্য কোনও বিষয়ে আগ্রহী নন যখন এটি কার্যকর।
পরীক্ষাগুলি যোগ করা হয় এবং "সাবমডিউল আপডেট পিডাব্লুডিতে প্রতীকী লিঙ্কগুলি পরিচালনা করতে পারে" তে টেস্টফিলের বাকী অংশের সাথে সামঞ্জস্য করার জন্য কিছু ইনডেনশন সমন্বয় করা হয়েছিল।
সাইন-অফ-বাই: ফ্রেড্রিক গুস্তাফসন <iveqy@iveqy.com>
আকিড-বাই: জেনস লেহম্যান<Jens.Lehmann@web.de>
এর অর্থ এই কাজ করে:
git submodule add --depth 1 -- repository path
git submodule update --depth -- [<path>...]
সঙ্গে:
--depth::
এই বিকল্পটি জন্য বৈধ add
এবং update
কমান্ড।
নির্দিষ্ট সংখ্যার সংশোধিত সংখ্যায় কাটা ইতিহাস সহ একটি 'অগভীর' ক্লোন তৈরি করুন।
অ্যাটুইম্যান মন্তব্যগুলিতে যোগ করেছেন :
যতদূর আমি বলতে পারি এই বিকল্পটি সাবমোডিয়ুলগুলির জন্য ব্যবহারযোগ্য নয় যা master
খুব ঘনিষ্ঠভাবে ট্র্যাক করে না। আপনি যদি গভীরতা 1 সেট করে থাকেন তবে submodule update
কেবল তখনই সফল হতে পারে যদি আপনি চান সাবমডিউল প্রতিশ্রুতি সর্বশেষতম মাস্টার। অন্যথায় আপনি " fatal: reference is not a tree
" পাবেন ।
ঐটা সত্য.
এটি, গিট 2.8 (মার্চ 2016) অবধি। ২.৮ সহ, submodule update --depth
সাফল্যের আরও একটি সুযোগ রয়েছে, এমনকি SHA1 রিমোট রেপো হেডগুলির মধ্যে যে কোনও একটি থেকে সরাসরি পৌঁছানো যায়।
দেখুন কমিট fb43e31 (24 ফেব্রুয়ারী 2016) দ্বারা স্টিফান Beller ( stefanbeller
) ।
সহায়তায়: জুনিও সি হামানো ( gitster
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 9671a76 26 ফেব্রুয়ারী 2016)
সাব-মডিউল: সরাসরি শ -1 এনে প্রয়োজনীয় sha1 আনার জন্য আরও চেষ্টা করুন
গেরিটের একটি উপ-মডেলকে আপডেট করে এমন কোনও পরিবর্তন পর্যালোচনা করার সময়, একটি সাধারণ পর্যালোচনা অনুশীলন হ'ল প্যাচটি পরীক্ষা করার জন্য স্থানীয়ভাবে প্যাচটি ডাউনলোড এবং চেরি-বাছাই করে।
তবে স্থানীয়ভাবে এটির পরীক্ষার সময়, ' git submodule update
' সাবমোডিয়ালে সংশ্লিষ্ট কমিট প্রকল্পের ইতিহাসের অংশ না হয়ে কেবলমাত্র প্রস্তাবিত পরিবর্তনের কারণে সঠিক সাবমোডিয়াল শা 1 আনতে ব্যর্থ হতে পারে।
যদি $sha1
ডিফল্ট আনার অংশ না হয় তবে আমরা $sha1
সরাসরি আনার চেষ্টা করি । কিছু সার্ভার অবশ্য sha1 দ্বারা সরাসরি আনয়ন সমর্থন করে না, যা git-fetch
দ্রুত ব্যর্থ হওয়ার দিকে নিয়ে যায় ।
আমরা এখানে নিজেকে ব্যর্থ করতে পারি যেহেতু এখনও অনুপস্থিত sha1 যাইহোক চেকআউট পর্যায়ে পরে ব্যর্থতার দিকে পরিচালিত করতে পারে, সুতরাং এখানে ব্যর্থ হওয়া যতটা সম্ভব আমরা পেতে পারি।
MVG তুলে ধরে মন্তব্য করতে কমিট fb43e31 (Git 2.9, ফেব্রুয়ারি 2016)
এটি আমার কাছে মনে হবে যে প্রতিশ্রুতিবদ্ধ fb43e31 SHA1 আইডি দ্বারা অনুপস্থিত প্রতিশ্রুতিটি অনুরোধ করে, তাই সার্ভারে থাকা সেটিংস uploadpack.allowReachableSHA1InWant
এবং uploadpack.allowTipSHA1InWant
সেটিংস সম্ভবত এটি প্রভাবিত করবে কিনা।
আমি আজ গিট তালিকায় একটি পোস্ট লিখেছি , কিছু দৃশ্যের জন্য কীভাবে অগভীর সাবমডিউলগুলি আরও ভালভাবে কাজ করা যেতে পারে তা নির্দেশ করে, যেমন প্রতিশ্রুতিবদ্ধতাও যদি ট্যাগ হয় tag
অপেক্ষা করুন এবং দেখুন।
আমি অনুমান করি যে এটি কারণ হ'ল fb43e31 নির্দিষ্ট SHA1 এর জন্য ডিফল্ট শাখার জন্য আনার পরে একটি ফ্যালব্যাক তৈরি করেছিল।
তবুও, "--depth 1" এর ক্ষেত্রে আমি মনে করি যে তাড়াতাড়ি বাতিল করা অর্থহীন হবে: যদি তালিকাভুক্ত রেফগুলির কোনওটিই অনুরোধ করাটির সাথে মেলে না, এবং SHA1 দ্বারা জিজ্ঞাসা করা সার্ভার দ্বারা সমর্থিত না হয়, তবে এতে কোনও লাভ নেই যে কোনও কিছু উপস্থাপিত হচ্ছে, যেহেতু আমরা উপমন্ডলের প্রয়োজনীয়তা কোনওভাবেই পূরণ করতে সক্ষম হব না।
আগস্ট 2016 আপডেট করুন (3 বছর পরে)
গিট 2.10 (Q3 2016) এর সাহায্যে আপনি করতে সক্ষম হবেন
git config -f .gitmodules submodule.<name>.shallow true
আরও জন্য " অতিরিক্ত ওজন ছাড়াই গিট সাবমডিউল " দেখুন।
গিট 2.13 ( কিউ 2 2017) সেবাস্তিয়ান sschuberth
শুবারথ () দ্বারা 8d3047c (19 এপ্রিল 2017 ) এর প্রতিশ্রুতিবদ্ধ করুন ।
(দ্বারা একীভূত সেবাস্টিয়ান Schuberth - sschuberth
- মধ্যে 8d3047c কমিট , 20 এপ্রিল 2017)
এই সাবমডিউলের একটি ক্লোনটি অগভীর ক্লোন হিসাবে সম্পাদিত হবে (1 এর ইতিহাস গভীরতার সাথে)
যাইহোক, সিরো Santilli যোগ মন্তব্য (এবং বিবরণ তার উত্তরে )
shallow = true
উপর .gitmodules
শুধুমাত্র প্রভাবিত রেফারেন্স যখন ব্যবহার করে দূরবর্তী প্রধান দ্বারা ট্র্যাক --recurse-submodules
, লক্ষ্য কমিট এমনকি যদি একটি শাখা দ্বারা প্রতি ইঙ্গিত করা হয়, এবং এমনকি যদি আপনি করা branch = mybranch
উপর .gitmodules
হিসাবে ভাল।
গিট ২.২০ (Q4 2018) সাবমডিউল সহায়তাটিতে উন্নতি করে, HEAD:.gitmodules
যখন .gitmodules
কার্যক্ষম গাছ থেকে ফাইলটি নিখোঁজ হয় তখন ব্লব থেকে পড়তে আপডেট করা হয়েছে ।
দেখুন 2b1257e কমিট , 76e9bdc কমিট (25 অক্টোবর 2018), এবং b5c259f কমিট , 23dd8f5 কমিট , b2faad4 কমিট , 2502ffc কমিট , 996df4d কমিট , d1b13df কমিট , 45f5ef3 কমিট , কমিট bcbc780 (05 অক্টোবর 2018) দ্বারা আন্তোনিও Ospite ( ao2
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে abb4824 কমিট , 13 নভেম্বর 2018)
submodule
: .gitmodules
যখন কার্যক্ষম গাছের মধ্যে না থাকে তখন পড়া সমর্থন করুন
যখন .gitmodules
ফাইলটি কাজ করছে গাছ পাওয়া যায় না, সূচী থেকে এবং বর্তমান শাখা থেকে বিষয়বস্তু ব্যবহার করার চেষ্টা করুন।
ফাইলটি সংগ্রহস্থলের অংশ হওয়ার পরে এটি কেসটি কভার করে তবে কোনও কারণে এটি চেক আউট হয় না, উদাহরণস্বরূপ বিরল চেকআউটের কারণে।
এটি কমপক্ষে ' git submodule
' 'কমান্ডগুলি ব্যবহার করা সম্ভব করে যা কার্যকরী গাছকে সম্পূর্ণরূপে পপুলেশন না করে কনফিগারেশন ফাইলটি পড়েgitmodules
।
লেখার জন্য .gitmodules
এখনও ফাইলটি চেক আউট করা দরকার, সুতরাং কল করার আগে এটি পরীক্ষা করে দেখুন config_set_in_gitmodules_file_gently
।
git-submodule.sh::cmd_add()
" git submodule add
" .gitmodules
নিরাপদে লিখনযোগ্য নয় যখন কমান্ডের চূড়ান্ত ব্যর্থতা অনুমান করতে অনুরূপ চেক যুক্ত করুন ; এটি কমান্ডটিকে উত্সাহজনক অবস্থায় সংগ্রহস্থল ছাড়তে বাধা দেয় (উদাহরণস্বরূপ সাবমডিউল সংগ্রহস্থলটি ক্লোন করা .gitmodules
হয়েছিল তবে config_set_in_gitmodules_file_gently
ব্যর্থ হওয়ার কারণে আপডেট হয়নি)।
এছাড়াও, যেহেতু config_from_gitmodules()
এখন গ্লোবাল অবজেক্ট স্টোরটি অ্যাক্সেস করে, তাই সমস্ত কোড পন্থাগুলি রক্ষা করা প্রয়োজন যা গ্লোবাল অবজেক্ট স্টোরের একযোগে অ্যাক্সেসের বিরুদ্ধে ফাংশনটিকে ডাকে।
বর্তমানে এটি কেবল এতে ঘটে থাকে builtin/grep.c::grep_submodules()
, সুতরাং grep_read_lock()
কোড জড়িত হওয়ার আগে কল করুন
config_from_gitmodules()
।
দ্রষ্টব্য: এমন একটি বিরল কেস আছে যেখানে এই নতুন বৈশিষ্ট্যটি এখনও সঠিকভাবে কাজ করে না: .gitmodules
তাদের কার্যক্ষম গাছ ছাড়া নেস্টেড সাবমডিউলগুলি ।
দ্রষ্টব্য: গিট 2.24 (Q4 2019) একটি সাবমডিউল অগভীর ক্লোনিং করার সময় একটি সম্ভাব্য সেগফল্ট ঠিক করে।
আলী উত্কু সেলেন ( ) দ্বারা কমিট ডিডিবি 3 সি 85 (30 সেপ্টেম্বর 2019 ) দেখুন । (দ্বারা একীভূত junio সি Hamano - - মধ্যে কমিট 678a9ca , 09 অক্টোবর 2019)auselen
gitster
গিট 2.25 (কিউ 12020), git submodule update
ডকুমেন্টেশন পরিষ্কার করে ।
দেখুন f0e58b3 কমিট দ্বারা (24 নভেম্বর 2019) ফিলিপ Blain ( phil-blain
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট ef61045 , 05 ডিসেম্বর 2019)
doc
: উল্লেখ করুন যে 'গিট সাবমডিউল আপডেট' অনুপস্থিত কমিটগুলি আনে
হেল্প-বাই: জুনিও সি হামানো
হেল্প-বাই: জোহানেস শিন্ডেলিন
সই-অফ-বাই: ফিলিপ ব্লেইন
সুপারপজেক্টে রেকর্ডকৃত SHA-1 সন্ধান না পাওয়া গেলে ' git submodule
আপডেট' সাবমোডিয়াল রিমোট থেকে নতুন কমিটগুলি আনবে । ডকুমেন্টেশনে এটি উল্লেখ করা হয়নি।
সতর্কতা: গিট 2.25 (কিউ 12020) এর সাথে, " git clone --recurse-submodules
" এবং বিকল্প অবজেক্ট স্টোরের মধ্যে মিথস্ক্রিয়াটি অ-নকশাকৃত ছিল।
ব্যবহারকারীরা যখন ব্যর্থতা দেখেন তখন ডকুমেন্টেশন এবং কোডটিকে আরও স্পষ্ট সুপারিশ করতে শেখানো হয়েছিল।
কমিট 4f3e57e দেখুন , প্রতিশ্রুতিবদ্ধ 10c64a0 (02 ডিসেম্বর 2019) জোনাথন টান ( jhowtan
) দ্বারা ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 5dd1d59 , 10 ডিসেম্বর 2019)
submodule--helper
: মারাত্মক বিকল্প ত্রুটি সম্পর্কে পরামর্শ
সাইন-অফ-বাই: জনাথন টান
আকিড-বাই: জেফ কিং
যখন .gitmodules
অগভীরভাবে কোনও অল্প অগভীর মডিউলগুলি সংজ্ঞায়িত করে একটি সুপারপ্রজেক্টকে ক্লোনিং করা হয় , তারপরে " --reference=<path>
" সাথে পুনরায় সংযুক্তি ঘটে তখন একটি ত্রুটি ঘটে। উদাহরণ স্বরূপ:
git clone --recurse-submodules --branch=master -j8 \
https://android.googlesource.com/platform/superproject \
master
git clone --recurse-submodules --branch=master -j8 \
https://android.googlesource.com/platform/superproject \
--reference master master2
এর সাথে ব্যর্থ:
fatal: submodule '<snip>' cannot add alternate: reference repository
'<snip>' is shallow
যখন সুপারপ্রজেক্টের বিকল্প থেকে কোনও বিকল্প গণনা যুক্ত করা যায় না, এই ক্ষেত্রে বা অন্য কোনও ক্ষেত্রে, submodule.alternateErrorStrategy
কনফিগারেশন বিকল্পটি কনফিগার করার এবং ক্লোনিং করার সময় " --reference-if-able
" পরিবর্তে " " ব্যবহার করার পরামর্শ দিন --reference
।
এটি বিস্তারিত:
গিট 2.25 (কিউ 12020) এর সাথে, "গিট ক্লোন --recurse-submodules" এবং বিকল্প অবজেক্ট স্টোরের মধ্যে মিথস্ক্রিয়াটি অ-নকশাকৃত ছিল।
Doc
: submodule.alternateErrorStrategy ব্যাখ্যা করুন
সাইন-অফ-বাই: জনাথন টান
আকিড-বাই: জেফ কিং
কমিট 31224cbdc7 ( " clone
: Recursive এবং রেফারেন্স বিকল্প ট্রিগার submodule বিকল্পসমূহ", 2016-08-17, গীত v2.11.0-rc0 - একত্রীকরণ তালিকাভুক্ত ব্যাচ # 1 ) কনফিগারেশন বিকল্পগুলি "সমর্থন করার জন্য গীত শেখানো submodule.alternateLocation
" এবং " submodule.alternateErrorStrategy
একটি superproject এ" ।
যদি সুপারপোজেক্টে submodule.alternateLocation
" superproject
" " " তে কনফিগার করা থাকে , যখনই super সুপারপ্রজেক্টের একটি সাবমডিউল ক্লোন করা হয়, এটি পরিবর্তে সুপারপোজেক্টের সেই সাবমোডিয়ুলের জন্য অভিন্ন বিকল্প পথকে গণনা করে $GIT_DIR/objects/info/alternates
এবং এটি উল্লেখ করে।
" submodule.alternateErrorStrategy
" বিকল্পটি স্থির করে যদি সেই বিকল্পটি উল্লেখ করা না যায় তবে কী ঘটে।
তবে এটি স্পষ্ট নয় যে ক্লোনটিটি এমনভাবে প্রবাহিত হয়েছে যখন বিকল্পটি নির্দিষ্ট করা হয়নি যখন সেই বিকল্পটি "ডাই" তে সেট করা থাকে না (যেমন পরীক্ষাগুলিতে 31224cbdc7 তে দেখা যায় )।
অতএব, সেই অনুযায়ী এটি নথি।
কনফিগ submodule ডকুমেন্টেশন এখন রয়েছে:
submodule.alternateErrorStrategy::
উল্লেখ করে কিভাবে যেমন মাধ্যমে নির্ণিত একটি submodule জন্য বিকল্পসমূহ সঙ্গে ত্রুটি চিকিত্সা submodule.alternateLocation
।
সম্ভাব্য মান হল ignore
, info
, die
।
ডিফল্ট হয় die
।
মনে রাখবেন যে সেট করা থাকলে ignore
বা info
, এবং যদি গণিত বিকল্পের সাথে কোনও ত্রুটি থাকে, ক্লোনটি এমনভাবে এগিয়ে যায় যেন কোনও বিকল্প নির্দিষ্ট করা হয়নি ।
git submodule add/update
" এখন অল্প স্বল্পভাবে সাবমডিউল সংগ্রহস্থলগুলি ক্লোন করতে পারে! দেখুন নিচের আমার উত্তর