সংস্করণ ইতিহাস কি সত্যিই পবিত্র নাকি এটি পুনরায় চালু করা ভাল?


26

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

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

আমার খুব মতামতযুক্ত (যেমন বোবা, চতুষ্পদ, পক্ষপাতদুষ্ট) দৃষ্টিভঙ্গি হ'ল প্রোগ্রামাররা ভুলগুলি আড়াল করতে পুনরায় পছন্দ করেন ... এবং আমি মনে করি না যে এটি প্রকল্পের পক্ষে মোটেই ভাল নয়।

সুতরাং আমার প্রশ্ন হ'ল: আপনি কি বাস্তবে অনুশীলনের ক্ষেত্রে এই জাতীয় "জৈব কমিট" (অর্থাত্‍ অবহেলিত ইতিহাস) পাওয়ার জন্য মূল্যবান বলে মনে করেছেন? বা বিপরীতে, আপনি কি নিফটি ভাল-প্যাকড কমিটগুলিতে চালিত হওয়া এবং প্রোগ্রামারদের পরীক্ষা-নিরীক্ষার প্রক্রিয়াটিকে উপেক্ষা করা পছন্দ করেন?; আপনি যাকেই বেছে নিয়েছেন, কেন এটি আপনার পক্ষে কাজ করে? (ইতিহাস রক্ষার জন্য অন্যান্য দলের সদস্য থাকা বা বিকল্পভাবে, এটি রিবেস করা)


গুগল ডিভিসিএস বিশ্লেষণ প্রতি 1 , মার্চুয়ালিয়ায় "ইতিহাস পবিত্র Sac "


আপনি "মার্কুরিয়াল মন্ত্র" হিসাবে বলা হয়েছে যেখানে রেফারেন্স দিতে পারেন?
gnat

এখন যেহেতু আপনি এটি উল্লেখ করেছেন, আমি মনে করি এটি আসলে গুগলের ডিভিসিএস এনালাইসিস কোড. google.com/p/support/wiki/DVCSAnalysis থেকে এসেছে (তবে সত্যটি রয়ে গেছে)
ডিউকোফেমিং

উত্তর:


22

ইতিহাস পবিত্র, বর্তমান নয়। আপনি আপনার ডিভিসিএস "গাছ" দুটি ভাগে ভাগ করতে পারেন:

  • গত / ইতিহাস কীভাবে আপনি কোড বর্তমান অবস্থা পৌঁছেছেন সঠিক দৃশ্য ধারণ করে। ইতিহাসের এই অংশটি সময়ের সাথে সাথে বেড়েছে

  • বর্তমানে কোন অংশ আপনি বর্তমানে কাজ করছি আপনি কোড অভিব্যক্ত করা। এই টিপসের ইতিহাসের বেশিরভাগ অংশের প্রায় সবসময় একই আকার থাকে।

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

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

হ্যাঁ, দয়া করে এটি পুনরায় চালু করুন যদি এটি আপনার ইতিহাসের উন্নতি করে। আপনি যদি স্টাফগুলি ছাড়েন না তবে আপনি পায়ে নিজেকে গুলি করতে বাধা দেবেন Merc


এখন, আমি আপনার উত্তরটি আরও ভাল পছন্দ করেছি
ডিউকোফগেমিং

7

সমস্ত ভুল যে ধরণের আপনার লুকানোর দরকার তা নয় - উদাহরণস্বরূপ, আমি একবার দুর্ঘটনাক্রমে আমার রেপোতে একটি বাইনারি ফাইল প্রতিশ্রুতিবদ্ধ। ইতিহাসের সাথে চর্চা করা কেবল তখনই খারাপ যখন দোষটি ইতিহাসে একচেটিয়াভাবে থাকে না, যেমন প্রতিশ্রুতিবদ্ধ ফাইলগুলির মতো না।


1
সুতরাং আপনি কখনই আরও প্রতিশ্রুতিবদ্ধকে "যৌক্তিক" করতে পুনরায় দমন করবেন না?
ডিউকোফগেমিং

7

কোড পর্যালোচনা যখন খুব ছোট নির্ভরশীলগুলির বিপরীতে একটি বড় সমন্বিত পরিবর্তন হয় তখন কোড সহজ হয়।

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

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


4
এমন প্রচুর সরঞ্জাম রয়েছে যা একাধিক সম্পর্কিত পরিবর্তনের কোড পর্যালোচনা মোটামুটি তুচ্ছ করে তোলে, তাই নিজে থেকে, আমি এটিকে উত্তর হিসাবে কিনে না
জে.কে.

4
বেস পুনর্বিবেচনা এবং বৈশিষ্ট্য সম্পূর্ণ পুনর্বিবেচনার মধ্যে পার্থক্য পর্যালোচনা এবং সেই পুনঃ-ভিত্তিক কমিটগুলির একক প্রতিশ্রুতি পর্যালোচনা করার মধ্যে কীভাবে কোনও পার্থক্য রয়েছে? এটি অভিন্ন দেখতে যাচ্ছে যদি রি-বেসটি সঠিকভাবে এটি কাজ করে!
বুথ

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

9
আমি সম্পূর্ণ একমত। গত কয়েক বছর ধরে আমরা কোড পর্যালোচনার জন্য একটি সরঞ্জাম ব্যবহার করেছি এবং পর্যালোচনার জন্য একটি বড় 30+ ফাইল চেঞ্জেট জমা দেওয়ার চেয়ে বেশি কিছু আমি ঘৃণা করি নি। ছোট ছোট অনেক পরিবর্তন পাওয়া খুব সহজ। উদাহরণস্বরূপ, আমি এই ক্লাসটির নাম xyz রাখলাম কারণ এটি পরিবর্তিত দায়বদ্ধতার প্রতিফলন করে। আমি পদ্ধতি এনএন যুক্ত করেছি কারণ আমার এটির জন্য বেলা প্রয়োজন for ছোট পর্যালোচনাগুলি পরিচালনা করতে অনেক সহজ।
পিট

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

4

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

আমি মনে করি না যে জৈব কর্মপ্রবাহগুলি এগুলি ভাল করে তোলে, এমনকি আমার নিজেরও। আমি যখন কোডিং করছি তখন ডিভিসিএসের জন্য আমি যে গুণাগুলি মূল্যবান বলে মনে করি - সস্তা শাখা, দ্রুত কমিট, প্রথম এবং প্রায়শই রিমোটে সঞ্চয় করে - আমার সংস্থার ইন্টিগ্রেশন ম্যানেজার হিসাবে আমি যা মূল্যবান তা নয় আমি বিষয়টি git rebase, git merge, git diff, এবং git applyঅনেক বেশী প্রায়ই যে এর চেয়ে চরিত্রে git addবা git commit। মত সরঞ্জামগুলি rebaseআমাকে কোডটি এমন কোনও কিছু থেকে দেওয়া হয়েছে যা রক্ষণযোগ্য can

অলৌকিক বা অস্পষ্ট কমিটগুলি দরকারী নয়, তবে প্রাথমিক উদ্বেগটি কোডটি কাজ করছে, অন্যকে বিতরণ না করে যখন তারা উদ্বেগজনকভাবে লিখতে পারে তবে এগুলি অজানা। কমিটগুলি আমার রক্ষণাবেক্ষণ-স্ব- কৃপণতা পছন্দ করে Case 15: Fixed a problemবা Refactored <cranky legacy feature>তৈরি করে, এমনকি যখন আমি সেগুলি লেখি। তবে কোনওটিই "ইনক্রিমেন্টাল" কমিটের মতো ব্ল্যাকআউট ক্রোধকে প্ররোচিত করে না। এই বিষয় শাখাটি বিবেচনা করুন একজন বিকাশকারী অন্য দিন আমাকে হস্তান্তর করেছেন:

$ git log production..topic --oneline
f9a1184 incremental update
156d299 incremental commits
e8d50b0 new incremental updates
511c18c incremental updates, refactor
1b46217 incremental upgrade
9e2b3b8 incremental update
fa68a87 incremental update

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

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


খুব সুন্দর উত্তর, কেন
পুনর্বাসনের

2

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

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


1

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


আপনি যা বলছেন তা হ'ল আপনি একটি বেসলাইন শাখা (যেমন মাস্টার / ডিফল্ট, উত্পাদন / প্রকাশ, ভিএক্স.এক্স, ইত্যাদি) সম্পাদনা করার উপরে কাজের শাখাগুলির পক্ষে?
dukeofgaming
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.