গিটের মতো একটি বিতরণযোগ্য সংস্করণ নিয়ন্ত্রণ ব্যবস্থা ব্যবহার করুন এবং রেফারেন্সের সংগ্রহস্থল সঞ্চয় করতে আপনার ভাগ করা ফোল্ডার মেশিন ব্যবহার করুন। কারণটা এখানে:
প্রতিটি ক্লোন একটি ব্যাকআপ হয়
সার্ভার হার্ড ড্রাইভ ক্রাশ হয়ে গেলে, প্রত্যেকের একটি অনুলিপি থাকে, একটি নতুন ড্রাইভ বা সার্ভারে স্থাপন করার জন্য প্রস্তুত। আপনার সংস্থাটি সংস্করণ নিয়ন্ত্রণ সম্পর্কে গুরুতর নয় বলে আমি মনে করি ব্যাকআপগুলির সাথে এটি বেশ একইরকম হতে পারে।
সাধারণ রেফারেন্স
মাস্টার ব্রাঞ্চের সাথে একটি প্রধান সংগ্রহস্থল থাকার ফলে সর্বশেষ শব্দটির সংস্করণটি জানতে পারবেন। এটি "ফ্রাঙ্কের সংস্করণের বিপরীতে আপনি নিজের পরিবর্তনগুলি পরীক্ষা করেছেন, তবে আপনার কি জন আছে? এবং আপনি কীভাবে সেগুলি একীভূত করেছিলেন?"
আরও আরামে বিতরণ করুন
গ্রাহক আজ একটি আলফা সংস্করণ চান? ঠিক আছে, আপনি পরীক্ষা করতে পারেন যে মাস্টার যথেষ্ট স্থিতিশীল এবং শিপ করে। যদি এটি না হয় এবং এটি ঠিক করার সময় আপনার কাছে নেই, তবে সময়মতো ফিরে যান এবং একটি পুরানো তবে আরও স্থিতিশীল সংস্করণ পান। আপনার যদি কেবল সর্বশেষতম সংস্করণ থাকে তবে আপনি এটি করতে পারবেন না।
সময়মতো ফিরে যান এবং আপনার ভুলগুলি ঠিক করুন
আপনার ম্যানুয়াল মার্জটিতে এমন সমস্যা ছিল যা আপনি কেবল কয়েক দিন পরে দেখেছিলেন, তবে আপনি ইতিমধ্যে আপনার ভাগ করা ফোল্ডারগুলির সামগ্রীটি ওভাররাইট করেছেন? কোনও ভিএসসি ছাড়া আপনার কোনও ইতিহাস নেই তাই আপনি সহজেই এমন বিন্দুতে ফিরে যেতে পারবেন না যেখানে আপনি নিজের ভুলগুলি পরীক্ষা করে তা ঠিক করতে পারেন fix কোড কোনও ছবির মতো নয়, এটি সিনেমার মতো: এটি সময়ের সাথে বিকশিত হয়। আপনি একটি সিনেমা থেকে একটি ছবি বের করতে পারেন। আপনি কোনও ছবি থেকে মুভিটি বের করতে পারবেন না।
আরও সহজে বাগগুলি সন্ধান করুন
একটি ত্রুটি উপস্থিত হয়েছিল তবে এটি প্রবর্তনের সময় আপনি সত্যিই লক্ষ্য করেন নি, তাই কোড "গরম" থাকাকালীন আপনি এটিকে ঠিক করতে পারবেন না। এখন আপনি কী জানেন যে কোন পরিবর্তনটি এটি চালু করেছে, তাই এটি কোডের বিভিন্ন স্থান থেকে আসতে পারে। কোথায় দেখতে হবে তা আবিষ্কার করতে কয়েক ঘন্টা সময় লাগবে। গিটের সাহায্যে আপনি একটি নির্দিষ্ট সংস্করণে ত্রুটিটি ঘটেছে কিনা তা বলার জন্য কেবল একটি পরীক্ষা তৈরি করতে পারতেন git bissect
এবং বাগটি প্রবর্তনের সঠিক প্রতিশ্রুতি সন্ধান করতে পারেন use কোডের কয়েক হাজার লাইনের সন্ধানের পরিবর্তে, আপনি এখন জানেন যে এটি 10 টি লাইন পরিবর্তিত অবস্থায় রয়েছে এবং বাগটি আবার চালু না হয়েছে তা নিশ্চিত করতে আপনি পরীক্ষা টেস্ট স্যুটে রাখতে পারেন।
প্রতিটি বিকাশকারী তার নিজের কাজের জন্য দায়ী
আপনি যদি দলের নেতা হন এবং ভিসিএস না রাখেন তবে আপনাকে সম্ভবত সবচেয়ে খারাপ কাজ করতে হবে, সংহতকরণ। আপনি যদি এটি নিজে থেকে করেন তবে আপনি সম্ভবত সমস্ত পরিবর্তন সম্পর্কে সমস্ত কিছু জানেন না এবং ত্রুটিগুলি প্রবর্তন করতে পারেন। বিপরীতে, যদি আপনি সর্বদা মার্জ করার কোড আসে তখন কোডটি আপনার সাথে জড়ো করার জন্য কোড লিখে এমন লোকদের কাছে জিজ্ঞাসা করেন, তবে সেই সময়টি তারা নতুন কোড তৈরি করতে ব্যবহার করবেন না।
একটি ভিসিএসের সাথে, একটি সাধারণ কর্মপ্রবাহে, বিকাশকারীকে কেবল তার কাজ এবং তার পরিবর্তনের একটি বাহ্যিক উত্স: মাস্টার শাখা যত্ন নিতে হবে। মাস্টার শাখায় 1 বা 100 জন কমিট করে থাকতে পারে, এটি একই। তার পরিবর্তনগুলি ধাক্কা দিতে সক্ষম হতে তাকে অন্যদের দ্বারা সর্বশেষ পরিবর্তনের সাথে সেগুলি মানিয়ে নিতে হবে। কোডটি ঠেলাতে আরও বেশি সময় লাগে বলে মনে হতে পারে, তবে এটি কারণ আপনি যে সংযোজন করছেন তাতে যেভাবে সময় লাগত।
পার্থক্যটি হ'ল মার্জটি সেই ব্যক্তি দ্বারা করা হয় যে পরিবর্তনগুলি করেছিল, কে এই কোডটি সবচেয়ে ভাল জানেন কারণ তিনি সে লিখেছিলেন।
এই কোডটি কে লিখেছেন?
এখানে যে বাগটি রয়েছে, কিন্তু সেই নির্দিষ্ট কোডের লাইনটি কে লিখেছেন? এটি মনে রাখা শক্ত, বিশেষত যদি প্রকল্পটি জরায়ুর মাস স্থায়ী হয়। git blame
কে এবং কখন সেই লাইনটি লেখা হয়েছিল তা আপনাকে জানিয়ে দিতেন, যাতে আপনি সঠিক ব্যক্তিকে জিজ্ঞাসা করতে পারেন, এবং কোনও "আমার সে কথা মনে নেই"।
প্রকল্পটি আরও বড় হচ্ছে
গ্রাহক আরও বৈশিষ্ট্য চান এবং আপনি খুব ছোট একটি দল, আপনার আর একটি বিকাশকারী প্রয়োজন। আপনি কীভাবে কোনও ভিএসসি ছাড়াই বর্ধিত মার্জ জটিলতা পরিচালনা করবেন?
জরুরী পরিবর্তন
গ্রাহক ফোন করে এবং উত্পাদনের জন্য একটি গুরুতর বাগ ফিক্সের জন্য জিজ্ঞাসা করেছিলেন, তবে আপনি বর্তমানে একটি নতুন বৈশিষ্ট্যে কাজ করছেন। কেবল git stash
আপনার পরিবর্তনগুলি একপাশে রাখার জন্য, বা সেগুলি একটি নতুন শাখায় প্রতিশ্রুতিবদ্ধ করার জন্য এবং পরিবর্তনগুলি ধাক্কা দেওয়ার জন্য এবং আপনি আপনার মুলতুবি থাকা কাজটি হারিয়ে যাওয়ার আশঙ্কা ছাড়াই জরুরি ভিত্তিতে কাজ শুরু করতে প্রস্তুত।
এটি 10 মিনিট আগে কাজ করেছিল
আপনি স্থানীয়ভাবে কিছু পরিবর্তন করছেন এবং 10 মিনিট আগে কাজ করা কিছু কাজ করা বন্ধ করে দিয়েছে। কোনও ভিসিএস ছাড়াই আপনি কোডের দিকে তাকান বা সর্বোত্তম, রেফারেন্স সংস্করণটির একটি অনুলিপি করুন এবং আপনি কী পরিবর্তন করেন তা দেখতে আলাদা। ওহ অপেক্ষা করুন, আমি কাজ শুরু করার পরে রেফারেন্সটি পরিবর্তিত হয়েছে, তাই আমি আর পার্থক্য করতে পারি না। এবং আমি আমার পরিবর্তনের উপর ভিত্তি করে কোডটির একটি প্রাথমিক অনুলিপি রাখার কথা ভাবি নি।
একটি ভিসিএসের সাহায্যে আপনি ঠিক এখনই কিছু করতে পারেন git diff
এবং আপনি যে কোডটির উপর ভিত্তি করে করছেন তার ডান সংস্করণের তুলনায় আপনার পরিবর্তন হয়েছে changed
আমাকে আমার ডিবাগ লগ রাখতে হবে
সুতরাং আপনি একটি খারাপ লোক এবং লগিং ব্যবহার করবেন না? printf
যতক্ষণ না আপনি সেই সমস্ত বাজে বাগের সমস্ত টুকরা খুঁজে পেয়েছেন আপনাকে আপনার সমস্ত কোডবেসে ছিটানো হয়েছিল? এখন আপনি একটি খুঁজে পেয়েছেন, এটি ঠিক করেছেন, তবে বাকী সমস্যাগুলি ঠিক করার জন্য আপনার সাবধানতার সাথে তৈরি কারখানাটি তৈরি করা ডিবাগিং কোড রাখতে চান।
ভিসিএস ছাড়াই আপনাকে ফাইলগুলি অনুলিপি করতে হবে, ডিবাগিং কোডটি (যা কিছু সম্পাদনার ত্রুটি যুক্ত করতে পারে) পুনরুদ্ধার করতে হবে, এটি টিপুন এবং আপনার ব্যাক আপযুক্ত ফাইলগুলি ফিরিয়ে আনতে হবে। ওহ, তবে মনে হচ্ছে কিছু ডিবাগিং কোড যেভাবেই হয়েছে in
Git এর সাহায্যে, শুধুমাত্র git add --patch
এবং কোডের কয়েক লাইন আপনি আপনার কমিট মধ্যে লাগাতে চান নির্বাচন করুন, এবং কমিট করতে পারেন শুধুমাত্র যে। তারপরে আপনি নিজের কাজটি আবার শুরু করুন এবং এখনও আপনার ডিবাগিং কোডটি রয়েছে। আপনাকে কোডটি স্পর্শ করতে হয়নি, সুতরাং কোনও অনুলিপি / আটকানোর ত্রুটি নেই।
কাদা বড় বল
ভিসিএস না থাকলে লোকেরা তাদের পক্ষে কাজ করে, এবং আপনাকে অনেকগুলি পরিবর্তন দেয়, কখনও কখনও সম্পর্কিত নয়। যখন চেক করার জন্য খুব বেশি কোড থাকে, তখন বাগ খুঁজে পাওয়া শক্ত।
একটি ভিসিএস আপনাকে ছোট, ইনক্রিমেন্টাল পরিবর্তনগুলি করার অনুমতি দেয় এবং আপনাকে একটি চেঞ্জলগ দেয়। চেঞ্জলগ অপরিহার্য: লোকেদের অবশ্যই সেখানে বলছে যে তারা কেন পরিবর্তন করছে, পরিবর্তন কী তা নয় ( কোডটির উত্তর দ্বারা কী প্রশ্নের উত্তর দেওয়া হবে) not এর অর্থ যখন আপনি উদাহরণস্বরূপ কোনও নতুন বৈশিষ্ট্যের কিছু কোড পরিদর্শন করছেন তখন আপনাকে অনেকগুলি সম্পর্কযুক্ত মিশ্র পরিবর্তনগুলি যেমন সম্পর্কিত নয় বাগফিক্সেস পড়তে হবে না। এটি আপনার যত্নের কোডটিতে ফোকাস করতে সহায়তা করে।
আমি যদি আপনাকে 1 দ্বারা 1 টি 100 আলু দিই, এবং একটি পচা হয়ে যায়, আপনি অবিলম্বে এটি খুঁজে পাবেন। এখন যদি আমি আপনার সামনে 100 আলু ফেলে দিই এবং পচা একটি খুঁজে পেতে বলি, তবে এটি একই কাজ নয়।
খাঁজ
আশা করি আপনার ভাল কোডিং শৈলী নীতি আছে, অন্যথায় হাতছাড়া হয়ে গেলে ইনডেন্টেশন পরিবর্তনগুলি আপনাকে পাগল করে তুলবে। অবশ্যই, আপনি পরিবর্তনগুলিতে শ্বেত স্পেস উপেক্ষা করতে পারেন (পাইথনের মতো ইনডেন্টেশন গণনা করা হলেও ভাষাগুলিতে নয়)। তবে তারপরে আপনি অদ্ভুত চেহারার কোডটি পড়তে পারবেন।
আপনি প্রকল্প নেতা
আপনি যদি নেতা হন তবে এর অর্থ যদি জিনিসগুলি কাজ না করে তবে আপনি দোষ পাবেন। যদি আপনি পরিস্থিতির সাথে স্বাচ্ছন্দ্য বোধ করতে না পারেন কারণ আপনার বস এখনও বুঝতে পারেন না যে সঠিক কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করা মূল্যবান, তবে খুব কমপক্ষে, আমি কোনও অনুমানযোগ্য ব্যর্থতার নেতা হতে অস্বীকার করব।