দলগুলি কীভাবে উত্স ফাইলগুলিতে ওভাররাইটিংয়ের কাজ রোধ করে? [বন্ধ]


26

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

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


84
আপনার নির্বাচিত ট্যাগগুলির মধ্যে একটি ইতিমধ্যে উত্তর is
ফিলিপ

18
বস্তুত, 4 ট্যাগের 3 উত্তর আছে, কিন্তু এক উত্তর।
MSalters 12:54

উত্তর:


69

বেশিরভাগ সফ্টওয়্যার বিকাশ দল (কেবল গেম বিকাশে নয়) সংস্করণ নিয়ন্ত্রণ সফ্টওয়্যার ব্যবহার করে এই সমস্যাটি সমাধান করে । উদাহরণগুলি হ'ল

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

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


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

18
এই উত্তরটি থেকে বোঝা যায় যে মার্জ করা সর্বদা ম্যানুয়ালি করা হয়। বেশিরভাগ সময় তবে সংস্করণ নিয়ন্ত্রণ সফ্টওয়্যারটি স্বয়ংক্রিয়ভাবে পার্থক্যগুলি মার্জ করতে পারে এবং সত্যই কাঁটাযুক্ত পরিবর্তনের জন্য ম্যানুয়াল কাজের প্রয়োজন require
21

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

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

13

বিকাশকারীরা একই ফাইলটি ব্যবহার করে না ।

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

সংস্করণ নিয়ন্ত্রণের অন্যথায় এতটা সহজ ধারণাটির অংশের জন্য এটি একটি সহজ ব্যাখ্যা ।


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

9

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

  • কিছু সংস্করণ নিয়ন্ত্রণ সিস্টেম (যেমন এসভিএন) ফাইল লক করার অনুমতি দেয়। এর অর্থ এই যে একদল সদস্য কোনও ফাইলের একচেটিয়া মালিকানা গ্রহণ করতে পারে, অন্য দলের সদস্যদের বিবাদী সম্পাদনাগুলি (বা, সত্যিই কোনও সম্পাদনা) করার পরে ফাইলটি আনলক না করা পর্যন্ত আটকাতে পারে।

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

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

    অবশ্যই, সর্বদা কিছু ওভারল্যাপ থাকবে যা অন্য কোনও উপায়ে পরিচালনা করতে হবে।


2
প্লাস সাইডে, লকিং হ'ল একমাত্র উপায় আপনি একটি। জেপিগ বা অন্যান্য অ-প্লেইন-পাঠ্য ফাইল সম্পাদনা করতে পারেন। এটি কোনও তাত্ত্বিক সীমাবদ্ধতা নয়, মার্জ সরঞ্জামগুলি সাধারণত চুষে খায়।
এমসাল্টাররা 12:55

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

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

@ এসএমএলটাররা অবশ্যই, এর সাথে আমি আরও অনেক কিছুতে সম্মত হতে পারি।
মরিসি 11

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