গিট সাবমডিউল ট্র্যাকিং সর্বশেষ


136

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

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

আমি গিটস্লাভের দিকে নজর রেখেছি, তবে এটি আমরা যা চাই তা ঠিক নয়। কোনও পরামর্শ?


আপনি কোনও সরঞ্জাম জিজ্ঞাসা করার সময়, আমি কেবল এই প্রশ্নটি সংযোগ করতে চাই যা একই কাজ করে এক-লাইনার সংগ্রহ করে: স্ট্যাকওভারফ্লো
টোবু

গিট এখন সাবমডিউলগুলি সহ সর্বশেষতম ট্র্যাকিংয়ের প্রস্তাব দেয়: আমার সম্পাদিত উত্তর দেখুন।
ভনসি

উত্তর:


235

মার্চ 2013 আপডেট করুন

গিট 1.8.2 শাখাগুলি ট্র্যাক করার সম্ভাবনা যুক্ত করেছে।

" git submodule" রিমোট শাখার টিপের সাথে সংহত করার জন্য একটি নতুন মোড শিখতে শুরু করেছে (সুপারপোজোর গিটলিংকে রেকর্ড করা কমিটের সাথে একীকরণের বিপরীতে)।

# add submodule to track master branch
git submodule add -b master [URL to Git repo];

# update your submodule
git submodule update --remote 

আপনার যদি সাবমডিউল ইতিমধ্যে উপস্থিত থাকে তবে এখন আপনি একটি শাখা ট্র্যাক করতে ইচ্ছুক, " কীভাবে একটি বিদ্যমান সাবমডিউলটিকে একটি শাখা ট্র্যাক করতে হয় " দেখুন।

সাবমোডিয়ুলগুলিতে সাধারণ তথ্যের জন্য সাবমোডিয়ালে ভোগেলা টিউটোরিয়ালটিও দেখুন ।

বিঃদ্রঃ:

git submodule add -b . [URL to Git repo];
                    ^^^

git submoduleম্যান পৃষ্ঠা দেখুন :

এর একটি বিশেষ মান .ব্যবহৃত হয় যা উপস্থাপকের শাখার নামটি বর্তমান সংগ্রহস্থলের বর্তমান শাখার একই নাম হওয়া উচিত


কমিট b928922727d6691a3bdc28160f93f25712c565f6 দেখুন :

submodule add: যদি --branchদেওয়া হয় তবে এটি রেকর্ড করুন.gitmodules

submodule.<name>.branchআপনি .gitmodulesযখন নতুন সাবমডিউল যুক্ত করবেন তখন এটি আপনাকে সহজেই একটি বিকল্প রেকর্ড করতে দেয় । এই প্যাচ সহ,

$ git submodule add -b <branch> <repository> [<path>]
$ git config -f .gitmodules submodule.<path>.branch <branch>

হ্রাস

$ git submodule add -b <branch> <repository> [<path>]

এর অর্থ ভবিষ্যতের দিকে আহ্বান

$ git submodule update --remote ...

আপনি একই শাখা থেকে আপডেট পাবেন যা আপনি সাবমডিউলটি সূচনা করার জন্য ব্যবহার করেছিলেন যা সাধারণত আপনি চান।

সাইন-অফ-বাই: ডাব্লু ট্র্যাভার কিং


আসল উত্তর (ফেব্রুয়ারী ২০১২):

একটি submodule একটি একক প্রতিশ্রুতি যা পিতামাতার রেপো দ্বারা রেফারেন্স করা হয়।
যেহেতু এটি নিজেই একটি গিট রেপো, তাই "সমস্ত কমিটের ইতিহাস" git logসেই সাবমডিউলের মধ্যেই অ্যাক্সেসযোগ্য ।

সুতরাং কোনও পিতামাতার একটি সাবমডিউলের প্রদত্ত শাখার সর্বশেষতম প্রতিশ্রুতিটি স্বয়ংক্রিয়ভাবে ট্র্যাক করার জন্য এটির প্রয়োজন হবে:

  • সাবমডিউলে সিডি
  • ডান শাখায় সর্বশেষতম কমিট রয়েছে তা নিশ্চিত করতে গিট আনুন / টানুন
  • সিডি ফিরে প্যারেন্ট রেপো
  • সাবমডিউলের নতুন কমিট রেকর্ড করার জন্য যুক্ত এবং প্রতিশ্রুতিবদ্ধ।

গিটস্লভ (যা আপনি ইতিমধ্যে দেখেছিলেন) কমিট অপারেশন সহ সেরা ফিট বলে মনে হচ্ছে ।

সঠিক সাবমডিউল শাখায় পরীক্ষা করে দেখা, পরিবর্তন করা, প্রতিশ্রুতিবদ্ধকরণ এবং তারপরে সুপারপ্রজেক্টে গিয়ে কমিট কমিট করার প্রয়োজনের কারণে সাবমোডুলে পরিবর্তন করা একটু বিরক্তিকর হয় (বা কমপক্ষে নতুন অবস্থানে রেকর্ড করুন) submodule)।

অন্যান্য বিকল্পগুলি এখানে বিশদ


1
@BraveNewMath আপনি আপনার submodule সঠিক শাখা চেকআউট করতে হবে, তারপর আপনার পিতা বা মাতা রেপো যান এবং টাইপ করুন: git config -f .gitmodules submodule.<path>.branch <branch>। সমস্ত কিছু যুক্ত করুন, প্রতিশ্রুতিবদ্ধ এবং ধাক্কা।
ভনসি

2
@BraveNewMath আমি বিস্তারিত সব submodule একটি শাখা ট্র্যাক তৈরীর জন্য পদক্ষেপ stackoverflow.com/a/18799234/6309
ভনসি

1
--remoteআপনি আপডেট করার সময় আপনি আলাদা হওয়া মাথা পেতে না চাইলে ট্যাগটি ব্যবহার করা গুরুত্বপূর্ণ , ভাবছেন কেন আপনার তাজা টানা কোডটি মাস্টারের পিছনে রয়েছে বলে মনে হচ্ছে!
ক্রিস ওয়াটস

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

3
@ ভনসি তাই আরও স্পষ্ট করার জন্য, "একটি শাখা অনুসরণ করা" বৈশিষ্ট্যটি কেবল git submodule updateকম্যান্ডের আচরণের উপর প্রভাব ফেলে যা কোন কমিট (অর্থাত্ মাস্টার সম্পর্কে সর্বাধিক সাম্প্রতিক কমিট) সাবডমডিউলটি আপডেট করতে স্বয়ংক্রিয়ভাবে প্যারেন্ট রেপোকে আপডেট করার কারণ নয় প্রতিশ্রুতিবদ্ধ ক্লোন সময় submodule দ্বারা নির্দেশিত হয়?
খ্রিস্টান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.