আমি সাবসার্শন গীক, কেন কেন আমাকে মার্চুরিয়াল বা গিট বা অন্য কোনও ডিভিসিএস বিবেচনা করা উচিত নয়?


300

আমি বিতরণিত সংস্করণ নিয়ন্ত্রণ সিস্টেমের (ডিভিসিএস) সুবিধাগুলি বোঝার চেষ্টা করি।

আমি দেখেছি Subversion পুনরায় শিক্ষা এবং এই নিবন্ধটি দ্বারা মার্টিন জালিয়া খুব দরকারী।

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

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

মার্চুরিয়াল আপনাকে লেফটেন্যান্ট রাখতে দেয়

আমি বুঝতে পারি এটি লিনাক্সের মতো খুব বড় প্রকল্পের জন্য কার্যকর হতে পারে তবে আমি ছোট এবং অত্যন্ত সহযোগী দলগুলিতে (5 থেকে 7 জন) মান দেখতে পাই না।

মার্চুরিয়াল দ্রুততর, ডিস্কের কম স্থান নেয় এবং সম্পূর্ণ স্থানীয় অনুলিপি দ্রুত লগ এবং ডিফগুলি পরিচালনা করতে দেয়।

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

আমি আপনার ব্যক্তিগত অভিজ্ঞতা এবং / বা প্রাক্তন এসভিএন গিক্সের মতামত চাইছি। বিশেষত চেঞ্জসেট ধারণা এবং সামগ্রিক পারফরম্যান্স সম্পর্কে আপনার পরিমাপ করা st

আপডেট (12 জানুয়ারী) : আমি এখন নিশ্চিত যে এটি একটি চেষ্টা মূল্য।

আপডেট (12 জুন) : আমি মার্কুরিয়ালকে চুম্বন করেছি এবং আমি এটি পছন্দ করেছি। তাঁর চেরির স্থানীয় স্বাদ কমিট করে। আমি মারকুরিয়ালকে চুমু দিয়েছি মাত্র এটি চেষ্টা করার জন্য। আমি আশা করি আমার এসভিএন সার্ভার এতে কিছু মনে করবে না। এটা খুব ভুল অনুভূত। এটা ঠিক মনে হয়েছিল। এর মানে এই নয় যে আমি আজ রাতে প্রেমে আছি

চূড়ান্ত আপডেট (২৯ জুলাই) : এরিক সিঙ্কের পরবর্তী সংস্করণ দ্বারা উদাহরণ হিসাবে লেখা পরবর্তী বইটি পর্যালোচনা করার সুযোগ পেয়েছি । তিনি আমাকে বোঝাতে শেষ করলেন। আমি মার্চুরিয়াল যাব।


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

29
প্রশ্নের জন্য +1। আজকাল এটি কার্গো কাল্ট হয়ে গেছে যা বিতরণ করা হয়েছে কেবলমাত্র উন্নত, দ্রুত, সহজতর, আরও প্রাকৃতিক এবং ঝামেলা-মুক্ত এবং কেন্দ্রীভূক্তের তুলনায় 90% চকচকে। এটি বাদে এটি অগত্যা নয়। এগুলি বিভিন্ন সরঞ্জাম এবং প্রতিটি ক্ষেত্রে কিছু প্রসঙ্গে এবং অন্যান্য প্রসঙ্গে অসুবিধা হতে পারে।
জুনাস পুলক্কা

17
@Sharpie: উভয় ব্যবহৃত হচ্ছে svn, gitএবং hgবছরের জন্য, আমি প্রায় তাদের আগপাছ সচেতন নই। যদিও এর gitমধ্যে অবশ্যই সবচেয়ে শক্তিশালী, এটি স্বীকার করা গুরুত্বপূর্ণ যে আরও শক্তিশালী স্বয়ংক্রিয়ভাবে আরও ভাল বোঝায় না । ইমাকস ওয়েব ব্রাউজারে চলমান যে কোনও জাভাস্ক্রিপ্ট টেক্সট এডিটরের চেয়ে অবশ্যই শক্তিশালী তবে আশ্চর্যের বিষয়, আমি এই মুহূর্তে জাভাস্ক্রিপ্ট ব্রাউজারের পাঠ্য সম্পাদককে এই মন্তব্যটি লিখছি! সরলতা এমনকি মূ .়তারও অনেক প্রসঙ্গে মূল্য রয়েছে। কেন্দ্রীভূত svnএবং git-svnস্থানীয়ভাবে কিছু ব্যবহার করে উভয় পৃথিবীর সেরা অফার।
জুনাস পুলক্কা

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

21
ক্যাটি পেরি রেফারেন্সের জন্য -1। ;)
আমাদিয়েরে

উত্তর:


331

দ্রষ্টব্য: বর্তমান প্রশ্নের উত্তরের জন্য "সম্পাদনা" দেখুন


প্রথমত, জোয়েল স্পলস্কির সাবভার্সন পুনঃশিক্ষা পড়ুন। আমি মনে করি আপনার বেশিরভাগ প্রশ্নের উত্তর সেখানে দেওয়া হবে।

আরেকটি সুপারিশ, লিনাস টরভাল্ডস'র কথা গীতে: http://www.youtube.com/watch?v=4XpnKHJAok8 । এই অন্যটি আপনার বেশিরভাগ প্রশ্নের উত্তরও দিতে পারে এবং এটি বেশ মজাদার।

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

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

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

আপনার পয়েন্ট সম্পর্কে:

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

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

কেন্দ্রীভূত

বিকল্প পাঠ

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

বিকল্প পাঠ

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

বিকল্প পাঠ

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

এখন, ডিভিসিএস ব্যবহার করে ওপেন-সোর্স প্রকল্পগুলির (উদাহরণস্বরূপ বিশাল সহযোগিতা সহ একটি প্রকল্প) এর আদর্শ ওয়ার্কফ্লো:

বিকল্প পাঠ

বিটবুকিট.আর.গুয়ালি কিছুটা গিথুব সমতুল্য, এটি জেনে রাখুন যে তাদের সীমাহীন স্থান সহ সীমাহীন ব্যক্তিগত সংগ্রহস্থল রয়েছে, যদি আপনার দলটি পাঁচটির চেয়ে কম হয় তবে আপনি এটি বিনামূল্যে ব্যবহার করতে পারবেন।

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


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

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

সংক্রান্ত "জাহান্নাম মার্জ", আপনি বলুন "যদি না আমরা পরীক্ষা নিরীক্ষা করা হয়", আমি "এমনকি যদি আপনি + maintaing + পরীক্ষা নিরীক্ষা করা হয় একই সময়ে revamped 2.0 কর্মরত "। যেমনটি আমি আগেই বলেছিলাম, নরককে মার্জ করার কোনও অস্তিত্ব নেই, কারণ:

  • যতবার আপনি প্রতিশ্রুতিবদ্ধ হন আপনি একটি শিরোনামহীন শাখা উত্পন্ন করেন এবং আপনার পরিবর্তনগুলি যখনই অন্য ব্যক্তির পরিবর্তনের সাথে মিলিত হয়, একটি প্রাকৃতিক মার্জ ঘটে।
  • যেহেতু ডিভিসিএসগুলি প্রতিটি প্রতিশ্রুতিবদ্ধতার জন্য আরও মেটাডেটা সংগ্রহ করে, মার্জ করার সময় কম বিরোধ ঘটে ... তাই আপনি এটিকে "বুদ্ধিমান একীকরণ" বলতে পারেন call
  • আপনি যখন মার্জ সংঘাতের দিকে ঝাঁপিয়ে পড়েন, আপনি যা ব্যবহার করতে পারেন এটি এটি:

বিকল্প পাঠ

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

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

আগে

বিকল্প পাঠ

পরে

বিকল্প পাঠ

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

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

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

কিছু অতিরিক্ত প্রস্তাবিত রিডিং:


18
দুর্দান্ত উত্তর, তবে ওপির মতো একই নৌকায় যারা আমাদের রয়েছেন তাদের জন্য কেবল একটি প্রশ্ন: আপনি কীভাবে জানাতে পারেন যে জাহান্নামের সংযোজন কীভাবে বিদ্যমান নেই? যখন কোনও সংহত বা অবদানকারীকে তাদের কাঁটাচামির মেয়াদ শেষ হয়ে যাওয়ার পরে একই পদক্ষেপ নেওয়ার দরকার নেই?
নিকোল

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

5
আমি সেই পুনঃশিক্ষা পৃষ্ঠাটি পড়েছি এবং এটি অনেক কারণে প্রাসঙ্গিকভাবে খুঁজে পাইনি। আমি বিষয়টিতে আমার ব্যক্তিগত দৃষ্টিভঙ্গি দিয়ে আমার প্রশ্নটি সম্পাদনা করব।

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

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

59

আপনি যা বলছেন তা হ'ল অন্যান্য বিষয়গুলির মধ্যে যা আপনি যদি মূলত একক শাখায় থাকেন তবে আপনার বিতরণ করা সংস্করণ নিয়ন্ত্রণের দরকার নেই don't

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

ডিভিসিএসগুলি সাবভারশন হয়, বিটোরেন্ট কি এফটিপি করতে হয়

(প্রযুক্তিগতভাবে, আইনত নয়)। সম্ভবত যদি আপনি এটির ওপরে ভাবেন, আপনি বুঝতে পারেন কেন এটি এত বড় লাফ এগিয়ে?

আমার জন্য, আমাদের গিটে স্যুইচ করার সাথে সাথেই এর ফলস্বরূপ

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

সুতরাং, বিবেচনা করুন কেন বিটিটরেন্ট এফটিপির চেয়ে ভাল, এবং আপনার অবস্থানের বিষয়ে পুনর্বিবেচনা করুন :)


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


আমি প্রায় একটি বাস্তব প্রকল্প দিয়ে চেষ্টা করার সিদ্ধান্ত নিয়েছে।

ভাল ধারণা. "আমি সত্যিই এটি পছন্দ করি!" "আমি এটি করতে চাই না!" এর পরিবর্তে। শিখতে অনেক আছে। আপনি যদি গিট চয়ন করেন, গিথুবকে অনেক ভাল অনলাইন সহায়তা রয়েছে। আপনি যদি এইচজি চয়ন করেন, জোয়েল কিছু ভাল অনলাইন উপাদান লিখেছেন। আপনি যদি bzr চয়ন করেন, ক্যানোনিকাল সম্ভবত খুব ভাল অনলাইন উপাদান আছে। অন্যান্য?

3
হুম যে অনুমান আপনি কি মনে করেন যে BitTorrent এফটিপি বেশী ভালো ...
Murph

2
@ মার্ফ, আমি করি, এবং তেমনি ব্লিজার্ড (যে আমি বিশ্বাস করি যে আমরা একমত হতে পারি তাতে কীভাবে বিশাল অনলাইন সিঙ্ক্রোনাইজেশন মোকাবেলা করা যায়?)। wowwiki.com/Blizzard_Downloader

2
@ মার্ফ, আপনি সার্ভারে টরেন্ট সার্ভার এবং ক্লায়েন্টে টরেন্ট ক্লায়েন্ট শুরু করুন। না হার্ড. এটি অবিলম্বে আপনাকে কিনে নেওয়া উচিত যে কেবল যে ফাইলগুলি পরিবর্তিত হয়েছে সেগুলি আপডেট করা দরকার। এছাড়াও, আপনি কি বিবেচনা করেছেন যে এফটিপি-র পরিবর্তে আরএসএনসি আপনাকে বর্ধিত আপডেটের জন্য কেনে?

46

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

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

  • স্থানীয় সংগ্রহস্থল থাকার আসল কারণ হ'ল হত্যাকারী হ'ল মাস্টার সংগ্রহশালায় চাপ দেওয়ার আগে আপনার প্রতিশ্রুতিবদ্ধ ইতিহাসের উপরে আপনার সম্পূর্ণ নিয়ন্ত্রণ থাকে

কখনও কোনও বাগ স্থির করে এরকম কিছু দিয়ে শেষ হয়েছে:

r321 Fixed annoying bug.
r322 Argh, unexpected corner case to annoying bug in r321!
r323 Ok, really fixed corner case in r322
r324 Oops, forgot to remove some debugging code related to r321
...

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

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

r321 Fixed annoying bug.

এটি হওয়া উচিত যা উপায়।

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

  • একটি সরল ভ্যানিলা মার্জ করুন । ওয়ার্টস এবং সমস্ত কিছু এনে দেয়।

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

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

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


6
পুনর্লিখনের ইতিহাস: এটি কি কেবল গিট জিনিস? নাকি বুধবারেও এটি সহজ? (যদি এটি হয় তবে আমার সত্যিই এটি করা শুরু করা উচিত))
পল ডি ওয়েট

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

4
পুরো অভ্যন্তরীণ নেটওয়ার্ক অ্যাক্সেস না করে আপনার খুব ভাল ইন্টারনেট অ্যাক্সেস থাকতে পারে। ভ্রমণের সময় আমার সাথে এটি প্রায়শই ঘটে।

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

6
@ পল, আমার বোঝা যে মার্চুরিয়ালে এটি করা যেতে পারে তবে এটি বেস কার্যকারিতা বা দর্শন নয়।
বেনজল

18

ডুকফগামিংস উত্তরটি সম্ভবত এটি যতটা ভাল পেতে পারে ততটা ভাল তবে আমি এটির অন্য দিক থেকে যেতে চাই।

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


2
আসলে আমি এই যুক্তিটি ডিসিভিএসের বিপরীতে প্রস্তাব করব। আমার সংস্থাটি সম্প্রতি সিভিএস থেকে মার্কুরিয়ালে চলে গেছে। সিভিএস চলাকালীন লোকেরা মার্জ করার সময় অন্যান্য লোকের পরিবর্তনগুলি মুছতে থাকে।
জুজাস কনটভেইনিস

@ জুয়াজাসকন্টভিনিস: আমি জাঁকজমকপূর্ণভাবে খুব ভাল জানি না, তবে গিটে আপনি প্যাশগুলিকে অন্তর্ভুক্ত করতে পারবেন না যার মধ্যে অভিভাবক হিসাবে প্রধান শিরোনাম নেই এমন মার্জগুলি অন্তর্ভুক্ত রয়েছে, যা ব্যবহারকারীদের এমন পরিবর্তনগুলিকে ঠেকিয়ে দেয় যা মাস্টার অন্তর্ভুক্ত হওয়া সাম্প্রতিক পরিবর্তনগুলি না করে। আমি নিশ্চিত পার্কে কিছু অনুরূপ আছে।
nnot101

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

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

1
প্রকৃতপক্ষে, এটি এর মতো শোনাচ্ছে: randyfay.com / কনটেন্ট / অ্যাভিওয়েডিং - গিট- ডিআইসাস্টারস - গিরি -স্টোরি চমৎকার, অসাধারণ নিবন্ধ যা গিট রেপোর সাথে কী ভুল হতে পারে তা যদি আপনি না জানেন তবে আপনি কী করছেন।
gbjbaanb

9

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

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

সুতরাং একটি সহ-অবস্থিত, সিআই-ব্যবহারকারী দলের জন্য, আপনি সত্যিই বিতর্কিত সিস্টেমটি ব্যবহার করেন বা না ব্যবহার করেন তবে আমি সত্যিই এটি বেশি বিবেচ্য মনে করি না। এটি স্বাদ এবং অভিজ্ঞতার বিষয়ে উত্সাহিত হয়।


2
গিট বিশ্বজুড়ে বিতরণকৃত কাজের জন্য ডিজাইন করা হয়েছিল এবং লোকেরা তাদের নিজস্ব প্রকল্পে কাজ করতে এবং নিজের কাঁটাচামচ তৈরি করতে উত্সাহিত করে। এটি বিশেষত "ছোট এবং অত্যন্ত সহযোগী দলসমূহ" -তে ক্রমাগত সংহতকরণের জন্য ডিজাইন করা হয়নি যা ওপি যা বলেছে তা চাচ্ছে।
মার্টিন উইকম্যান

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

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

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

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

8

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

আমি বিশ্বাস করি যে আমি যখন এটি ব্যবহার শুরু করেছি তখন এটি ছিল সেরা পছন্দ। তবে অন্যান্য সরঞ্জামগুলি সময়ের সাথে সাথে আসে এবং এখন আমি নিজের অতিরিক্ত সময় প্রকল্পের জন্যও গিটকে পছন্দ করি।

এবং subversion কিছু ত্রুটি আছে। উদাহরণস্বরূপ, আপনি যদি ডিস্কে ডিরেক্টরিটির নাম পরিবর্তন করেন, তবে এটির নাম পুনরায় সংগ্রহস্থলে রাখা হয় না। ফাইল সরানো সমর্থিত নয়, একটি ফাইলকে একটি অনুলিপি / মুছে ফেলা অপারেশন তৈরি করে, যখন ফাইলগুলি সরানো / নামকরণ করা কঠিন হয়ে যায় তখন মার্জ পরিবর্তনগুলি করে। এবং মার্জ ট্র্যাকিং প্রকৃতপক্ষে সিস্টেমে তৈরি হয় না, বরং একটি workaround আকারে প্রয়োগ করা হয়।

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

অন্যদিকে গিট আপনাকে পৃথক ডিরেক্টরি স্তরে যেমন শাওন করতে দেয় না যেমন সাবভার্সন করে।

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


খুব সত্য, পরীক্ষামূলক বিকল্পগুলি স্বয়ংক্রিয় হওয়া উচিত।

ফাইলটি সরানো হয়েছে কিনা তা নির্ধারণ করতে গিটটি একটি নির্দিষ্ট ধর্মতাত্ত্বিক ব্যবহার করে, এটির ভাল তবে নিখুঁত নয়।
gbjbaanb

এর সাথে সম্মত হন, এমনকি যদি আপনি অভিজাত বাচ্চারা যে নতুন সরঞ্জামটি ব্যবহার করেন তা ঘৃণা করেও, আমি নিজেকে কমপক্ষে নতুন জিনিস চেষ্টা করতে বাধ্য করা গুরুত্বপূর্ণ বলে মনে করি, বিশেষত যদি এই জিনিসগুলি বিশাল তরঙ্গ তৈরি করে।
Tjaart

7

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

এই একা আমাকে সুইচ করতে পারে!


সম্মত হন, গিট চেকআউট অত্যন্ত দ্রুত।

এটি উল্লেখ করার জন্য +1, শাখা / চেঞ্জসেটের মধ্যে ঝাঁপ দেওয়া বেশ দ্রুত
ডিউকোফেমিং

3

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

git bisect (এবং এটির মূল বিষয়গুলি আপনার মূল ভান্ডারগুলিতে)

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

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

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

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

Gitworkflows man পৃষ্ঠা কর্মপ্রবাহ যে গীত জন্য ডিজাইন করা হয়েছে একটি ভাল ভূমিকা। এছাড়াও কেন গীত বেটার চেয়ে এক্স Git কর্মপ্রবাহ আলোচনা করা হয়েছে।

বড়, বিতরণ প্রকল্প

কেন আমাদের ভাল অনুশীলন এবং ভাল ডিজাইনের অভ্যাসের সাথে একটি উচ্চ সহযোগী দলে লেফটেন্যান্টের প্রয়োজন?

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


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

@Pierre। প্রকল্পটি পৃথক উপাদানগুলিতে ভাগ করা অবশ্যই যুক্তিসঙ্গত। যেহেতু লিনাক্স এক একক কার্নেল, এর অর্থ (মূলত) সমস্ত ডিভাইস ড্রাইভারকে একই সংগ্রহস্থলে বিকাশ করতে হবে, যদিও প্রতিটি অপরিহার্যভাবে পৃথক প্রকল্প is একই সময়ে, তারা তাদের আরও অভিজ্ঞ স্থপতিদের জন্য এই চালকদের সকলকে স্পর্শ করে এমন বিস্তৃত পরিবর্তন আনার জন্য তত্পরতা চান, সুতরাং তাদেরকে বিভিন্ন ভাণ্ডারে ভাঙ্গা ব্যথা হবে। সুতরাং এই বিভিন্ন উদ্বেগ পরিচালনার জন্য গিট (এবং লেফটেন্যান্টস) তাদের ভালভাবে স্যুট করে।
কেন ব্লুম

এসভিএন বনাম গিট এবং মার্কুরিয়াল ওয়ার্কফ্লো সম্পর্কে মার্টিন ফাউলারের কী বক্তব্য রয়েছে তা পড়তে আপনি আগ্রহী হতে পারেন। martinfowler.com/bliki/ ভার্সন কন্ট্রোলটিউলস html
কেন ব্লুম

2
আমি বাগ খুঁজে পেতে নিয়মিত এসভিএন-তে বাইসেকশন করি। গিতের সাথে একমাত্র পার্থক্য হ'ল এটি সমস্ত স্বয়ংক্রিয় নয়। তবে একা এটি আমাদের স্যুইচ করার পক্ষে যথেষ্ট হবে না।
জাভিয়ের নোডেট

1
ছোট দলগুলির জন্য গিট বাইসেক্টের প্রাসঙ্গিকতা প্রায় শূন্য। আমি এটি কার্নেলের জন্য পেয়েছি যেখানে বিভিন্ন লোকের শত শত পরিবর্তনগুলি একবারে একত্রে মিশে গিয়ে জিনিসগুলি ভেঙে ফেলা হচ্ছে, তবে যখন আপনার 5 জনর একটি দল থাকে, আপনি সাধারণত একবারে তাত্ক্ষণিক নজর দিয়ে 2-7 সম্ভাব্য অপরাধী প্যাচগুলি বাদ দিতে পারেন all লগ ইন করুন।
blucz

2

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


তবে আপনি কেবল একটি ডিভিসিএস দিয়ে একটি কেন্দ্রীয় সংগ্রহশালা স্থাপন করতে পারেন (এবং আপনি কোনও সিভিসিএসের মতোই অনুমতিগুলি নিয়ন্ত্রণ করতে পারেন So সুতরাং কী কী সুবিধা রয়েছে?
nnot101

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

1

ডিভিসিএসের সাথে আমার কোনও ব্যক্তিগত অভিজ্ঞতা নেই, তবে আমি এখানে উত্তরগুলি এবং কিছু লিঙ্কযুক্ত নথি থেকে যা সংগ্রহ করি তা থেকে ডিভিসিএস এবং সিভিসিএসের মধ্যে সর্বাধিক মৌলিক পার্থক্যটি ব্যবহৃত কাজের মডেল is

DVCS

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

CVCS

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

অন্যান্য পার্থক্য

svnএবং git/ এর মধ্যে অন্যান্য পার্থক্য hgযেমন পুনর্বিবেচনা বনাম পরিবর্তনগুলি ঘটনীয়। রিভিশনগুলির উপর ভিত্তি করে ডিভিসিএস তৈরি করা সম্ভব (যেমন সাবভারশন তাদের রয়েছে) বা সিভিসিএস পরিবর্তনের উপর ভিত্তি করে (যেমন গিট / মার্কিউরিয়াল রয়েছে)।

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

  • আমার স্টাফ চেক করার কোনও ভয় নেই, কারণ এটি এটিকে অসম্পূর্ণ, তবে সংকলনযোগ্য স্থিতিতে ফেলতে আমার কোনও সমস্যা নেই।
  • আমি যখন মার্জ-নরকের অভিজ্ঞতা অর্জন করেছি তখন এটি এমন পরিস্থিতিতে ছিল যেখানে এটি svnএবং git/ উভয় ক্ষেত্রেই ঘটত hg। উদাহরণস্বরূপ, যখন আমরা ভি 3 বিকাশ করছিলাম তখন কয়েকটি সফ্টওয়্যারের ভি 2 একটি ভিন্ন দল দ্বারা পরিচালিত ছিল। কখনও কখনও, বাগফিক্সগুলি ভি 2 ভিসিএস থেকে ভি 3 ভিসিএসে আমদানি করতে হত, যার অর্থ মূলত ভি 3 ভিসিএসে একটি খুব বড় চেক-ইন করা (একক চেঞ্জসেটের সমস্ত বাগফিক্স সহ)। আমি জানি এটি আদর্শ ছিল না, তবে এটি বিভিন্ন ভিসিএস সিস্টেম ব্যবহার করার ব্যবস্থা ছিল decision

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

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

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

1
@ ফিলোসোডাড: আমি মনে করি আমি এটি আরও ভাল এবং আরও ভালভাবে বুঝতে শুরু করেছি: প্রত্যেকে আপনার গন্ডগোলটি সিভিসিএসের মতোই পেতে পারে তবে এটি আর আপনার দোষ নয়, কারণ আপনি তাদের উপর চাপ দেননি। :-)
বার্ট ভ্যান ইনজেন শেহানাউ

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