গিট রেপোতে আমি কীভাবে নির্ভরতা যুক্ত করতে পারি?


148

আমার স্ক্রিপ্টগুলিতে আমি প্রায়শই লাইব্রেরি (আমার বা অন্যদের) ব্যবহার করি যাগুলির নিজস্ব রেপো রয়েছে। আমি আমার রেপোগুলিতে সেগুলি নকল করতে চাইছি না এবং প্রতিবার নতুন সংস্করণ প্রকাশিত হওয়ার সাথে সাথে সেগুলি আপডেট করার সাথে আটকে যেতে চাই। তবে, কেউ রেপো ক্লোন করার সময়, এটি এখনও স্থানীয়ভাবে কাজ করা উচিত এবং ভাঙা লিঙ্ক না থাকা উচিত not

আমি কি করতে পারি সম্পর্কে কোন ধারণা?

উত্তর:


211

আপনি গিট মধ্যে submodule সঙ্গে এটি করতে পারেন। আপনার ভাণ্ডারে, করুন:

git submodule add path_to_repo path_where_you_want_it

সুতরাং, যদি গ্রন্থাগারের সংগ্রহস্থলের কোনও URL থাকে git://github.com/example/some_lib.gitএবং আপনি এটি lib/some_libআপনার প্রকল্পে চান, আপনি প্রবেশ করতে পারেন:

git submodule add git://github.com/example/some_lib.git lib/some_lib

নোট করুন যে এটি আপনার সংগ্রহস্থলের শীর্ষ স্তরের ডিরেক্টরি থেকে করা দরকার। সুতরাং cdআপনি যে ডিরেক্টরিটি প্রথমে রেখেছেন সেখানে প্রবেশ করবেন না ।

আপনি সাবমডিউল যুক্ত করার পরে, বা যখনই কেউ আপনার সংগ্রহশালাটির একটি নতুন চেকআউট করেন, আপনাকে এটি করতে হবে:

git submodule init
git submodule update

এবং তারপরে আপনি সংযুক্ত সমস্ত সাবমডিউলগুলি আপনার একই সংস্করণে পরীক্ষা করা হবে।

আপনি যখন কোনও লাইব্রেরির একটি নতুন সংস্করণে cdসাব-মডুলেলে আপডেট করতে চান এবং টানুন:

cd lib/some_lib
git pull

তারপরে, আপনি যখন একটি করবেন তখন আপনার পরিবর্তিত বিভাগে তালিকাভুক্ত git statusহওয়া উচিত lib/somelib। ফাইলটি যুক্ত করুন, প্রতিশ্রুতিবদ্ধ করুন এবং আপনি আপ টু ডেট। কোনও সহযোগী যখন তাদের ভাণ্ডারগুলিতে সেই প্রতিশ্রুতি টানেন, তারা আবার lib/somelibচালানো না হওয়া পর্যন্ত তারা সংশোধিত হিসাবে দেখতে পাবেন git submodule update


2
আপনার উত্তরের জন্য ধন্যবাদ, upvated! (এবং সম্ভবত আগামীকাল এটি গ্রহণ করবে) নির্ভরতা হিসাবে অন্য রেপো থেকে কেবল একটি ফাইল যুক্ত করার উপায় আছে? বা এটি একটি পুরো ফোল্ডার হতে হবে?
লেয়া ভেরু

2
আপনি যদি এটি উপ-মডেল হিসাবে ট্র্যাক করতে চান (এবং এইভাবে, সহজেই আপডেটগুলিতে টানতে সক্ষম হন) আপনাকে পুরো সংগ্রহস্থলটি টানতে হবে। অন্যান্য অনেক ভিসিএস-এর বিপরীতে, গিটটি কেবলমাত্র শীর্ষ স্তরের সংগ্রহস্থলগুলির সাথে ডিল করতে চায়।
এমিলি

7
এই পড়া কি একটি submodule এবং জন্য ভাল কার্যসংক্রান্ত সম্ভাব্য বিষয় উপায় নেই। এবং এটি সম্পর্কে একটি আলোচনা
মিঙ্গুয়া

1
আসুন আমরা আপনাকে নিজের মালিকের অন্য একটি রেপো সাবমডিউল হিসাবে আমদানি করতে পারি। আপনি কি সাবমডিউলে আপনার স্থানীয় পরিবর্তনগুলির মাধ্যমে মূল রেপোতে পরিবর্তন করতে পারবেন? বলুন যে আপনি একটি বাগ খুঁজে পেয়েছেন এবং মূলটি আপডেট করতে হবে?
andrevenancio

3
আমি জানি এটি একটি পুরানো উত্তর, তবে গিট সাবমোডিয়ালগুলি আপডেট করে আপডেট করা যেতে পারে git submodule update --remoteআমি আরও জটিল প্রকল্পের জন্য আরও পতাকা ব্যবহার করার পরামর্শ দিই। আমি ব্যবহার করিgit submodule update --remote --recursive --init
ক্রিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.