ঘন ঘন জটিল মিশে যাওয়া সংঘাতগুলি কি সমস্যার লক্ষণ?


35

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

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

আমি কি এই ভেবে সঠিক? জটিল সংযুক্তি দ্বন্দ্ব কি ভাল বা খারাপ কোনও কিছুর লক্ষণ?


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

@ মিশেলটি কোড বেসটি আমাদের স্বয়ংক্রিয় পরীক্ষার কোড বেসের জন্য। আমরা আমাদের প্রকল্পে একটি নতুন সংযোজন নিয়ে কাজ শুরু করতে চলেছি যা সম্ভবত কিছুটা সমান্তরাল বিকাশের প্রয়োজন হবে। অতএব বৈশিষ্ট্য-শাখা বনাম অন্যদের নিয়ে আলোচনা।
joshin4colours

7
লোকেরা কি আসলে এই ধরণের সমস্যায় পড়ে, বা তারা কেবল ভয় করে যে এই সমস্যাগুলি দেখা দিতে পারে?
ক্রিস্টোফার ক্রিউটজিগ


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

উত্তর:


23

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

আমি প্রথমে অন্য উপায়ে এটি লক্ষ্য করে দেখব বলে মনে করতাম, তবে সম্ভবত আপনি এটির অভ্যস্ত যে আপনি এটি আর দেখতে পাচ্ছেন না।


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

1
আমাদের কোডবেসটি কিছুটা "তরুণ" (প্রায় 6 মাস বয়সী, বেশ কয়েকটি বড় রিফ্যাক্টরগুলির মধ্য দিয়ে গেছে) এর সূচক হতে পারে।
joshin4colours

10
@ joshin4colours আপনি যদি কেউ কোনও বিশাল বৈশিষ্ট্যটি লেখার সময় পুনরায় সংশোধন করছেন তবে আপনি সমস্যার জন্য রয়েছেন।
শান ম্যাকসোমিংথ

17

আমি "ফ্যাচ-রিবেস-পুশ" ওয়ার্কফ্লোতে অভ্যস্ত। আপনার টিউটোরিয়ালে বর্ণিত প্রথমটি, সবচেয়ে আদিম, কর্মপ্রবাহ যা আসলে এখানে রয়েছে সুবিধা:

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

জটিল মেশানো দ্বন্দ্ব সম্পর্কিত এখন। আমি বুঝতে পারি না কীভাবে কেউ ঘন এবং জটিল উভয় সংযুক্তির অভিজ্ঞতা নিতে পারে । জটিলতা দীর্ঘদিন ধরে রিবেসিং / চেরি-বাছাই না করে এক মাস ধরে সেই একাকী বৈশিষ্ট্যটিতে কাজ করে।

আমি ব্যক্তিগতভাবে ঘন ঘন, সহজ সংশ্লেষ (আসলে পুনরায় শোধ) বিরোধের সাথে মোকাবিলা করতে পছন্দ করব, বিরল পরিবর্তে, সর্বত্র পরিবেষ্টিত বিভাজনকে।


1
একটি ভাল গিট কর্মপ্রবাহের দুর্দান্ত বর্ণনা, তবে এটি আমার প্রশ্নের পুরোপুরি উত্তর দেয় না।
joshin4colours

2
@ জোশি এটা সত্য। আপনার মধ্যবর্তী অনুচ্ছেদের ঠিকানার ঠিকানা তবে এখানে সরাসরি উত্তর দেওয়া হল। যদি মার্জ করা ঘন ঘন এবং কঠিন হয়, তবে এটি অবশ্যই সমস্যাযুক্ত কর্মপ্রবাহ / যোগাযোগ সমস্যা / আর্কিটেকচার সমস্যা / বিভাগ বা ভূমিকাগুলির সমস্যার ইঙ্গিত।
ভোরাক

7

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

পুল-রিবেস পদ্ধতির সুবিধা এবং অপূর্ণতা এটি অনেকটা লোকের অভ্যন্তরীণ কর্মপ্রবাহের সাথে মিলিত। এটি ব্যবহার করার জন্য আপনার ব্রাঞ্চিং বুঝতে হবে না।

যে কোনও হারে, অন্য স্থানীয় লোকেরা এতে সাইন ইন করতে না পারলে কেবল স্থানীয়ভাবে কোনও বৈশিষ্ট্যযুক্ত শাখার ওয়ার্কফ্লো করা পুরোপুরি সম্ভব।


5

আমি যে প্রকল্পে কাজ করছি এটি সময়ে সময়ে এই ধরণের সমস্যাযুক্ত এবং এটি বেশ কয়েকটি কারণের দ্বারা দেখা যাচ্ছে:

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

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


4

ডেভেলপাররা historicalতিহাসিক কমিটগুলি (বিশুদ্ধ সংশ্লেষের পরিবর্তে) সংশোধন না করে, কোনও বৈশিষ্ট্য ওয়ার্কফ্লো টাইপের গিট মডেলের দ্বন্দ্বগুলি শক্তভাবে মিলিত কোডবেস (/ ব্র্যান্ডনেউ কোডবেস) বা ওভারল্যাপিং বৈশিষ্ট্য কার্যভারের চিহ্ন।


0

আপনার একটি প্রধান (মাস্টার) শাখা রয়েছে এবং প্রত্যেকে তাদের বৈশিষ্ট্যযুক্ত শাখায় কাজ করে।

বৈশিষ্ট্য শাখায় কাজ কয়েক ঘন্টা থেকে কয়েক মাস পর্যন্ত নিতে পারে take

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

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


1
মূল শাখায় মার্জ করার ক্ষেত্রে কোনও দ্বন্দ্ব থাকতে হবে না । আপনি সর্বদা প্রধানটিকে প্রথমে বৈশিষ্ট্যে মার্জ করুন, সুতরাং বৈশিষ্ট্যটি প্রধান থেকে তারপরে দ্বন্দ্ব মুক্ত।
gnasher729

@ gnasher729 - আমি মনে করি এটিই এই উত্তরটির বক্তব্য - পরামর্শটি আমি দেখতে পাচ্ছি যে প্রতি বিকাশকারী প্রত্যেকবারই মূলটিতে তাদের বৈশিষ্ট্য শাখাগুলিতে মিশে যায়, যাতে সমস্ত বিবাদগুলি তাত্ক্ষণিক বৈশিষ্ট্যটির শাখায় সমাধান হয়ে যায়।
পেরিটা ব্রেটাটা

তিনি বলেছিলেন "আপনার দ্বন্দ্ব বৈশিষ্ট্য থেকে মাস্টার হয়ে যাওয়ার সম্ভাবনা বেশি রয়েছে"
gnasher729

0

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

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