আপনি কীভাবে সামান্য পরিবর্তনগুলি পরিচালনা করেন যা আপনি স্থানীয়কে পারদর্শী রাখতে চান?


9

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

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

উত্তর:


5

আমি এটি এইভাবে পরিচালনা করি:

আমার স্থানীয় সংগ্রহশালায়, আমি পরীক্ষা-নিরীক্ষা করেও, প্রতিটি পরিবর্তন প্রতিশ্রুতিবদ্ধ। আমি যদি পরীক্ষার সাথে ঠিক আছি, এবং এটি পরীক্ষা করা হয়, তবে আমি এটিকে দূরবর্তী সংগ্রহস্থলে রেখেছি। যদি তা না হয় তবে এটি আমার স্থানীয় সংগ্রহস্থলে থাকে (বা কোনও পুরানো সংশোধনীতে ফিরে যান)।

ধারণাটি হ'ল দূরবর্তী সংগ্রহস্থলে কেবলমাত্র আমার প্রকল্পগুলির কার্যকরী, পরীক্ষিত সংস্করণ রয়েছে।


3
আপনি কি দেখতে পান যে আপনার দূরবর্তী সংগ্রহস্থলটি "শেষ প্রতিশ্রুতিতে স্থির বাগ" ধরণের কমিটের সাথে বিশৃঙ্খল হয়ে পড়েছে?
এনমিকহেলস

4

আমি যুক্ত করব কয়েকটি জিনিস।

এক একটি কর্মপ্রবাহ যার সুবিচারপূর্ণ ব্যবহার করে সুপারিশ করা হয় সরাইয়া রাখা , যা দিয়ে মান হিসেবে জাহাজ TortoiseHg

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

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


4

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

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

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

আপনি যদি পরিবর্তনগুলি অন্যদিকে সরানোর জন্য প্রস্তুত থাকেন তবে আপনার কাছে বিকল্পের আরও একটি সেট রয়েছে। সবচেয়ে সহজ জিনিসটি হ'ল hg diffফাইলগুলিকে বর্ণনা করে এমন প্যাচ তৈরি করতে ব্যবহার করা যা আপনি কোথাও সুরক্ষিত রাখেন, তারপরে hg patch --no-commitপরিবর্তনগুলি ফিরে পেতে চাইলে সেই প্যাচটি পুনরায় প্রয়োগ করতে হবে । আপনি তাক এক্সটেনশন , অ্যাটিক এক্সটেনশান বা অন্য কোনও আত্মীয় ইনস্টল করে এটিকে মসৃণ করতে পারেন । আপনি সারি এক্সটেনশনটিও ব্যবহার করতে পারেন তবে এটি বাদাম ফাটানোর জন্য স্লেজহ্যামার ব্যবহার করছেন। আপনি এমনকি পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করতে পারেন, তারপরে পিতামাতার কাছে ফিরে আপডেট করুন এবং সেখানে অনড় একটি বেনাম শাখায় পরিবর্তন রেখে অন্য কাজ hg commit -m 'temporary branch' && hg up $(hg log -r 'parents(.)' --template '{node}')করতে বাধ্য করতে পারেন - (যদিও এটি ম্যানুয়ালি করা আরও সহজ হতে পারে!)। তবে আপনাকে সেই পরিবর্তনটি ধাক্কা না দেওয়ার জন্য যত্ন নিতে হবে, যদিও।


3

উন্নয়নের ধারাগুলি পৃথক করার জন্য দুটি প্রাথমিক পদ্ধতির ব্যবহার করা হয়।

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

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


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

আপনার দ্বিতীয় বুলেটটির জন্য কেন কোনও ক্লোন, কাজ করবেন না এবং আপনার সমাপ্তির পরে কেবল ধাক্কা দেবেন? এমকিউ এখানে জটিল হওয়ার শোনায়
TheLQ

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