সংস্করণ নিয়ন্ত্রণ ব্যবহার কিভাবে


19

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

আমি যখন বিকাশ চালিয়ে যাচ্ছি, আমার প্রচুর ফাইল রয়েছে এবং আমি কোন ফাইলটি সম্পাদনা করেছি বা পরিবর্তন করেছি তা ট্র্যাক করে ফেলেছি those সবগুলি পরিচালনা করার জন্য আমি 'সংস্করণ নিয়ন্ত্রণ' হিসাবে কিছু শুনেছি তবে কীভাবে এটি কার্যকর তা নিশ্চিত নয় am

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


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

উত্তর:


28

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

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

  1. আপনার কার্যকারী ডিরেক্টরি থেকে একটি সংগ্রহস্থল শুরু করুন ( মার্চিউরিয়াল সহ hg init ) ..
  2. কোন ফাইল এবং ডিরেক্টরিগুলি আপনি ট্র্যাক করতে চান এবং কোনটি নয় তা স্থির করুন। সাধারণ নিয়মটি কম্পাইলার এবং অন্যান্য সরঞ্জাম দ্বারা উত্পাদিত ফাইলগুলি ট্র্যাক করা নয়।
  3. সংগ্রহস্থলগুলিতে ফাইল এবং ডিরেক্টরিগুলি যুক্ত করতে কমান্ডটি ব্যবহার করুন ( মার্চুরিয়ালের জন্য hg অ্যাড )।
  4. আপনি যে ফাইলগুলি ট্র্যাক করতে চান না তার প্যাটার্নগুলি সম্পর্কে সরঞ্জামটিকে বলুন (সম্পাদনা .hgignore জন্য )।
  5. মূল সংস্করণগুলি ট্র্যাক করতে একটি প্রতিশ্রুতি সম্পাদন করুন ( এইচজি সিআই) ) ।
  6. প্রতিটি যৌক্তিক মাইলফলকের পরে কমিট সম্পাদন করুন, এমনকি এটি যদি ছোট একটিও হয়।
  7. নতুন ফাইলগুলি তৈরি করার সাথে সাথে যুক্ত করুন।
  8. শেষ দুটি পুনরাবৃত্তি করুন।
  9. আপনার কাজের ডিরেক্টরি এবং সংগ্রহস্থলটিকে যথাযথ হিসাবে ব্যাকআপ করুন।

সংগ্রহস্থলে আপনার ফাইলগুলির সাহায্যে আপনি কোনও ফাইল বা ডিরেক্টরিতে যে কোনও দুটি সংস্করণ বা সম্পূর্ণ প্রকল্প ( এইচজি ডিফ ) এর মধ্যে পার্থক্য জানতে পারবেন, পরিবর্তনের ইতিহাস ( এইচজি হিস্ট ) দেখুন, এবং পরিবর্তনগুলি রোল করুন ( hg up -r )।

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

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

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

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


1
আমি মারকুরিয়ালকেও পছন্দ করি। আমি নেটবিনের সমর্থনটি পছন্দ করি কারণ আপনি কোডিংয়ের সময় এটি আপনাকে সর্বশেষ প্রতিশ্রুতি থেকে পরিবর্তিত প্রতিটি লাইন দেখায়। এটি প্রোডাক্ট ট্রি-তে নতুন / পরিবর্তিত / অপরিবর্তিত ফাইলগুলিকে রঙ করে। কোনটি মত শোনায় এটা খুলছেনা জন্য সহায়ক হবে: I lose track of which file I've edited or changed। এইচজিই এটিও করতে পারে, আমি এটি ব্যবহার করি নি।
জেডি আইজ্যাকস

1
প্রক্রিয়াটি বর্ণনা করার জন্য এটি করার জন্য কীভাবে সরঞ্জামগুলি ব্যবহার করতে হয় তার অংশ হিসাবে +1।
ডোনাল ফেলো

পার্শ্ব-প্রশ্ন হিসাবে, .xcodeprojআইওএস প্রকল্পের জন্য এক্সকোড যে ফাইলটি ব্যবহার করে তা মার্চুরিয়ালকে উপেক্ষা করতে বলার জন্য কিছু বিবেচনা করা হবে, বা ফাইলটি সিঙ্কে রাখা কি গুরুত্বপূর্ণ?
কেভিন ইয়াপ

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

1
@ জন: নেটবিয়ানরা প্রতিটি ভিসিএসের জন্য এটি সমর্থন করে that এই মুহুর্তে, এটি আইডিইগুলির একটি প্রাথমিক বৈশিষ্ট্য।
মাইক বারানজাক

13

আমি গিটকে খুব সুপারিশ করব। এটি সম্পর্কে এখানে শিখুন: https://lab.github.com/

আপনি যদি গিট পছন্দ না করেন তবে অন্যান্য সংস্করণ নিয়ন্ত্রণ সমাধান রয়েছে। আপনি এসভিএন পরীক্ষা করে দেখতে পারেন।


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

1
+1 এছাড়াও বিবেচনা করুন: লোকেরা এসএনএন (একটি ভিসিএস) থেকে গিটের (একটি ডিভিসিএস - ডি = বিতরণ) দিকে যেতে পছন্দ করে তবে জিআইটি থেকে এসভিএনে (পছন্দের মাধ্যমে) নয় not
মাইকেল ডুরান্ট

7

এটি কি আপনি ?, একটি ডিভিসিএস ব্যবহার করুন

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

ডিভিসিএসের সাহায্যে এটি আপনার, স্থানীয় সংগ্রহস্থল এবং আপনি যদি চান তবে আপনি বিটবুকিট.অর্গ বা গিথুব ডট কমের মতো একটি পরিষেবা ব্যবহার করতে পারেন।

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

অন্য কি আছে ?, একটি ডিভিসিএস ব্যবহার করুন!

আছে অনেক সুবিধার যখন একটি দলের সঙ্গে কাজ করার জন্য একটি DVCS ব্যবহার করে, একটি কেন্দ্রীভূত সিস্টেমের সাথে বিপরীতে সবচেয়ে গুরুত্বপূর্ণ এক যে ঘোড়দৌড় কোন কমিট করা হয় এবং কারণ, টেকনিক্যালি, প্রতিটি ব্যক্তির সংগ্রহস্থলের একটি শাখা এই হল, এবং যখন আপনি আপনার ভাগ এই শাখাগুলি আপনার জন্য একীভূত হয়ে গেছে এবং আপনি এটি খেয়ালও করেন না, এর অর্থ হ'ল সংস্করণ ইতিহাসের পরিবর্তে, যেখানে আপনার লোকেরা সরাসরি তাদের কাজকে সরলরেখায় ফেলে রাখছেন:

এখানে চিত্র বর্ণনা লিখুন

আপনার এমন কিছু থাকার শেষ আছে, যেখানে প্রত্যেকে কেবলমাত্র এইডস কমিট করে:

এখানে চিত্র বর্ণনা লিখুন

সংস্করণ দেওয়ার সময় প্রত্যেকে নিজের কাজ সম্পর্কে উদ্বিগ্ন (যেমন প্রতিশ্রুতি দেওয়ার জন্য রেস না) এবং কেবল প্রতিশ্রুতি দেওয়ার জন্য কোনও সার্ভারের সংযোগ সম্পর্কে উদ্বিগ্ন না হন।

শুভকামনা


1
+1 খুব সুন্দর উদাহরণ! আধুনিক সরঞ্জামগুলির সাথে জটিল মার্জ ট্রিগুলিতে অনুপস্থিত ব্যথায় জোর দেওয়ার জন্য আপনার সম্পাদনা করা উচিত।
অপালালা

5

সংক্ষেপে, এখানে অনেক বিকল্প রয়েছে, যার মধ্যে সাবভার্সিয়ন (এসভিএন) এবং গিট সবচেয়ে জনপ্রিয় বলে মনে হয় (ওয়েবে সমাধানগুলি সন্ধান করা সহজ)।

তারা উভয় পৃথক। এসভিএন সহজ, তবে গিটের সাথে শুরু করার জন্য আপনার সার্ভার থাকা দরকার না - আপনি স্থানীয়ভাবে সংস্করণ নিয়ন্ত্রণ করতে পারেন।

ধরে নিচ্ছি আপনার কাছে লিনাক্স রয়েছে এবং গিট ব্যবহার শুরু করতে চান:

  1. গিট ইনস্টল করুন
  2. ডিরেক্টরিতে যান এবং 'git init' কমান্ড সম্পাদন করুন
  3. কীভাবে ফাইলগুলি যুক্ত করবেন, পরিবর্তনগুলি পর্যালোচনা করুন, তাদের প্রতিশ্রুতিবদ্ধ করুন ...
  4. ... এবং আরও উন্নত স্টাফগুলি করতে (লগগুলি পর্যালোচনা করা, পরিবর্তনগুলি পরিবর্তন করা, ফাইলগুলি উপেক্ষা করা, শাখা তৈরি করা, সেগুলি মার্জ করা, রিমোটগুলি তৈরি করা এবং ব্যবহার করা, সাবমডিউলগুলি ব্যবহার করা, এসভিএন সমর্থন ব্যবহার ইত্যাদি))

আশা করি এটি আপনাকে শুরু করতে সহায়তা করবে।


1
এসভিএন এর জন্য একটি সার্ভারের প্রয়োজন হয় না, তবে এটির প্রয়োজন নেই যে रिपোরিটরি কর্মরত ডিরেক্টরি থেকে আলাদা কোনও ডিরেক্টরিতে থাকে। এসভিএন এবং সিভিএসকে সাধারণত জিআইটি এবং মার্কুরিয়ালের মতো ওটি সরঞ্জামগুলিতে অবমূল্যায়ন করা হয় যা দৈনিক কাজের জন্য একটি নেটওয়ার্ক সংযোগের প্রয়োজন হয় না এবং সহযোগী এবং বিতরিত সফ্টওয়্যার বিকাশের জন্য কোনও কেন্দ্রীয় সংগ্রহশালার প্রয়োজন হয় না।
অপালালা

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

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

2
@ টেডেক মুরচারাল এবং জিআইটি আমার বোঝার ক্ষেত্রে যেভাবে কাজ করে তা নয় not এর মধ্যে, কোনও একক ব্যক্তি কোনও ভাণ্ডারের মধ্যে যা যায় সেটির দায়িত্বে থাকেন, তা সে কমিট, টান বা প্যাচগুলির দ্বারা হোক। বিতরণকৃত ভাণ্ডারগুলিতে, যদি কারও কাছে বিশেষাধিকার থাকে তবে আপনি ইতিমধ্যে তাদের সমস্ত হৃদয় দিয়ে বিশ্বাস করুন। লিনাস টরভাল্ডস এই আলোচনায় এটি ভালভাবে ব্যাখ্যা করেছেন: youtube.com/watch?v=4XpnKHJAok8
অপালালা

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

2

Apalala সুপারিশ হিসেবে আমি বাইরে চেকআউট সুপারিশ hginit । আপনি যেহেতু সংস্করণ নিয়ন্ত্রণে নতুন তাই আপনি প্রথম পৃষ্ঠাটি এড়িয়ে যেতে পারেন। এটি আপনাকে একটি ভাল পরিচয় দেওয়া উচিত, পরে আপনার যদি নির্দিষ্ট প্রশ্ন থাকে তবে আপনি এসওতে পোস্ট করতে পারেন ।


0

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

একাধিক ভাণ্ডার? আমি নিশ্চিত যে এগুলির জন্য কিছু বৈধ ব্যবহার রয়েছে তবে আমি সেগুলির মধ্যে কখনই প্রবেশ করিনি।

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

গিট ব্রাঞ্চিং এবং মার্জিংয়ের সাথে ডিল করা সহজ করে তোলে। তবে একটি ব্যক্তি দলের পক্ষে এটি এত বড় বিষয় নয়।

লিনাক্স কার্নেলের স্কেলের কোনও কিছুর জন্য - হ্যাঁ, গিট ব্যবহার করুন। আমাদের বাকিদের জন্য সাবভার্সন যথেষ্ট ভাল।


Downvoting। গিটের বৈশিষ্ট্যগুলি যা এসভিএন-তে নেই (যেমন লাইটওয়েট ব্রাঞ্চিং এবং সহজ মার্জিং) বড় প্রকল্পগুলির মতো ছোট প্রকল্পগুলিতে সহায়ক, এমনকি এমনকি প্রয়োজনীয়।
মার্নেন লাইবো-কোসার

1
@ মার্নেনলাইবো-কোসার হ্যাঁ, সেসময় আমার এই মতামত ছিল, তবে বেশ কয়েক বছর ধরে গিটকে পেশাদারভাবে ব্যবহার করার পরে আপনার সাথে আমার একমত হতে হবে।
মাইক বারানজাক

অসাধারণ! আপনি অন্তর্ভুক্ত করা হবে। : ডি
মার্নেন লাইবো-কোসার

-1

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

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