গিটিহাবের উপরে আমার প্রকল্পের সংস্করণগুলি কীভাবে নিয়ন্ত্রণ করব


13

আমি আজকাল গিটহাবের পক্ষে যতটা পারি সময় ব্যয় করার চেষ্টা করছি (এমনকি আমি কাজের একমাত্র দলের একমাত্র ব্যক্তি) সত্যই অনুভব করতে পারি যে এটি বাস্তবের কর্পোরেট কর্পোরেট অ্যাপ্লিকেশনটির জন্য কেমন হতে চলেছে।

আমি যে প্রশ্নটি করছি তা হ'ল সংস্করণটি নিয়ন্ত্রণ করা । ধরা যাক আমরা একটি প্রকল্প শুরু করেছি। তারপরে, দলের সদস্যরা কিছু শাখা তৈরি করে সেখানে বিকাশ করে। যখন আমরা উত্পাদনের জন্য প্রস্তুত থাকি তখন আমরা সমস্ত শাখাকে শাখার সাথে একীভূত করি master। শেষে, আমরা সংস্করণ সহ লাইভ যান 1.0

এখন সেই সংস্করণটি 1.0লাইভ এবং সেই সফ্টওয়্যারটির সংস্করণটির জন্য আমাদের কিছু সমস্যা রয়েছে। আমরা 1.1প্রকল্পটিতে ছুটে এসে যে সমস্যাগুলি প্রবর্তন করেছি সেগুলি সমাধান করার জন্য আমরা সংস্করণটির বিকাশ শুরু করতে চাই ।

এখন, প্রশ্নটি হ'ল:

আমাদের এখানে সংস্করণটি কীভাবে নিয়ন্ত্রণ করা উচিত?

আমাদের কি সেখানে একটি নতুন শাখা তৈরি করা উচিত v1.0এবং 1.0সেখানে সফ্টওয়্যারটির সংস্করণ রাখা উচিত এবং কিছু শাখায় বিকাশ করা উচিত (বা না) সেগুলিতে একত্রীকরণ করা master, সংস্করণ সহ লাইভ করা উচিত 1.1?

এই ধরনের পরিস্থিতিতে জন্য কোন সম্মেলন আছে?

উত্তর:


19

আমি নিম্নলিখিত শাখার মডেলটি খুঁজে পেয়েছি (এবং গ্রহণ করতে শুরু করেছি) :

ছবিটি এনভিএ ডটকম থেকে

(নিবন্ধ থেকে চিত্র)

এই নিবন্ধে বর্ণিত প্রচুর দুর্দান্ত অনুশীলন এবং কঠোর নিয়ম রয়েছে, আমি এটির সুপারিশ করছি।

আগ্রহের বিষয়:

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

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


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

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

প্রোজিট হ'ল একটি বই যা আমি অবশ্যই স্ক্র্যাচ থেকে পড়ব। আপাতত আমি কেবল সেই অংশগুলিই পড়ছি যা কাজটি করতে আগ্রহী। এখনও অবধি, আমরা মাস্টার শাখায় বিকাশ করেছি এবং আমি মনে করি আমার এটি বজায় রাখা উচিত। তবে আমি নামকৃত অন্য একটি শাখা খুলব productionএবং masterউপরের মডেল অনুযায়ী এটি শাখা হিসাবে ব্যবহার করব ।
tugberk

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

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

1

আমি বেশিরভাগ সময় যা প্রত্যক্ষ করেছি তা হ'ল:

  • মাস্টার আপনার পণ্য জন্য। অবশেষে আপনার ভবিষ্যতের সমস্ত সংস্করণ x.0 মাস্টারে আসবে।
  • আপনি উত্পাদনের প্রতিটি সংস্করণের জন্য একটি ট্যাগ / শাখা তৈরি করেন যাতে আপনি এখনও প্রয়োজন এমন যে কোনও গ্রাহকের জন্য তাদের সমর্থন করতে পারেন।
  • এক বা অন্যের থেকে সংশোধনগুলি মার্জ করা প্রতি কেস ভিত্তিতে ডিল করা।

ধন্যবাদ! সুতরাং আপনি কী ভাবেন যে v1.0 নামে একটি শাখা রাখা যুক্তিসঙ্গত, v1.2 যুক্তিসঙ্গত?
tugberk

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