নেস্টেড গিট রিপোজিটরি গুলো?


181

আমি কি গিট সংগ্রহস্থলগুলিতে বাসা বাঁধতে পারি? আমার আছে:

 /project_root/
 /project_root/my_project
 /project_root/third_party_git_repository_used_by_my_project

এটি জানার জন্য কি স্থানীয়ভাবে সবকিছু পরিচালনার আরাম অথবা আমি পরিচালনা করতে হবে এবং 3 য় পক্ষ এক আলাদাভাবে?git init/add/project_rootmy_project

উত্তর:


159

আপনি সাবমডিউলস নামে গিট বৈশিষ্ট্যটি সন্ধান করতে পারেন । এই বৈশিষ্ট্যটি আপনাকে নির্ভর করে আপনার মূল সংগ্রহস্থলের ভিতরে বাসা বাঁধে এমন সংগ্রহগুলি পরিচালনা করতে সহায়তা করে।


43
আপেক্ষিক গিট শিক্ষানবিশ হিসাবে, আমি এই ব্লগ / টিউটোরিয়ালটি ক্রিশিয়ান ডটকম / ২০০৯/০৪/২০/২০১২ বুঝতে সহজতর পেয়েছি ; সহায়ক সহায়ক শেল স্ক্রিপ্টের প্রসঙ্গটি না রেখে কেবল গিটকে কেন্দ্র করে এটি একটি সহজ পদ্ধতির প্রয়োজন; আমি এটি পড়া সহজ।
জন কে

4
Chrisjean.com ব্লগটি কেবল অনুসরণ করার চেষ্টা করার ভিত্তিতে বর্তমান বলে মনে হচ্ছে না। গ্রেগের উইকির পোস্টটি কিছুটা জটিল হতে পারে তবে গিট নবাগত হিসাবে আমি সাধারণের চেয়ে সঠিকটিকে পছন্দ করি ...
ষি

ব্লগটি এখন ঠিকঠাকভাবে কাজ করছে বলে মনে হচ্ছে, এবং দুর্ভাগ্যক্রমে ageষির পক্ষে, মন্তব্যে 34 টি (এখন 35) আপ-ভোটাটি ব্লগ নিবন্ধের একটি মান আছে বলে মনে হচ্ছে। দেখা যাচ্ছে যে স্পষ্টতা এবং অপারেশন-নির্দিষ্ট পরামর্শের জন্য আপনাকে নির্ভুলতার ত্যাগ করতে হবে না। এটি পড়ার পরে, আমি কল্পনা করব যে লেখক ইতিমধ্যে কিছুটা গবেষণা করেছেন এবং সম্ভবত আসল গিট ডকুমেন্টেশন পড়েছেন , কেবল কার্নেল.org উইকি পৃষ্ঠা নয়। সম্পূর্ণ প্রাসঙ্গিক উদাহরণে ব্লগ লেখকের গিট-ওরিয়েন্টেড ব্যাখ্যা বিপুল সংখ্যক ব্যক্তির পক্ষে যথেষ্ট সহায়ক বলে মনে হচ্ছে ...
ম্যাথু ওয়েবার

13
বিটিডাব্লু যে উপরে উল্লিখিত খ্রিস্টান লিঙ্কটি মারা গেছে। হালনাগাদ লিঙ্কটি chrisjean.com/git-submodules-adding- using
removing-

35

আপনার তৃতীয় পক্ষের লাইব্রেরিগুলিকে একটি পৃথক সংগ্রহস্থলে রাখুন এবং সাবমোডিয়ুলগুলি মূল প্রকল্পের সাথে যুক্ত করতে ব্যবহার করুন। এখানে একটি পদচারণা:

http://git-scm.com/book/en/Git-Tools-Submodules

কোনও রেপো কীভাবে বিভাগ করা যায় সে সিদ্ধান্ত নেওয়ার ক্ষেত্রে আমি প্রায়শই তাদের কতবার সংশোধন করব তার ভিত্তিতে সিদ্ধান্ত নেব। যদি এটি একটি তৃতীয় পক্ষের লাইব্রেরি হয় এবং কেবলমাত্র এটির পরিবর্তিত পরিবর্তনগুলি একটি নতুন সংস্করণে আপগ্রেড হয় তবে আপনার অবশ্যই এটি অবশ্যই মূল প্রকল্প থেকে পৃথক করা উচিত।


22

কেবল সম্পূর্ণতার জন্য:

আরও একটি সমাধান রয়েছে, আমি সুপারিশ করব: সাবট্রি মার্জ করা

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

$ git remote add -f OtherRepository /path/to/that/repo
$ git merge -s ours --no-commit OtherRepository/master
$ git read-tree --prefix=AnyDirectoryToPutItIn/ -u OtherRepository/master
$ git commit -m "Merge OtherRepository project as our subdirectory"`

তারপরে, অন্য ডিরেক্টরিটিকে আপনার ডিরেক্টরিতে টানতে (এটি আপডেট করার জন্য) সাবট্রি মার্জ কৌশলটি ব্যবহার করুন:

$ git pull -s subtree OtherRepository master

আমি এখন বছরের জন্য এই পদ্ধতিটি ব্যবহার করছি, এটি কাজ করে :-)

উপ-মডিউলগুলির সাথে এটির তুলনা সহ আরও অনেক কিছু এই গিট হাওয়ে ডকটিতে পাওয়া যেতে পারে ।


গিট বইতে সাবট্রি মার্জিং রেফারেন্স আর কাজ করে না। বর্তমানে, এটি লিঙ্ক হিসাবে দেখা যাচ্ছে: git-scm.com/book/en/v2/…
এরিকেক্স

18

আপনি যোগ করতে পারে

/project_root/third_party_git_repository_used_by_my_project

প্রতি

/project_root/.gitignore

যা নেস্টেড রেপোকে পিতামাতার রেপোতে অন্তর্ভুক্ত করতে বাধা দেয় এবং আপনি তাদের সাথে স্বাধীনভাবে কাজ করতে পারেন।

তবে: যদি কোনও ব্যবহারকারী প্যারেন্ট রেপোতে গিট ক্লিন-ডিএফএক্স চালায় তবে এটি উপেক্ষিত নেস্টেড রেপো সরিয়ে ফেলবে। অন্য উপায় হ'ল ফোল্ডারটি সিলেকিং করা এবং সিমিলিংক উপেক্ষা করা। এরপরে আপনি যদি গিট ক্লিন চালান, সিমিলিংকটি সরানো হবে, তবে 'নেস্টেড' রেপো অক্ষত থাকবে কারণ এটি অন্য কোথাও রয়েছে।


14

গিট-সাবট্রি আপনাকে একটি গাছে একাধিক প্রকল্পের সাথে কাজ করতে এবং তাদের জন্য পৃথকযোগ্য ইতিহাস রাখতে সহায়তা করবে।


3
এই বৈশিষ্ট্যটি পরবর্তীকালে গিটের সাথে একীভূত করা হয়েছে। এখানে একটি সুন্দর বিবরণ দেওয়া আছে: developer.atlassian.com/blog/2015/05/the-power-of-git-subtree
23

5

সারসংক্ষেপ.

আমি কি গিট সংগ্রহস্থলগুলিতে বাসা বাঁধতে পারি?

হ্যাঁ. তবে, ডিফল্ট গিট .gitনেস্টেড সংগ্রহস্থলের ফোল্ডারটিকে ট্র্যাক করে না । গিটে নেস্টেড সংগ্রহস্থলগুলি পরিচালনা করার জন্য ডিজাইন করা বৈশিষ্ট্য রয়েছে (পড়ুন)।

স্থানীয়ভাবে সমস্ত কিছুর ব্যবস্থাপনায় স্বাচ্ছন্দ্য বানাতে / প্রকল্প_রূট যুক্ত করার অর্থ কি বা আমার_প্রজেক্ট এবং তৃতীয় পক্ষকে আলাদাভাবে পরিচালনা করতে হবে?

নেটেড রেপোজিটরিগুলি পরিচালনা করার জন্য গিটের বৈশিষ্ট্য রয়েছে বলে এটি সম্ভবত বোধগম্য নয়। Git পরিচালনা করতে নেস্টেড ভান্ডার হয় বৈশিষ্ট্যগুলিতে নির্মিত submoduleএবং subtree

এখানে বিষয়বস্তুতে একটি ব্লগ এবং এখানে একটি এসও প্রশ্ন রয়েছে যা প্রতিটি ব্যবহারের উপকারিতা এবং বিধিগুলি কভার করে।


2

আমি প্রতি প্রকল্পে একটি করে সংগ্রহস্থল ব্যবহার করব। এইভাবে, ইতিহাস ব্রাউজ করা সহজ হয়ে যায়।

আমি যে তৃতীয় পক্ষের গ্রন্থাগারটি ব্যবহার করছি এটি ব্যবহার করে প্রকল্পের ভাণ্ডারটিতেও পরীক্ষা করে দেখব।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.