এই গিট ব্রাঞ্চিং মডেলটির কোনও ত্রুটি আছে কি?


10

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

(আপনার প্রতিটি প্রশ্নের জবাব দেওয়ার দরকার নেই, যা কিছু আপনি সাহায্য করতে পারেন)

  1. আপনি কি এটি বা অনুরূপ গিট ব্রাঞ্চিং ওয়ার্কফ্লো ব্যবহার করেন?

  2. আপনি কি এটি একটি উত্পাদনশীল পদ্ধতির বিবেচনা করেন?

  3. আপনি এই পদ্ধতির সাথে কোন ত্রুটি দেখতে পাচ্ছেন? কোন সম্ভাবনা খারাপ?

  4. আপনার যদি আরও ভাল পদ্ধতির থাকে, আপনি কি ভাগ করে নিতে, বা কোনও নিবন্ধের লিঙ্ক প্রদান বা এটি সম্পর্কে আলোচনা করতে আপত্তি করবেন?

উত্তর:


6

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

বৈশিষ্ট্যযুক্ত শাখাগুলির ক্ষেত্রে প্রথমে দুটি চিন্তাভাবনা রয়েছে:

  1. তাদের মার্জ করুন
  2. তাদের রিবেস

(1) নিবন্ধটি পরামর্শ বলে মনে হচ্ছে। মার্জ কমিটগুলির সমস্যাটি তথাকথিত এভিল মার্জগুলি । বিশেষত, যাঁরা উন্নয়নের পথে যুক্ত হন যেখানে কোনও শাখার কোনও শাখায় শব্দার্থবিজ্ঞানের পরিবর্তন ঘটে তবে স্বয়ংক্রিয়ভাবে সংহতকরণ অন্য শাখা থেকে আগত কোডের সমস্ত উপস্থিতি প্যাচ করতে ব্যর্থ হয়। এইভাবে চালু হওয়া সংবিধানগুলি ডিবাগ করা কুখ্যাতভাবে কঠিন। একজন জিআইটি ব্যবহারকারী হিসাবে আপনি সাধারণত নিবন্ধগুলি সম্পর্কে আরও বেশি স্বাচ্ছন্দ্যবোধ করতে পারেন, কারণ git bisectআপনাকে স্বয়ংক্রিয়ভাবে তাদের জন্য কারণগুলি খুঁজে পেতে হবে। তবে বর্ণিত পরিস্থিতিতে, git bisectমার্জ কমিটিকে নির্দেশ করবে, যা আপনাকে মোটেই সহায়তা করে না।

(২) যথাসম্ভব রৈখিক হিসাবে ইতিহাস বজায় রাখার চেষ্টা করে এই সমস্যা এড়ানো হয়। বিরোধীদের রিবায়েস দাবি করে যে এটি রিবেসের আগে আপনার করা কোনও পরীক্ষা অকার্যকর করে দিয়েছে।

ব্যক্তিগতভাবে, আমি দৃ camp়ভাবে শিবিরে (2) আছি, কারণ আমি git bisectপরীক্ষার কভারেজের সম্ভাব্য ক্ষতির চেয়ে ফলাফলগুলির বৈধতাটিকে বেশি মূল্যবান বলে মনে করি , যার জন্য যথাযথ সিআই সিস্টেম ব্যবহার করে সহজেই ক্ষতিপূরণ দেওয়া হয়।

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

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


+1, কখনও কখনও স্ক্র্যাচ নামে পরিচিত স্টেজিংয়ের ভাণ্ডারের কথা শুনেনি তবে আমি কল্পনা করতে পারি যে এটি "স্ক্র্যাচ থেকে শুরু করে" :-) থেকে আসে
স্পোকাইক

@ রেনহেনরিচস: আপনি কেন হাল ছাড়ার বিষয়ে একমত নন এই বিষয়ে আপনি শীতল রাখতে পারেন এবং তর্ক করতে পারেন
চার্লসবি

2
দুঃখিত। দাবি করা গিট দ্বিখণ্ডিত সমস্যাটি বিদ্যমান নেই। গিট দ্বিখণ্ডিত মার্জ কমিটগুলিতে দ্বিখণ্ডিত হতে পারে । বিকাশকারীর সংখ্যা (বা সাম্প্রতিক শাখা) বৃদ্ধি পাওয়ার সাথে সাথে একটি রৈখিক ইতিহাস বজায় রাখা কঠিন হয়ে পড়ে। তদ্ব্যতীত, শাখা এবং মার্জ না করে আপনি খুব শক্তিশালী ওয়ার্কফ্লো সরঞ্জাম এবং প্রথম স্থানটিতে গিট ব্যবহারের অন্যতম প্রধান সুবিধা হারাবেন। আপনাকে "বিকাশকারীদের মধ্যে ধাক্কা" দিতে হবে না, আপনি প্রতিটি বিকাশকারীর জন্য একটি রিমোট, পাবলিক (কমপক্ষে বিকাশকারী দলের মধ্যে) স্থাপন করতে পারেন। এটি করা সহজ। আপনি মূলত যা বর্ণনা করছেন তা হ'ল এসএনএন এর মতো গিট ব্যবহার করা।
রেন হেনরিচস

"অশুভ মার্জগুলি" পরীক্ষা চালানোর মাধ্যমে পরিপাটি করে প্রতিরোধ করা হয় । মার্জটি তাদের নিজেরাই দরকারী মেটাডেটা সরবরাহ করে। আমি নিশ্চিত নই যে বিপুল সংখ্যক স্থায়ী শাখাগুলির সাথে ওপি গিটের সংগ্রহস্থল বজায় রাখার অভিজ্ঞতা কী। শত শত স্থল শাখাসমূহ নিয়ে একটি ওপেন সোর্স প্রকল্পের সাহায্যে আমরা "রিবেস এবং সমতল" কৌশলটি চেষ্টা করেছি এবং এটি জটিলতার মধ্যে পড়েছে। আমরা কোনও একীভূত কৌশলতে স্যুইচ করেছি এবং অনুমিত কোনও ত্রুটি না ভোগ করে ইউটিলিটি যুক্ত করার সময় সমস্ত জটিলতা দিয়েছিলাম। ফ্ল্যাট কৌশলটি পাশাপাশি রাখার কারণ হিসাবে দেওয়া হয়েছিল। git bisect
রেন হেনরিচস

1
@ রেনহেনরিচস মিমুতজ যে "অশুভ সংশ্লেষ" বর্ণনা করছেন, তার git bisectএকার সাথে কিছু করার নেই । এটি তখন ঘটে যখন বৈশিষ্ট্য এ কোনও ফাংশন পরিবর্তন করে যা বৈশিষ্ট্য বি ব্যবহার করে। সমস্ত পরীক্ষাগুলি মার্জ হওয়ার আগে A এবং B উভয় ক্ষেত্রেই পাস করবে, তবে A এবং B এর মধ্যে অসঙ্গত পরিবর্তনের কারণে মার্জ টেস্টগুলি ভেঙে যেতে পারে - তবে git bisectএকটি শাখাটি অন্যটিতে আংশিকভাবে প্রয়োগ করতে পারে না, সুতরাং এর একমাত্র সূত্রটি হল যে মার্জ কমিট বাগ প্রবর্তিত হয় যখন হয়।
ইজকাটা

2

আমি বর্তমানে বিশাল এবং দীর্ঘ-সময়ের রিফ্যাক্টরিংগুলি (একটি অ্যাপ্লিকেশনটিকে অন্যের থেকে জিইউআই সরঞ্জামদানে রূপান্তর করা) এবং একটি সফল রিবেস-কেন্দ্রিক ওয়ার্কফ্লো সম্পাদন করে যাচ্ছি কারণ অন্যান্য দলের সদস্যরা নতুন বৈশিষ্ট্যগুলিতে কাজ চালিয়ে যাচ্ছেন:

মূলত দুটি প্রধান শাখা রয়েছে, masterযেখানে নতুন বৈশিষ্ট্যগুলি বিকশিত হয় এবং toolkit-conversionশাখাটি। সর্বাধিক গুরুত্বপূর্ণ নিয়মটি সহজ: কেবলমাত্র toolkit-conversionশাখায় এমন জিনিসগুলি করুন যা রূপান্তরগুলির জন্য প্রাসঙ্গিক। master(পুরানো জিইউআই সরঞ্জামকিট) এ যখনই কিছু করা যায় তখনই আমি সেখানে এটি করি এবং toolkit-conversionনতুন পরিবর্তনগুলিতে আমার পরিবর্তনগুলি পুনরায় ফিরিয়ে আনি master। আরেকটি নিয়ম হ'ল toolkit-conversionশাখাটি বেশ ছোট রাখা। অতএব আমি প্রায়শই রিসেট, চেরি-পিক এবং সংশোধন-প্রতিশ্রুতি এবং রিবেস ব্যবহার করি যার সাথে কম বেশি সংখ্যক বৃহত্তর লোকের সাথে আঠালো থাকে (যার শেষে একই উদ্দেশ্য থাকে)। আমি যখন এমন কিছু চেষ্টা করেছি যা পরিবর্তনটিকে "পূর্বাবস্থায় ফেরাতে" ভাল কাজ করে নি বা অস্থায়ী সহায়ক কোড সহ কিছু কোড রিফ্যাক্টর করার পরেও এটি কার্যকর হয়।

আমি থেকে পরিবর্তনগুলি মার্জ বিরুদ্ধে সিদ্ধান্ত নিয়েছে করেছি masterমধ্যে toolkit-conversionশাখা, কারণ এটি এটা অনেক কঠিন তার আগে করে রি-বেসের ফলে শাখা পরিষ্কার এবং পর্যালোচনা করা সহজ রাখার করতে হবে। এছাড়াও, মার্জগুলি দ্বন্দ্বগুলির পরিচয় দিতে পারে যার সমাধানগুলি পরিষ্কার ইতিহাস রাখার মতো পরিষ্কার নয়।

অবশ্যই, এই কাজের প্রবাহের অসুবিধাও রয়েছে। সর্বাধিক গুরুত্বপূর্ণটি হ'ল এটি একক ব্যক্তির পক্ষে কেবল ভাল কাজ করে। যখনই আমি toolkit-conversionশাখাটিকে মাথার masterকাছে রিবেস করার পরে জোর করে ধাক্কা দিই , অন্য সংগ্রহস্থলের উপরে টানাই কঠিন হয়ে যায় (স্বয়ংক্রিয়ভাবে ট্র্যাকিং শাখায় প্রত্যাবর্তনগুলি দ্বন্দ্বের সাথে ব্যর্থ হয়)।

শেষে, আমার toolkit-conversionশাখাটি সংক্ষিপ্ত, পরিষ্কার এবং পর্যালোচনা করা সহজ। এই জাতীয় শক্তি যেমন, এসভিএন দিয়ে এটি করা হয়েছে তা আমি ভাবতে পারি না।


2

আমি বর্তমানে যে সংস্থায় কাজ করছি তাতে আমরা কিছু সময়ের জন্য এই একই ব্রাঞ্চিং মডেলটির একটি প্রকরণ প্রয়োগ করছি। আমরা স্ক্রামও ব্যবহার করে যাচ্ছি তাই আমরা গল্পের কর্মপ্রবাহের প্রতি শাখা করি do

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

তদ্ব্যতীত, এটি বিশ্বাসযোগ্য হিসাবে প্রমাণিত হয়েছে :)।


1

আমি বর্তমানে এই ওয়ার্কফ্লোটি মানিয়ে নিতে ব্যস্ত। আমি মনে করি এটি বেশ ভাল ওয়ার্কফ্লো, কারণ এটি ব্রাঞ্চিং মডেলটি ব্যবহার করে যেখানে গিটটি ছাড়িয়ে যায়।

একমাত্র ক্ষুদ্রতর দিক হ'ল এই ওয়ার্কফ্লোটি ধরে রাখতে এবং শর্টকাট নেওয়ার চেষ্টা না করার ক্ষেত্রে কিছুটা শৃঙ্খলা লাগে।

কোহানার বিকাশকারীরাও এই ওয়ার্কফ্লোটি ব্যবহার করেন এবং তারা এটিকে বেশ পছন্দ করে বলে মনে হয়।


1

আপনি কি এটি বা অনুরূপ গিট ব্রাঞ্চিং ওয়ার্কফ্লো ব্যবহার করেন?

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

আপনি কি এটি একটি উত্পাদনশীল পদ্ধতির বিবেচনা করেন?

উত্পাদনশীল। আপনি উত্পাদনশীলতা কিভাবে সংজ্ঞায়িত করবেন? ভাল, আমার মনে এটি উচ্চমানের হওয়া সর্বাধিক গুরুত্বপূর্ণ, কমপক্ষে সর্বদা চেষ্টা এবং আরও ভাল মানের অর্জন করা। ক্রমাগত প্রক্রিয়াটির উন্নতি করা ইত্যাদি etc. আপনি যদি মানের কোড উত্পাদন করতে পারেন তবে উত্পাদনশীলতা এতে লাভবান হবে। সুতরাং প্রশ্নটি আসলে: এইটি কি সফটওয়্যারটির মান উন্নত করে? এবং আমার উত্তরটি অবশ্যই হ্যাঁ।

এই ধরণের ব্রাঞ্চিং মডেলের সাথে আমি যা সবচেয়ে বেশি পছন্দ করি তা হ'ল এটি মানের বিভিন্ন স্তরে শাখা প্রবর্তন করে। ছবিতে ডানদিকে তত বেশি, উচ্চ স্থায়িত্ব এবং উচ্চমানের। মাস্টার শাখা পবিত্র এবং এটিতে সমস্ত কমিটিকে সফ্টওয়্যারটির স্ট্যাবিল সংস্করণ হিসাবে বিবেচনা করা উচিত। আপনি যত বাম দিকে যান, তত বেশি পরীক্ষামূলক এবং আপনি যে স্থায়িত্ব পাবেন তত কম।

আপনি নতুন বৈশিষ্ট্য এবং বাগ ফিক্সগুলি পরীক্ষা করার সাথে সাথে আপনি এগুলিকে ধীরে ধীরে বাম থেকে ডানে স্থানান্তর করতে পারেন এবং এইভাবে উচ্চ মানের সহ কোডে স্থানান্তর করতে পারবেন ঠিক যখনই আপনি জানেন যে কোডটি কোডটির যে মানের প্রয়োজনীয়তাগুলি আপনি পূরণ করে তা জানেন। কমপক্ষে তত্ত্বের ক্ষেত্রে, যেহেতু আপনি 100% পর্যন্ত সমস্ত কিছু পরীক্ষা করতে পারবেন না এবং নিশ্চিতভাবেই জানেন যে কোডটিতে কোনও বাগ নেই না কারণ এটিতে সর্বদা বাগ থাকবে। তবে এটি আপনাকে উচ্চ আস্থা রাখতে সক্ষম করে।

প্রোগ্রামার হিসাবে আর কিছুই চোখে পড়ে না, এমন কোনও সিস্টেমে কাজ করা ছাড়া যেখানে কারও কোডের উপর আস্থা থাকে না, কারণ তারা জানে যে এটি কেবল সাকসই এবং এতে একটি ত্রুটিপূর্ণ লোড রয়েছে।

আপনি এই পদ্ধতির সাথে কোন ত্রুটি দেখতে পাচ্ছেন? কোন সম্ভাবনা খারাপ?

আপনার ব্রাঞ্চিং মডেলটির মাধ্যমে চিন্তা করা জরুরী যাতে এটি আপনার সংস্থার প্রয়োজনের সাথে ভালভাবে ফিট করে। এই মডেলটি কিছু লোকের পক্ষে ভাল কাজ করে বলে অগত্যা এটি অন্যের পক্ষে অনুকূল বা পছন্দসই নয়।

সর্বদা ট্রেড অফ রয়েছে এবং এমনকি এই ক্ষেত্রে। এক বাণিজ্য বন্ধ শাখা সংখ্যা বনাম। প্রচুর বিভিন্ন শাখার প্রকারের পরিচয় দিয়ে আপনি কর্মপ্রবাহের জটিলতা বাড়িয়ে তোলেন। উদাহরণস্বরূপ, যখন লোকেরা কোডের কয়েকটি লাইন পরিবর্তন করে একটি সাধারণ বাগ ঠিক করতে চেষ্টা করে তখন সর্বদা একটি নতুন বৈশিষ্ট্য শাখা তৈরি করতে লোককে বাধ্য করা ঠিক ভুল হতে পারে।

আমরা সকলেই জানি যে বাগগুলি সমাধান করা কমবেশি জটিল। সুতরাং, যখন একটি তুচ্ছ ত্রুটি আবিষ্কার হয় আপনি অতিরিক্ত ওভারহেড থেকে মুক্তি পেতে জটিলতা এবং প্রশাসনের উপর নির্ভর করতে পারেন এবং লোকেরা সরাসরি মাস্টার বা শাখা বিকাশ করার জন্য প্রতিশ্রুতিবদ্ধ হতে পারেন। তবে আপনার ফিক্সগুলির প্রকৃতি আরও জটিল হয়ে উঠলে তাদের জন্য নতুন শাখা তৈরি করা বাড়তি ওভারহেডের worth বিশেষত যদি আপনি এর আকার এবং দৈর্ঘ্য সম্পর্কে অনিশ্চিত হন বা আপনি এবং আপনার বিকাশকারীদের মধ্যে সহযোগিতা উন্নত করতে চান তবে।

আপনার যদি আরও ভাল পদ্ধতির থাকে, আপনি কি ভাগ করে নিতে, বা কোনও নিবন্ধের লিঙ্ক প্রদান বা এটি সম্পর্কে আলোচনা করতে আপত্তি করবেন?

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

সর্বাধিক গুরুত্বপূর্ণ বিষয় হ'ল গিট দিয়ে শুরু করা এবং বাকীগুলি স্বাভাবিকভাবে অনুসরণ করবে। সহজ শুরু করুন এবং ধীরে ধীরে উন্নতি করুন! সৃজনশীল হও!

চিয়ার্স

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