মাস্টার থেকে আমার কাজের শাখায় পরিবর্তনগুলি টানছেন?


16

আমরা দুজনে কিছু নিয়ে কাজ করছি। আমরা এই শাখা কাঠামোটি ব্যবহার করছি

  • মনিব
  • দেব-একটি
  • দেব-বি

আমরা দুজনেই আলাদা শাখায় কাজ করি (দেব-এ, বি) এবং যখনই আমরা শেষ করি - আমরা আমাদের পরিবর্তনগুলিকে মাস্টার হিসাবে প্রচার করি।

তবে এর অপূর্ণতা হ'ল আমরা অন্যান্য বিকাশকারী যে পরিবর্তনগুলি করতে পারি তা পেতে পারি না। মাস্টার ট্রিতে সবকিছু বিদ্যমান - তবে আমরা অন্যান্য বিকাশকারীদের তৈরি সর্বশেষ আপডেটগুলি পেতে পারি না।

এটি সমাধান করার কোনও উপায় আছে বা আমাদের শাখার কাঠামোটি (বৈশিষ্ট্য অনুসারে?) পরিবর্তন করা উচিত?

উত্তর:


16

আমি বিকাশকারী শাখা দুটি প্রধান দৃশ্যে ব্যবহৃত দেখেছি:

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

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

আপনার সিআইয়ের দরকার কেন তা নিয়ে আমি এটুকু উজ্জীবিত হয়ে উঠতে চাই না, তবে আপনার প্রশ্ন থেকে এটা স্পষ্ট হয়ে গেছে যে আপনি জানেন যে আপনি প্রায়শই আপনার পরিবর্তনগুলি সংহত করছেন না, সুতরাং আইএমও ইস্যুটির চারপাশে নাচের কোনও মানে নেই।

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

আমি বর্তমানে প্রায় ৩৫ টি অবদানকারীদের একটি গ্রুপের অংশ যা 4 টি পৃথক দলে বিভক্ত, বেশিরভাগ মানুষ দিনে কমপক্ষে ২-৩ বার চেক করেন, কিছু লোক 10-15 বার; বিল্ডগুলি ভাঙ্গা এবং কয়েক মিনিটেরও বেশি সময় ধরে তাদের ভাঙা চলা বিরল দেখতে অস্বাভাবিক। গিট হ্যান্ডলগুলি বেশিরভাগ সময় অনায়াসেই একত্রিত হয়ে যায় যে দূরবর্তী বিকাশকারী শাখাগুলি কেবল অপ্রয়োজনীয় ওভারহেড থাকে। কেবল টানুন, স্থানীয়ভাবে মার্জ করুন, এবং চাপ দেওয়ার আগে প্রতিশ্রুতিবদ্ধ পরীক্ষাগুলি চালান, এটি সহজ।

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

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

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


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

15

আপনি যদি যান তবে আপনার ওয়ার্কিং শাখায়:

git commit -am "Committing changes before merge"
git merge master

আপনি অন্যান্য বিকাশকারী শাখা থেকেও মার্জ করতে পারেন

git checkout dev-A
git merge dev-B

এটি যা করবে তা হ'ল মাস্টার পরিবর্তনগুলি আপনার বিকাশ শাখায় মার্জ করা


হ্যাঁ - এটি এক উপায়। আমি আশা করছিলাম গিট এর জন্য একটি মার্জিত ওয়ার্কফ্লো থাকবে।
উত্কর্ষ সিনহা

2
ভাল গিটটি সাধারণত সর্বোত্তমভাবে কাজ করে যদি প্রতিটি বিকাশকারীর নিজস্ব স্থানীয় ওয়ার্ক রিপোজিটরি থাকে এবং একটি ভাগ করা কেন্দ্রীয় সংগ্রহস্থল থাকে যা বিকাশকারীরা ধাক্কা দেয় এবং এটিকে টান দেয়। এইভাবে আপনি প্রতিটি একই শাখায় কাজ করতে পারবেন এবং কেন্দ্রীয় সংগ্রহস্থলে চাপ দিয়ে টানতে এবং পরিবর্তনগুলি দ্বারা আপডেটগুলি পেতে পারেন। এটি সম্ভবত আপনি যে কমনীয়তার সন্ধান করছেন। সংঘাত না থাকলে গিটটি স্বয়ংক্রিয়ভাবে আপনার জন্য মার্জিং পরিচালনা করবে। কর্মপ্রবাহের জন্য গিট ফ্লো একটি দুর্দান্ত সংযোজন।
scaryrawr

Perfecto থেকে। কয়েকটি স্থানে এই সঠিক প্রশ্নের জন্য কয়েকটি খুব দীর্ঘ উত্তর রয়েছে তবে git merge masterপরীক্ষিত বৈশিষ্ট্য শাখায় থাকাকালীন আমি যা খুঁজছিলাম। ধন্যবাদ
Drenai

3

যদি ডেভ-এ এবং দেব-বি বিভিন্ন প্রকল্পের জন্য আলাদা শাখা হয় তবে @scaryrawr যা উত্তর দিয়েছে তা সবচেয়ে ভাল হবে।

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

এরপরে আপনি দেবওয়ার্কের উপর মাস্টার ইত্যাদিতে কাজ করার জন্য মানক পদ্ধতিগুলি অনুসরণ করতে পারেন

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