দ্রষ্টব্য: বর্তমান প্রশ্নের উত্তরের জন্য "সম্পাদনা" দেখুন
প্রথমত, জোয়েল স্পলস্কির সাবভার্সন পুনঃশিক্ষা পড়ুন। আমি মনে করি আপনার বেশিরভাগ প্রশ্নের উত্তর সেখানে দেওয়া হবে।
আরেকটি সুপারিশ, লিনাস টরভাল্ডস'র কথা গীতে: http://www.youtube.com/watch?v=4XpnKHJAok8 । এই অন্যটি আপনার বেশিরভাগ প্রশ্নের উত্তরও দিতে পারে এবং এটি বেশ মজাদার।
বিটিডাব্লু, এমন একটি বিষয় যা আমি বেশ মজার বলে মনে করি: এমনকি বিবর্তনবাদের মূল নির্মাতা দুজন ব্রায়ান ফিটজপ্যাট্রিক এবং বেন কলিনস-সুসমান একটি গুগলে কথা বলেছিলেন "দুঃখের সাথে" সাবভার্সনটিকে পারদর্শী (এবং সাধারণভাবে ডিভিসিএস) থেকে নিম্নমানের বলে উল্লেখ করে।
এখন, আইএমও এবং সাধারণভাবে, কোনও ডিভিসিএসের সাথে টিমের গতিশীলতা আরও স্বাভাবিকভাবে বিকাশ লাভ করে এবং একটি অসামান্য সুবিধা হ'ল আপনি অফলাইনে প্রতিশ্রুতিবদ্ধ করতে পারেন কারণ এটি নিম্নলিখিত বিষয়গুলি বোঝায়:
- আপনি কোনও সার্ভার এবং কোনও সংযোগের উপর নির্ভর করেন না, অর্থ দ্রুতগতির।
- যে জায়গাগুলিতে আপনি ইন্টারনেট অ্যাক্সেস (বা একটি ভিপিএন) পেতে পারেন কেবল সেখানে প্রতিশ্রুতি রাখতে সক্ষম হবেন না slave
- প্রত্যেকের কাছে কেবল সার্ভার নয়, সমস্ত কিছু (ফাইল, ইতিহাস) এর ব্যাকআপ থাকে। মানে যে কেউ সার্ভারে পরিণত হতে পারে ।
- অন্যের কোড জগাখিচুড়ি না করে যদি আপনার প্রয়োজন হয় তবে আপনি বাধ্যতামূলকভাবে প্রতিশ্রুতিবদ্ধ করতে পারেন । কমিট স্থানীয়। প্রতিশ্রুতি দেওয়ার সময় আপনি একে অপরের পায়ের আঙ্গুলের উপর পা রাখেন না। আপনি কেবল প্রতিশ্রুতিবদ্ধ হয়ে অন্যের বিল্ড বা পরিবেশকে ভাঙবেন না।
- "প্রতিশ্রুতিবদ্ধ অ্যাক্সেস" বিহীন লোকেরা কমিটমেন্ট করতে পারে (কারণ ডিভিসিএসে কমিট করা আপলোড কোড বোঝায় না), অবদানের ক্ষেত্রে বাধা হ্রাস করে, আপনি তাদের পরিবর্তনগুলি টেনে আনার সিদ্ধান্ত নিতে পারেন বা ইন্টিগ্রেটার হিসাবে নয়।
- এটি কোনও ডিভিসিএসের প্রয়োজনীয়তা তৈরি করার কারণে এটি প্রাকৃতিক যোগাযোগকে শক্তিশালী করতে পারে ... আপনার পরিবর্তে যা আছে তা দৌড়াদৌড়ি, যা যোগাযোগকে বাধ্য করে তবে আপনার কাজকে বাধা দিয়ে।
- অবদানকারীরা তাদের নিজস্ব সংযুক্তিকে দলবদ্ধ এবং পরিচালনা করতে পারে, যার অর্থ শেষ পর্যন্ত ইন্টিগ্রেটারদের জন্য কম কাজ।
- অবদানকারীদের অন্যের উপর প্রভাব না ফেলে তাদের নিজস্ব শাখা থাকতে পারে (তবে প্রয়োজনে সেগুলি ভাগ করে নিতে সক্ষম)।
আপনার পয়েন্ট সম্পর্কে:
- ডিভিসিএসল্যান্ডে নরকে মার্জ করার অস্তিত্ব নেই; হ্যান্ডেল করার দরকার নেই। পরবর্তী পয়েন্ট দেখুন ।
- ডিভিসিএসগুলিতে প্রত্যেকে একটি "শাখা" উপস্থাপন করে, যার অর্থ প্রতিটিতে পরিবর্তনগুলি টেনে আনে এমন একত্রীকরণ রয়েছে। নামকরণ করা শাখা অন্য জিনিস।
- আপনি চাইলে অবিচ্ছিন্ন ইন্টিগ্রেশন ব্যবহার চালিয়ে যেতে পারেন। যদিও প্রয়োজনীয় আইএমএইচও নয়, কেন জটিলতা যুক্ত করুন ?, কেবল আপনার সংস্কৃতি / নীতি হিসাবে আপনার পরীক্ষা চালিয়ে যান।
- কিছু কিছু ক্ষেত্রে মারচারিয়াল দ্রুত হয়, অন্য জিনিসগুলির মধ্যে গিট দ্রুত হয়। সাধারণভাবে ডিভিসিএস-এর উপর নির্ভর করে না, তবে তাদের নির্দিষ্ট বাস্তবায়নের জন্য আফাইক।
- প্রত্যেকেরই পুরো প্রকল্প থাকবে, কেবল আপনিই নয়। বিতরণ করা জিনিসটির সাথে আপনি স্থানীয়ভাবে প্রতিশ্রুতিবদ্ধ / আপডেট করতে পারবেন, আপনার কম্পিউটারের বাইরে ভাগ করে নেওয়া / নেওয়া-নামক বলা হচ্ছে পুশিং / টান।
- আবার সাবভারশন রি-এডুকেশন পড়ুন। ডিভিসিএসগুলি সহজ এবং আরও প্রাকৃতিক, তবে সেগুলি আলাদা, সিভিএস / এসএনএন === সমস্ত সংস্করণের ভিত্তি বলে মনে করার চেষ্টা করবেন না।
আমি ডিভিসিএসগুলিতে মাইগ্রেশন প্রচারে সহায়তার জন্য জুমলা প্রকল্পে কিছু ডকুমেন্টেশন অবদান রাখছিলাম এবং কেন্দ্রীভূত বনাম বিতরণ করার জন্য এখানে আমি কয়েকটি চিত্র তৈরি করেছি।
কেন্দ্রীভূত

সাধারণ অনুশীলনে বিতরণ

সম্পূর্ণ বিতরণ

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

বিটবুকিট.আর.গুয়ালি কিছুটা গিথুব সমতুল্য, এটি জেনে রাখুন যে তাদের সীমাহীন স্থান সহ সীমাহীন ব্যক্তিগত সংগ্রহস্থল রয়েছে, যদি আপনার দলটি পাঁচটির চেয়ে কম হয় তবে আপনি এটি বিনামূল্যে ব্যবহার করতে পারবেন।
ডিভিসিএস ব্যবহারের জন্য নিজেকে বোঝানোর সর্বোত্তম উপায়টি ডিভিসিএস চেষ্টা করে দেখছে, এসভিএন / সিভিএস ব্যবহার করা প্রতিটি অভিজ্ঞ ডিভিসিএস বিকাশকারী আপনাকে জানাতে পারে যে এটির মূল্যবান এবং তারা জানেন না যে কীভাবে তারা এটি ব্যতীত পুরোটা সময় বেঁচে থাকতে পেরেছিলেন।
সম্পাদনা : আপনার দ্বিতীয় সম্পাদনাটির উত্তর দেওয়ার জন্য আমি কেবল আবার বলতে পারি যে ডিভিসিএসের সাথে আপনার আলাদা ওয়ার্কফ্লো রয়েছে, আমি আপনাকে সেরা অনুশীলনের কারণে এটি চেষ্টা না করার কারণ অনুসন্ধান না করার পরামর্শ দিচ্ছি , মনে হয় যখন লোকেরা যুক্তি দেয় যে ওওপি নয় প্রয়োজনীয় কারণ তারা সর্বদা XYZ দৃষ্টান্ত দিয়ে যা করেন তা নিয়ে জটিল নকশার ধরণগুলি পেতে পারেন; আপনি যাইহোক উপকার করতে পারেন।
এটি ব্যবহার করে দেখুন, আপনি দেখতে পাবেন কীভাবে "একটি বেসরকারী শাখায়" কাজ করা একটি ভাল বিকল্প। শেষটি কেন সত্য তা সম্পর্কে একটি কারণ আমি বলতে পারি কারণ আপনি প্রতিশ্রুতিবদ্ধ হওয়ার ভয় হারিয়ে ফেলেছেন , যে কোনও সময় আপনি উপযুক্ত দেখেন এবং আরও প্রাকৃতিক উপায়ে কাজ করতে পারবেন বলে প্রতিশ্রুতি দেওয়ার অনুমতি দেয়।
সংক্রান্ত "জাহান্নাম মার্জ", আপনি বলুন "যদি না আমরা পরীক্ষা নিরীক্ষা করা হয়", আমি "এমনকি যদি আপনি + maintaing + পরীক্ষা নিরীক্ষা করা হয় একই সময়ে revamped 2.0 কর্মরত "। যেমনটি আমি আগেই বলেছিলাম, নরককে মার্জ করার কোনও অস্তিত্ব নেই, কারণ:
- যতবার আপনি প্রতিশ্রুতিবদ্ধ হন আপনি একটি শিরোনামহীন শাখা উত্পন্ন করেন এবং আপনার পরিবর্তনগুলি যখনই অন্য ব্যক্তির পরিবর্তনের সাথে মিলিত হয়, একটি প্রাকৃতিক মার্জ ঘটে।
- যেহেতু ডিভিসিএসগুলি প্রতিটি প্রতিশ্রুতিবদ্ধতার জন্য আরও মেটাডেটা সংগ্রহ করে, মার্জ করার সময় কম বিরোধ ঘটে ... তাই আপনি এটিকে "বুদ্ধিমান একীকরণ" বলতে পারেন call
- আপনি যখন মার্জ সংঘাতের দিকে ঝাঁপিয়ে পড়েন, আপনি যা ব্যবহার করতে পারেন এটি এটি:

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

পরে

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