মার্চুরিয়ালে গ্রাফ্ট ব্যবহারের ফলাফল


98

মার্চুরিয়ালে রিলিজ শাখাগুলি বজায় রাখার সময় পরিবর্তনগুলি এড়িয়ে যাওয়ার বিষয়ে সম্প্রতি বেশ কয়েকটি প্রশ্ন রয়েছে। উদাহরণ স্বরূপ:

যেহেতু এটি 2.0 তে চালু হয়েছিল, তাই আমি graftএই সমস্যাটি এড়াতে ব্যবহার করার বিষয়ে ভাবছি । এটির মতো একটি সংশোধন গাছ দেওয়া হয়েছে:

A---B---C---D---E---F---G---H---I---J

মনে করুন আমাদের একটি রিলিজ শাখা তৈরি করা দরকার যা theভিল পরিবর্তনকে এড়িয়ে চলে E

hg update -r D
hg graft "F::J"

আমাদের প্রদান:

A---B---C---D---E---F---G---H---I---J
             \
              --F'--G'--H'--I'--J'
  • প্রশ্ন 1: এখানে কি ঘটেছিল? আমি বুঝতে পারি যে transplantএটি থেকে প্যাচগুলি উত্পন্ন হবে F::Jএবং তারপরে সেগুলি প্রয়োগ করা হয়েছে D, তবে graftপ্যাচগুলির পরিবর্তে 3-উপায় সংহতকরণ ব্যবহার করার কথা রয়েছে। কাজটি কেমন হচ্ছে তাহলে? কেন এটা ভাল?

এখনই ঠিক করুন Eএবং এটিকে আমার মুক্তির শাখায় মার্জ করুন।

                  --E2-----------------
                 /                     \
A---B---C---D---E---F---G---H---I---J---M1
             \                            \
              --F'--G'--H'--I'--J'---------M2--

এম 1 একটি সরাসরি মার্জ; সেখানে বিশেষ কিছু নেই। এম 2 শাখাগুলি মার্জ করছে যা "একই" (বা কমপক্ষে সমতুল্য) পরিবর্তন রয়েছে।

  • Q2 এর: এই একত্রীকরণ শুধু একটি স্বাভাবিক 3-উপায় একত্রীকরণ ব্যবহার করছে D, J'এবং M1?
  • প্রশ্ন 3: মার্চিয়াল এটি মার্জটিতে সহায়তা করার জন্য গ্রাফট অপারেশন সম্পর্কে অতিরিক্ত তথ্য সংরক্ষণ / ব্যবহার করেছে?

এবং পরিশেষে...

  • প্রশ্ন 4: এর মতো প্রবাহের সম্ভাব্য সমস্যাগুলি কী কী?

উত্তর:


119

যখন আপনি আপডেট Dএবং গ্রাফ্ট আপডেট করেন F::J, মার্চুরিয়াল বেশ কয়েকটি সংশ্লেষ চালায়। এটি এই মার্জ দিয়ে শুরু হবে:

M = three_way_merge(local=D, other=F, base=E)

যদি আমরা +dরাজ্যগুলির মধ্যে ব-দ্বীপের জন্য লিখি Cএবং D, তবে আমরা শুরু করি:

        +d     +e     +f
---- C ---- D ---- E ---- F ----

গ্রাফটি 90 ডিগ্রি ঘড়ির কাঁটার দিকে ঘুরুন এবং উপরের তিন-মুখী মার্জটি দেখতে এই রকম দেখাচ্ছে:

    -e  
  .---- D
 /
E
 \
  '---- F
    +f

অর্থাৎ আমরা যে আমরা দিয়ে শুরু সাজা Eএবং বিপরীত প্রয়োগ -eপেতে D। আমি বিপরীত প্যাচ হিসাবে মনে করি +e। শুরু করে Eআমরাও Fস্বাভাবিক ব-দ্বীপ নিয়ে রাজ্যে গেলাম +f। এখানে অদ্ভুত কিছুই নেই - আমরা সব রাজ্যের (আছে D, Eএবং Fইতিমধ্যে সংগ্রহস্থলের মধ্যে)। সুতরাং এর মতো দেখা গেল, এটি স্পষ্ট যে আমরা একীভূত করতে পারি Dএবং F

মার্জ করা "হীরাটি সম্পূর্ণ করার" বিষয়। সুতরাং আমরা একটি নতুন রাষ্ট্র এটি Mএকটি মিশ্রণ যে Dএবং Fএবং কোথা থেকে পার্থক্য Dকরার জন্য Mঅনুরূপ +fথেকে পার্থক্য Fকরার জন্য Mঅনুরূপ -e। দেখে মনে হচ্ছে:

    -e     +f'
  .---- D ----.
 /             \
E               M
 \             /
  '---- F ----'
    +f     -e'

+fব-দ্বীপ হয়ে ওঠে +f'এবং -eব-দ্বীপ হয়ে ওঠে -e'। এই মাত্র একটি স্বাভাবিক তিনপথ একত্রীকরণ, কিন্তু প্রভাব আকর্ষণীয়: আমরা আবেদন করেছি Fসম্মুখের Dপরিবর্তে E!

একত্রীকরণ পর দ্বিতীয় পিতা বা মাতা Mথেকে Fঅবনমিত হয়েছে:

    -e     +f'
  .---- D ----.
 /             \
E               M
 \
  '---- F
    +f

পুনরাবৃত্তি করতে: আমরা "প্রভাব" কপি করা Fসম্মুখের Dযে, আমরা একটা ব-দ্বীপ (পাওয়া যায় +f') যে প্রয়োগ Dযখন একই কার্যকরকরণ +fপ্রয়োগ ছিল E। আমরা গ্রাফটি পেতে কিছুটা সোজা করতে পারি:

       +f'
--- D ---- M
     \
      '---- E ---- F
        +e     +f

ফলস্বরূপ এটি সম্পূর্ণ ত্রি-উপায় যন্ত্রপাতি ব্যবহার করে Fগ্রাফ্ট করা হয় D

  • প্রশ্ন 1: এখানে কি ঘটেছিল? কাজটি কেমন হচ্ছে তাহলে? কেন এটা ভাল?

    এ 1: একত্রীকরণের ব্যবহারগুলি প্যাচগুলির চেয়ে ভাল, যেহেতু মার্জ যন্ত্রপাতি নামগুলির মতো জিনিসগুলিকে বিবেচনা করে।

  • প্রশ্ন 2: এই ডিগ্রিটি কি কেবল ডি, জে এবং এম 1 ব্যবহার করে একটি সাধারণ 3-উপায় মার্জ হয়?

    এ 2: হ্যাঁ, গ্রাফটিং গ্রাফের টপোলজিকে পরিবর্তন করে না।

  • প্রশ্ন 3: মার্চিয়াল এটি মার্জটিতে সহায়তা করার জন্য গ্রাফট অপারেশন সম্পর্কে অতিরিক্ত তথ্য সংরক্ষণ / ব্যবহার করেছে?

    এ 3: না।

  • প্রশ্ন 4: এর মতো প্রবাহের সম্ভাব্য সমস্যাগুলি কী কী?

    এ 4: মার্জ দৃষ্টিকোণ থেকে এটি ঠিকঠাক কাজ করা উচিত। এটি এমন কিছু ইতিহাসের সদৃশ হবে যা লোকদের জন্য বিভ্রান্তিকর হতে পারে।


4
দুর্দান্ত প্রশ্ন, দুর্দান্ত উত্তর :)। দুজনের কাছেই +1!
লরেন্স হলস্ট

ধন্যবাদ মার্টিন এটি যে কিছু নিয়ে আসে তার কিছু সুন্দর মজার চিন্তাভাবনা। আমি ধারণা পেয়েছি, তবে সাধারণ ক্ষেত্রে কাজ করা দরকার। আমি অনুমান করছি যে এটি নোডগুলির মধ্যে যে পথে আপনি / থেকে গ্রাফ করছেন তা কোনও ব্যাপারই রাখে না?
পল এস

4
@ পলস: আমি মনে করি আপনার যা যা জানা দরকার তা হ'ল গ্রাফ্ট ট্রান্সপ্ল্যান্টের চেয়ে আরও শক্তিশালী উপায়ে চেঞ্জসেটগুলি অনুলিপি করতে পারে। শক্তিশালী অর্থে যে নামগুলি পরিচালনা করা হয় এবং আপনি মার্জ সরঞ্জামে বিরোধগুলি সমাধান করতে পারেন। বিশদগুলি এটির মধ্যে বিস্মৃত মার্জগুলিতে রয়েছে তবে এটি আশা করা যায় যে প্রতিদিনের গ্রাফের ব্যবহারের জন্য এটি বোঝার দরকার নেই! :-)
মার্টিন গিসলার

4
না, তবে আমি যে জিনিসগুলি আমার প্রয়োজন হবে না তা বোঝার চেষ্টা করার জন্য আমি চুষছি ;-) যাইহোক, আপনারটিকে বেস হিসাবে ব্যবহার করে আমি আরও সাধারণ উদাহরণ দিয়ে কাজ করেছি।
পল এস

@ পলস যদি তা হয় তবে আপনার কাছে এটি উল্লেখ করতে আমি প্রায় ভয় পাচ্ছি ... তবে আপনি ডার্কস এবং এর প্যাচ তত্ত্বটি সন্ধান করতে পারেন । গ্রাফ 90 ডিগ্রি ঘোরানোর বিষয়ে উপরের কৌশলটি আমাকে মিশ্রিত করার সময় প্যাচগুলি পরিবহণ সম্পর্কে কীভাবে কথা বলে তা অনেকটাই মনে করিয়ে দেয়। বেশ লোমশ স্টাফ :-)
মার্টিন গিজার

6

প্রশ্ন 1: দ্বন্দ্ব থাকলে এটি সহায়তা করে। আপনি তারপরে আপনার স্বাভাবিক সংযুক্তির সরঞ্জামটি ব্যবহার করতে পারেন (আমার জন্য এটি ইনলাইন বিরোধ বিরোধী মার্কার, যা আমি ইম্যাকসের স্রোম-মোড দিয়ে সম্পাদনা করি)।

প্রশ্ন 2: এটি একটি সাধারণ মার্জ।

প্রশ্ন 3: না।

প্রশ্ন 4: আমি মনে করি এটি প্রায় অভিন্ন শাখা থাকা কুৎসিত।

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