এসভিএন মার্জ সম্পর্কে এতটা কঠিন কী?


28

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

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

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

সুতরাং, হাস্যকর স্ট্রোম্যান ব্যবহারের ক্ষেত্রে ছাড় দিচ্ছেন, এসভিএন মার্জ করার মধ্যে এমন কী আছে যা ডিভিসিএস সিস্টেমে মার্জ হওয়ার চেয়ে সহজাত আরও শক্ত?


6
আমি এখনও এমন পরিবেশে কাজ করতে যাচ্ছি না যেখানে তাদের কয়েক মাস দীর্ঘ শাখা মার্জ করা হচ্ছে এবং তারা বিতরণকৃত সংস্করণ নিয়ন্ত্রণ ব্যবহার করে। আমি যে স্থানে কাজ করেছি কেবলমাত্র সেই জায়গাগুলি টিএফএস / সাবভার্সন ব্যবহার করে long আমি প্রত্যাশা করি যে এই জাতীয় দীর্ঘকালীন শাখাগুলি ডিভিসিএসেও মিশ্রিত করা কঠিন হবে।
ওডে

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

9
@ ম্যাসনওহিলার: আমি মনে করি আপনি গাছের সাদৃশ্যটি কিছুটা আক্ষরিক অর্থে নিচ্ছেন।


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

উত্তর:


25

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

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


47

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

এবং এটিতে আপনার বিভ্রান্তির উত্স এবং সাধারণভাবে পুরো সমস্যা রয়েছে।

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

আমি একজন মার্চুরিয়াল ব্যবহারকারী। এমনকি আমার নিজের প্রকল্পগুলিতে, যেখানে আমি একমাত্র বিকাশকারী, আমি সব সময় শাখা মার্জ করি । আমার একটি রিলিজ শাখা রয়েছে, যা আমি ঠিক করেছি। ঠিক আছে, আমি এটিকে আবার মূল-লাইনে একীভূত করি যাতে ফিক্সটি সেখানে যায়।

যদি আমি এসভিএন ব্যবহার করতাম তবে আমি কোডবেজের সম্পূর্ণ আলাদা কাঠামো গ্রহণ করতাম। কেন? কারণ এসভিএন মার্জগুলিকে কঠিন করে তোলে এবং তাই জটিল মার্জগুলি এড়াতে আপনার প্রতিমা এবং কৌশল বিকাশ করে ।

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

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

সঠিক কাজের জন্য সঠিক সরঞ্জাম।

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

সত্যিই, জোয়েল এটির চেয়ে অনেক বেশি ভাল ব্যাখ্যা করে । আপনার এটি ভাল পড়া উচিত।


15
@ মেসন: কীভাবে তা প্রশিক্ষণ নয়? আপনি একটি এসভিএন স্টাইলে এসভিএন ব্যবহার করার প্রশিক্ষণ পেয়েছিলেন। এবং এসভিএন শৈলীটি মার্জিং ব্যবহার না করা । সুতরাং, আপনি মার্জড জিনিসগুলি ব্যবহার না করা এমনকি বিবেচনা করতে প্রশিক্ষণ পেয়েছিলেন । এ কারণেই এটি আপনার কাছে কখনও ঘটেনি; কারণ আপনি এমন একটি সিস্টেম ব্যবহার করেছেন যা এটি কঠিন করে তোলে।
নিকল বোলাস

5
"প্রশিক্ষিত নয়" এবং "প্রশিক্ষিত না হওয়া" এর মধ্যে একটি বড় পার্থক্য রয়েছে।
ম্যাসন হুইলারের

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

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

3
@ ম্যাসনওহিলার: এরকম? : পি । এসভিএন শাখা এবং মার্জ করা একই কাজ করে - রূপকটি ইতিমধ্যে ভাঙা। আমি দেখতে পাচ্ছি না এর মতো কিছু বোঝা কীভাবে কঠিন, বিশেষত যদি এতে কিছু বুদ্ধিমান
কমিটস

21

এসভিএন মার্জ করার বিষয়ে খুব বেশি অসুবিধা নেই ... ... যদি আপনি সঠিক দর্শন অনুসরণ করেন

অন্যান্য উত্তরগুলিতে আমি যা দেখছি তা মনে হয় এমন লোকদের কাছ থেকে এসেছে যারা কিছুক্ষণের মধ্যে এসভিএন ব্যবহার করেনি। যেহেতু কেউ সঠিকভাবে উল্লেখ করেছেন: "পৌরাণিক কাহিনীটি দূর করার জন্য এটি পর্যাপ্ত পর্যায়ে ঠিক করা হয়নি"।

আমার উত্তরাধিকার সূত্রে প্রাপ্ত উত্তরাধিকারী প্রকল্পে SVN 1.6 থেকে 1.8 ব্যবহারের আমার বর্তমান অভিজ্ঞতা থেকে, এসভিএন অনেক সহজ জিনিস মার্জ করার দিকে অনেক এগিয়ে গেছে। যদিও এটি নির্বোধ নয় এবং আমি মনে করি এটি সহজে ব্যবহারকারীর উদ্দেশ্যে ব্যবহার থেকে বিচ্যুত হয় না suffer

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

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

মার্জগুলির পরিষ্কার ব্যবহারের জন্য প্রয়োজনীয় জিনিসগুলি না হলেও এখানে দৃ things় সুপারিশগুলি আমি লক্ষ্য করেছি:

  • এসভিএন এর সাম্প্রতিক সংস্করণটি ব্যবহার করুন (আমার মতে 1.6 এবং উপরে)। আপনার জন্য আরও বেশি অটোমেশন এবং চেক করা হয়।
  • ডিফল্ট "ট্রাঙ্ক, শাখা, ট্যাগ" কাঠামো ব্যবহার করুন এবং এর দর্শনটি প্রয়োগ করুন (ট্যাগগুলিতে প্রতিশ্রুতিবদ্ধ করবেন না)। এসভিএন আপনার জন্য কিছু পরীক্ষা করবে না। আপনি যদি একটি শাখা হিসাবে কোনও ট্যাগ ব্যবহার করেন (এটি আমি সেই প্রকল্পের সংগ্রহস্থলের মধ্যে দেখতে পেয়েছি) তবে এটি এখনও কাজ করতে পারে তবে আপনার ধারাবাহিক হওয়া দরকার।
  • শাখাগুলি কী এবং কখন তাদের তৈরি করতে হবে তা জানুন। ট্যাগ সহ একই।
  • পাশের শাখাগুলি তাদের উত্স শাখার সাথে আপ টু ডেট রাখুন (সাধারণত ট্রাঙ্ক, তবে আপনি কোনও শাখা থেকে প্রযুক্তিগতভাবে শাখা বের করতে পারেন)। আপনি যদি এসভিএনকে অটো-মার্জ করতে চান তবে এটি বাধ্যতামূলক । জিনিসগুলি আপ টু ডেট না হলে এসভিএন ১.৮ আসলে আপনাকে স্বয়ংক্রিয়ভাবে মার্জ করা থেকে বিরত রাখে এবং আপনার কার্যকরী অনুলিপিতে যদি আপনার মুলতুবি রয়েছে তবে (এই আচরণটি আবার 1.8.5 এ অদৃশ্য হয়ে গেছে বলে মনে হয়)।
  • "যথাযথ" কমিট করুন। এগুলিতে কেবলমাত্র একটি নির্দিষ্ট ধারণাটিতে পরিবর্তন থাকতে হবে। যতটা সম্ভব, এগুলিতে স্বল্প পরিমাণে পরিবর্তন থাকা উচিত। আপনাকে যা না একটি একক কমিট উদাহরণস্বরূপ দুই স্বাধীন বাগ সম্পর্কে পরিবর্তন ধারণ করাতে চাই। যদি আপনি ইতিমধ্যে উভয় সমাধান করেছি এবং তারা একই ফাইলের মধ্যে হন, আপনি একটি বাগ পরিবর্তন দূরে সংরক্ষণ যাতে আপনি কমিট করতে পারেন উচিত শুধু অন্যান্য পরিবর্তন প্রথম, তারপর পরিবর্তনের দ্বিতীয় সেট কমিট। নোট করুন যে কচ্ছপ এসভিএন সহজেই "প্রতিশ্রুতি পুনরুদ্ধার করুন" এর মাধ্যমে এটিকে মঞ্জুরি দেয়।
    • এটি করার ফলে একটি নির্দিষ্ট স্বতন্ত্র স্বতন্ত্র পরিবর্তনগুলিকে পরিবর্তিত করা সম্ভব হয় এবং কেবলমাত্র একটি সেটটিকে অন্য একটি শাখায় মার্জ করা সম্ভব করে। হ্যাঁ, এসভিএন আপনাকে চেরি-বাছাই করা সংশোধনগুলি মার্জ করার অনুমতি দেয়।
  • আপনি যদি কখনও উপ-শাখা ব্যবহার করেন (ট্রাঙ্কটি বন্ধ করে দেওয়া, তারপরে সেই নতুন শাখাটি বন্ধ করে দেওয়া), শ্রেণিবিন্যাসকে সম্মান করুন। আপনি যদি ট্রাঙ্ক বা তদ্বিপরীত সহ উপ-শাখা আপডেট করেন তবে আপনি কিছু ব্যথার জন্য রয়েছেন। মার্জগুলি হায়ারার্কিটি নীচে বা উপরে করা উচিত।
    • কয়েক মাস পরীক্ষা-নিরীক্ষার পরে, আমি আশ্বাস দিতে পারি যে এটি সবচেয়ে গুরুত্বপূর্ণ অংশ হতে পারে। একই ট্রাঙ্ক থেকে দুটি উপ-শাখা তৈরি করার চেষ্টা করা হয়েছিল এবং তারপরে উপ-শাখাগুলির মধ্যে বা কখনও কখনও উভয় দিক থেকে উপ-উপ-শাখার মধ্যে বিটগুলি মার্জ করা হয়েছে। এটি এসভিএন (বা ব্যবহারকারী) ট্রিপ করতে পারে। আপনি নির্দিষ্ট সংশোধনগুলি মার্জ করলে এটি ঠিকঠাক কাজ করতে পারে। স্বতঃ-সংহতকরণ এটির সাথে সমস্যা হতে পারে।
    • উপ-শাখা এটিকে ট্রাঙ্কের সাথে সিঙ্ক্রোনাইজ করার পরে এবং বিশেষত উপ-শাখা এ থেকে কিছু উপ-শাখার বিতে বিভক্ত করার চেষ্টা করার সময় আমার বিশেষ সমস্যা হয়েছিল S বি এবং এর ফলে প্রচুর সংঘাতের সৃষ্টি হয়।
  • যতটা সম্ভব, শাখার গোড়া থেকে মার্জ করুন। অন্যথায়, SVN শুধুমাত্র মার্জ উপ-ফোল্ডারের জন্য কাজ ট্র্যাক রাখতে হবে এবং আপনি কি রুট থেকে স্বয়ং-একত্রীকরণ করার চেষ্টা করুন, আপনি আলাদা করা হয়েছে পুনর্বিবেচনা অনুপস্থিত সম্পর্কে সতর্কবার্তা পেতে পারেন। এগুলি কেবল মূল থেকে মিশ্রিত করে ঠিক করা যায় তবে সেরা বিভ্রান্তি এড়ানো উচিত।
  • আপনি কোন শাখায় প্রতিশ্রুতিবদ্ধ তা সাবধান হন। আপনি যদি সময়ের সাথে সাথে বিভিন্ন শাখায় আপনার কার্যকরী অনুলিপি পেতে স্যুইচ ব্যবহার করেন তবে আপনি কোথায় প্রতিশ্রুতিবদ্ধ তা নিশ্চিত হন।
    • এটি বিশেষত খারাপ যদি আপনি সত্যিই সেই শাখায় পরিবর্তন চান না । আমি এখনও এটির বিষয়ে পরিষ্কার নই, তবে কীভাবে আপনি এটি থেকে পরিত্রাণ পাবেন / ডান শাখায় স্থানান্তরিত করবেন তার উপর নির্ভর করে (ফেরত দেওয়া, মার্জ করা), আপনি কিছু নোংরামি পেতে পারেন। এটি সংশোধনযোগ্য, তবে সম্ভাব্য দ্বন্দ্ব এড়াতে বা তত্ক্ষণাত সমাধান করতে আপনাকে পুনর্বিবেচনা দ্বারা সংশোধনটি মার্জ করতে হবে, অথবা স্বয়ংক্রিয়ীকরণের পরে আপনাকে সম্ভবত আরও জটিল সংঘাতের সমাধান করতে হবে।
  • শাখাগুলি খুব দীর্ঘ সময়ের জন্য অচ্ছুত রাখবেন না। প্রকৃতপক্ষে, এটি সময়ের বিষয় নয় তবে শাখা এবং ট্রাঙ্কের প্রতি কতগুলি সংশোধন প্রতিশ্রুতিবদ্ধ হয়েছিল এবং এগুলিতে কতটা পরিবর্তন হয়েছিল of দুটি শাখার মধ্যে মার্জ করে, 3 ত্রি পথে একত্রিত হওয়া, সর্বদা শাখাগুলির মধ্যে সাম্প্রতিক সাধারণ সংশোধনের সাথে তুলনা করে get এর মধ্যে যত বেশি পরিবর্তন হবে, তত বেশি স্বয়ংক্রিয়ভাবে মার্জ করা ব্যর্থ হবে। এটি অবশ্যই আরও খারাপ, যদি আপনি ইতিমধ্যে আপনার কোডের কাঠামো পরিবর্তন করেন (ফাইলগুলিতে স্থানান্তরিত বা নাম পরিবর্তন করা)।

আপনি যদি উপরে বর্ণিত না হন তবে আপনার দ্বন্দ্ব হওয়ার সম্ভাবনা যথেষ্ট। এগুলি সর্বদা সমাধানযোগ্য, তবে সময় কাটাতে মারাত্মক মজা নয়।

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

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

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


গাছের সংঘাত - হ্যাঁ, এসভিএন এর সাথে অসুবিধা রয়েছে, যদিও টিবিএইচ এটি অন্য প্রতিটি এসসিএমের মতো করে। নাম বদলে দেওয়া বা সরানো ফাইলগুলি একই রকম কিনা তা চেষ্টা করার জন্য এবং গিটের কিছু হরিস্টিকস রয়েছে, তবে এটি সর্বদা এটি সঠিক হয় না (পারে না!)। আমি মনে করি এসভিএনকে এই বিরোধগুলি বোঝার সহজতর করার জন্য কিছু প্রচেষ্টা করা উচিত।
gbjbaanb

@gbjbaanb: এটি মার্চুরিয়ালের মতো "রিপেয়ার মুভ" সরবরাহ করে, যদিও এটি হিউরিস্টিক্স সরবরাহ করে না। আপনার মুছে ফেলা এবং যুক্ত করা ফাইলগুলি আসলে তা বলতে হবে। অবশ্যই উন্নতির জন্য জায়গা।
লেওকর্ন

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

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

5

অভ্যন্তরীণ ডেটা মডেলগুলি মৌলিকভাবে পৃথক।

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

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

এসভিএন 1.5 এটি "স্থির" করেছে। তবে মার্জগুলি কীভাবে মৌলিকভাবে প্রয়োগ করা হয় তা পরিবর্তিত হয়নি। এটি কেবলমাত্র শাখায় কিছু অতিরিক্ত মেটাডেটা যুক্ত করেছে A, এসভিএনকে জানায় যে 1234 রিভিশনটি একত্রীকরণ করা হয়েছে, এসভিএনকে স্বয়ংক্রিয়ভাবে সঠিক সংশোধন পরিসীমা বেছে নিতে দেয়।

তবে এই সমাধানটি মূলত এমন একটি ডেটা মডেলের জন্য কাজ যা মূলত যা একীভূত হয়েছে তা ট্র্যাক সমর্থন করে না।

দুটি শাখা মার্জ করা একটি তুলনামূলক সহজ উদাহরণ। তবে এই আরও জটিল দৃশ্যের চিত্র

  1. Aথেকে শাখা তৈরি করুন trunkএবং এখানে কয়েকটি কমিট করুন
  2. Bথেকে শাখা তৈরি করুন Aএবং এখানে কয়েকটি কমিট করুন
  3. কয়েক করে তুলুন trunkএবংA
  4. মার্জ Bমধ্যেtrunk
  5. মার্জ Aমধ্যেB
  6. মার্জ Aমধ্যেtrunk
  7. মার্জ Bমধ্যে trunk(এই আসলে কিছু করতে উচিত নয়)

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

গিটে এই দৃশ্য পরিচালনা করা অত্যন্ত সহজ।

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

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

সুতরাং আংশিকভাবে একত্রীকরণ করা শাখায় মার্জ করার সময়, ইতিমধ্যে কী একত্রীভূত হয়েছে এবং কী কী তা নির্ধারণ করা অত্যন্ত সহজ।

মার্কুরিয়ালের সাথে আমার কোনও অভিজ্ঞতা নেই তবে আমি সন্দেহ করি যে এর অভ্যন্তরীণ কাজগুলি গিটের মতো।

সুতরাং মৌলিকভাবে, এসভিএন এর জন্য, এটি শাখা প্রশস্তকরণকে সস্তা করার জন্য একটি ডিজাইনের লক্ষ্য ছিল। কিন্তু গিট এ, এটি মার্জিং সস্তা করার জন্য একটি ডিজাইন লক্ষ্য ছিল।

শেষ অবধি, আমি যখন এসভিএন ব্যবহার করেছি, এটি মার্জ পরিচালনা করতে সক্ষম হয় নি, যেখানে একটি শাখায় একটি ফাইলের নাম পরিবর্তন করা হয়েছিল এবং অন্যটিতে পরিবর্তন করা হয়েছিল।


1

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


ধীর সংযোগের জিনিসটি এক্সট্রাপোলটিং করা, অফসাইট রিমোট সার্ভার থেকে কাজ করা বড় আপডেটগুলি করার সময় লসী ড্রপ সংযোগ ত্রুটিগুলিও তৈরি করে> <মজা মোটেও নয়।
jxramos

-1

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

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

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

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


এছাড়াও, আমি কল্পনা করতে পারি যে
পার্কিয়ালটির

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

2
@ মেসনহিলার মনে রাখবেন যে 1.5-এর পূর্ববর্তী সংস্করণগুলিতে অনেকগুলি বিরোধী মনোভাবকে নির্দেশ দেওয়া হয়েছিল (যখন এসএনএন মার্জ ট্র্যাকিং পেয়েছিল)। এবং অবশ্যই এটির অনেকগুলিই কেবল অর্থহীন ফ্যানবায়াইজম ...
ইয়ানিস

3
আরো দেখুন @MasonWheeler stackoverflow.com/a/4215199/69742 পোস্টে নিচে boils যে DVCS ট্র্যাক রাখে করার পরিবর্তন-সেট না সংস্করণের । পরিবর্তন-সেটগুলি গ্রহণ এবং একত্রীকরণের পক্ষে সহজাত সহজ ... সংস্করণগুলি এত বেশি নয় কারণ তাদের প্রসঙ্গে প্রয়োজন
আর্লজ

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