"রিবেসিংয়ের সুবর্ণ নিয়ম" গিটটি কি এত প্রয়োজনীয়?


22

জিআইটিতে ফিচার শাখাগুলির পুনর্বাসনের কৌশলটির সম্পূর্ণ বিরোধী লোকজনের সাথে আমি সম্প্রতি আলোচনা করেছি। এটি কেবল স্থানীয়, বেসরকারী শাখাগুলির জন্য রিবেস ব্যবহার করার জন্য একটি গ্রহণযোগ্য প্যাটার্ন বলে মনে হচ্ছে তবে যখন এই তথাকথিত "রিব্যাসিংয়ের গোল্ডেন রুল" অনুসারে একাধিক ব্যক্তি একই বৈশিষ্ট্য ও শাখায় কাজ করছে তখন কখনই এটি ব্যবহার করবেন না (যেমন এখানে ব্যাখ্যা করা হয়েছে: https : //www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview )

আমি এই বিষয়ে একটি sensক্যমত্য আছে মাত্র অবাক। আমি প্রায় ২০ জন বিকাশকারী টোগেথারের সাথে কাজ করেছিলাম এবং এটি অনুমান করে কী কাজ করে তা নিয়ে আমি পুরো রিবিসিং কৌশল নিয়ে 3 বছর কাজ করেছি।

প্রক্রিয়াটি মূলত:

  • আপনি আপনার বৈশিষ্ট্য শাখাটি তৈরি করেন, আসুন একে "মাইফেচার" বলুন এবং এটিকে উত্স / মাইফিচারে ঠেলাও
  • অন্যান্য লোকেরা এটি পরীক্ষা করে দেখতে এবং এটিতে কাজ করতে পারে
  • আপনি কখনও কখনও এটি মাস্টারের কাছ থেকে রিবেস করতে পারেন: "মাইফেকচার" থেকে, গিট রিবেস উত্স / মাস্টার ; এবং তারপরে, হ্যাঁ, আপনাকে এটিকে চাপ দিতে হবে।
  • অন্যান্য লোকেরা যখন তাদের চুক্তিগুলি চাপতে চায় তখন কী ঘটে? তারা কেবল এটি পুনঃস্থাপন : গিট রিবেস উত্স / myfeature । সুতরাং তারা এখন দ্রুত এগিয়ে রয়েছে এবং জোর না করে এটিকে ধাক্কা দিতে পারে।

সম্মানের একমাত্র নীতিটি বৈশিষ্ট্য শাখাটি কারও মালিকানাধীন । মালিকই একমাত্র যিনি ধাক্কা দিতে পারেন।

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

তাহলে, কেন এই "রিবেসের গোল্ডেন রুল" এত ব্যাপকভাবে গৃহীত হচ্ছে? আমি এর সাথে অন্য কিছু মিস করেছি? আমি বুঝতে পারি এটির জন্য সর্বনিম্ন সংস্থার প্রয়োজন (প্রতিটি কৌশলটির কোনও না কোনও সংস্থার প্রয়োজন) তবে এটি কার্যকর হয় works


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

আমি যদি কারও কারও বৈশিষ্ট্য শাখাটিকে নিজের মধ্যে একীভূত করি?
উইনস্টন ইওয়ার্ট

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

উত্তর:


10

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

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

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


আপনি অবশ্যই মাস্টার, রিবেস এবং তারপরে জোর চাপতে পারেন, তবে এটি পারমাণবিক নয়।
কেভিন

@gbjbaanb আপনি একদম ঠিক বলেছেন, রিবেসিং কৌশলটি স্টাইলের কারণগুলি / আরও পঠনযোগ্য ইতিহাস। আমি এটি যুক্তি দেওয়ার চেষ্টা করছি না এটি ভাল, না। তবে এটি করা সম্ভব এবং এটিই আমি উত্থাপন করতে চাই। অবশ্যই আমি মাস্টারের উপর জোর-চাপ দেওয়ার কথা বলছিলাম না, তবে কেবল বৈশিষ্ট্য শাখায়।
জোয়েল

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

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

5

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

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

সেই বাণিজ্যের সাথে "খুব কম লোক একটি রিবেস এবং জোর করে ধাক্কা দেয়" এর ফলাফল খুব অবাক হওয়ার মতো নয়।

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


3
"আরে কেউ আমাকে কিছুক্ষণের জন্য চাপ দেবে না ..." .. ভিজ্যুয়াল সোর্স নিরাপদ ব্যবহারের পুরানো দিনের মতো শোনাচ্ছে। আমি ভেবেছিলাম গিট এর চেয়ে ভাল।
gbjbaanb

হ্যাঁ, এইভাবে লোকেরা "তীক্ষ্ণ সরঞ্জামগুলির সাথে খেলবেন না! (ফোর্স পুশ)" এর মতো বিধি তৈরি করে যাতে তারা এড়ানো যায় এমন ক্ষতগুলির চিকিত্সা এড়াতে পারে!
স্ট্রিপস

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

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

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

2

একটি আলাদা ভয়েস যুক্ত করতে:

হ্যাঁ, আপনি যদি বর্ণনা অনুযায়ী কাজ করেন তবে ব্যবহার rebaseএবং জোর-ধাক্কায় কোনও সমস্যা নেই । গুরুতর বিষয়: আপনার দলে আপনার একটি চুক্তি রয়েছে।

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

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


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


1

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

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

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

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


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

..., এবং যদি কিছু লোক সেই জনসংযোগে পরিবর্তন আনতে চায় তবে আমি বিবেচনা করি তাদের প্রথমে আমাকে বলা উচিত, এবং এটি একটি যোগাযোগের বিষয়। (2/2)
জোয়েল

PS: চেঞ্জসেট বিবর্তন লিঙ্কের জন্য ধন্যবাদ, এটি আকর্ষণীয়
জোয়েল

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