এসএনএন: ট্রাঙ্কটি শাখার সাথে প্রতিস্থাপন করুন


155

সাবভার্সন রিপোজিটরির একটি শাখাকে নতুন ট্রাঙ্ক তৈরি করার সর্বোত্তম উপায় কী?

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

মূলত, পুরানো মূললাইন (ট্রাঙ্ক 5) ট্যাগ করা আছে এবং এখানেই শেষ হবে। পুনর্লিখিত শাখা (শাখা 6) নতুন মূল লাইনে পরিণত হবে (ট্রাঙ্ক 7):

ট্রাঙ্ক (1) -> ট্রাঙ্ক (2) -> ট্রাঙ্ক (5) -> × + -> নতুন ট্রাঙ্ক (7)
  । \ |
  কাঁটাচামচ মার্জ ???
    । \ |
     + -> শাখা (3) -> শাখা (4) -> শাখা (6) - +

পুরানো 'ট্রাঙ্ক' থেকে চলমান সমস্ত পরিবর্তন ইতিমধ্যে 'রাইটার শাখায়' অন্তর্ভুক্ত রয়েছে

কিভাবে আমি এটি করতে পারব?

উত্তর:


118

পুরানো ট্রাঙ্কের বিষয়বস্তু অন্য কোথাও সরিয়ে নিতে এসএনএন মুভ ব্যবহার করুন এবং তার পরে শাখার নাম বদলে রাখুন।

নোট করুন এবং অনুলিপি ফাইল অপারেশন মত svn কাজ সরানো। আপনি এগুলি আপনার সংগ্রহস্থলের আশেপাশে জিনিসগুলি সরানোর / অনুলিপি করতে ব্যবহার করতে পারেন এবং এই পরিবর্তনগুলিও সংস্করণিত হয়। "সরানো "টিকে" অনুলিপি + মুছুন "হিসাবে ভাবেন।

[সম্পাদনা] নীলবাস আমাকে সবেমাত্র অবহিত করেছেন যে আপনি যখন ব্যবহার করবেন তখন আপনি মার্জ সংঘাত পেয়ে যাবেন svn move

আমি এখনও মনে করি এটি সঠিক পদ্ধতির। এটি দ্বন্দ্ব সৃষ্টি করবে তবে আপনি সাবধানে মার্জ করলে, সম্ভাবনা হ'ল আপনি কোনও ডেটা হারাবেন না। যদি তা আপনাকে বিরক্ত করে, তবে মার্কুরিয়াল বা গিটের মতো আরও ভাল ভিসিএস ব্যবহার করুন ।


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

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

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

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

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

66

এই লক্ষ্যটি সম্পাদন করতে আমি এসএনএন মুভ কমান্ডটি ব্যবহার করে সম্মত।

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

এছাড়াও আমি চালগুলি করার সময় কাজের অনুলিপি এড়াতে পছন্দ করি, এখানে কমান্ডগুলির নমুনা রয়েছে:

svn move https://SVNUrl/svn/Repo/trunk https://SVNUrl/svn/Repo/tags/AnyName

svn move https://SVNUrl/svn/Repo/branches/BranchName-Merged https://SVNUrl/svn/Repo/trunk

দ্রষ্টব্য: আমি 1.5 ব্যবহার করি


1
এটি সর্বোত্তম অনুশীলন নাও হতে পারে তবে আপনি যখন খুব পুরানো ট্রাঙ্কটি পেয়ে থাকেন এবং সকলেই একটি শাখায় কাজ করেছিলেন যেন এটি ট্রাঙ্ক। এটা আমার সমস্যার সমাধান!
অ্যালেক্স পেরিন

12

আমি সম্প্রতি এই সমস্যাটি দেখছিলাম এবং আমি যে সমাধানটি দিয়ে খুব খুশি হয়েছিল তা সম্পাদন করছিলাম

এসএনএন মার্জ --ignore-পূর্বসূরীর ট্রাঙ্ক- url শাখা-url

আমার ট্রাঙ্কের ওয়ার্কিং কপির উপর

এটি historicalতিহাসিক পদ্ধতিতে পরিবর্তনগুলি প্রয়োগ করার চেষ্টা করে না (ট্রাঙ্কের পরিবর্তনগুলি বজায় রেখে)। এটি কেবল ট্রাঙ্ক এবং শাখার মধ্যে "পৃথক প্রয়োগ করে"। পরিবর্তিত হয়নি এমন ফাইলগুলিতে এটি আপনার ব্যবহারকারীদের জন্য কোনও দ্বন্দ্ব তৈরি করবে না। তবে আপনি শাখা থেকে আপনার informationতিহাসিক তথ্য হারাবেন, তবে আপনি যখনই কোনও মার্জটি রূপান্তরিত করেন তখন তা ঘটে।


1
এসভিএন 1.5 পোস্ট করুন আপনার ইতিহাস সংরক্ষণ করে এমন মার্জগুলি করতে সক্ষম হওয়া উচিত।
এন শেরউইন

9

সংগ্রহস্থল ব্রাউজার সরঞ্জামের মাধ্যমে আপনি এই পরিবর্তনগুলি করার পরামর্শ দিন।

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


রেপোতে একটি লিঙ্ক সুবিধাজনক হবে (কেবল সুবিধার জন্য - একটি গুগল অনুসন্ধান সংরক্ষণ করুন :)
ব্রায়ান এম হান্ট

3
দুঃখিত। বানানটি এটিকে দেখে মনে হচ্ছে আমি কোনও নির্দিষ্ট সরঞ্জাম (সম্পাদিত) উল্লেখ করছি। আসলে, বেশিরভাগ এসভিএন জিইউআই সরঞ্জামগুলির একটি রিপোজিটরি ব্রাউজার বৈশিষ্ট্য থাকা উচিত। এফওয়াইআই: আমি কচ্ছপের কাছিমগুলি
ক্রিস নাভা

4

আপনি যদি শাখাটিকে নতুন ট্রাঙ্কটি তৈরি করতে চান (যেমন) শাখাটি তৈরি হওয়ার পর থেকেই ট্রাঙ্কের সমস্ত পরিবর্তনগুলি থেকে মুক্তি পেতে পারেন তবে আপনি ১ টি ট্রাঙ্কের একটি শাখা তৈরি করতে পারেন (ব্যাকআপ উদ্দেশ্যে) ২. পরিবর্তন পরিবর্তন করুন "ট্রাঙ্কে (শাখাটি তৈরি হওয়ার পরে সমস্ত সংশোধনী নির্বাচন করুন branch. শাখাটি ট্রাঙ্কে ফিরে মার্জ করুন।

ইতিহাস এভাবেই থাকা উচিত।

শুভেচ্ছা, রজার


3

@ অ্যারন দিগুল্লা এবং @ কেমেনটিয়াস সমাধানগুলি কার্যক্ষম। সাবভার্শন ১.৪ সংগ্রহস্থলের জন্য, অনুলিপি / সরানো ক্রিয়াকলাপগুলি ভবিষ্যতে অন্য কোনও সংগ্রহস্থল কাঠামো বা বিভাজন সংগ্রহস্থলগুলিতে স্থানান্তরকে কঠিন করে তুলতে পারে।

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

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

অবশ্যই, শুরু করার আগে আপনার বিদ্যমান সংগ্রহস্থলটিকে ব্যাকআপ করুন।

এটি সরানো / অনুলিপিটি স্পষ্টভাবে রেকর্ড না করে ইতিহাস সংরক্ষণ করে এবং ভবিষ্যতের পুনর্গঠন করে, ইতিহাস সংরক্ষণ করে রাখাকে সহজ করে তোলে।


সম্পাদনা করুন: অনুরোধ অনুসারে, রেড-বিন বইয়ের ১.৪ বই থেকে ফিল্টারিংয়ের ইতিহাসের 1.4 আচরণের ডকুমেন্টেশন

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

এটি ব্যবহার করে মাইগ্রেশন / পুনর্গঠনের ক্ষেত্রে প্রযোজ্য svndumpfilter। এমন সময় রয়েছে যখন এখন একটু অতিরিক্ত কাজ করা অনেক পরে অতিরিক্ত কাজ সাশ্রয় করতে পারে এবং svndumpfilterভবিষ্যতের স্থানান্তর / পুনর্গঠনের জন্য সহজলভ্য ব্যবহারের দ্বারা অপেক্ষাকৃত কম ব্যয়ে ঝুঁকি হ্রাস করে।


"এসএনএন মুভ" কেন পর্যাপ্ত হবে না? আপনার পরামর্শটি মনে হচ্ছে স্লেজহ্যামার দিয়ে একটি ফ্লাই স্কোয়াশ করছে।
রব উইলিয়ামস 19

আমি এই 1.4 আচরণ দ্বারা কামড়েছি - যদি কোনও এসভিএন সংগ্রহস্থলে ডিরেক্টরি বা শাখা / ট্যাগগুলির চাল (পুনরায় নাম) থাকে তবে নতুন কাঠামোতে একটি সংগ্রহস্থল পুনর্গঠিত / মাইগ্রেট করতে সহায়তা করতে সানডাম্পফিল্টার ব্যবহার ব্যর্থ হতে পারে কারণ এটি ইতিহাস পরিচালনা করে না আমরা হব. এটি নথিভুক্ত, আমি রেফটি খনন করব। যদি আপনি চান
কেন সৌম্য

আপনি কি এই আচরণের রেফারেন্স যুক্ত করতে পারেন?
জ্যাকো

2

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

যাইহোক আপনি সাবভার্সনের কোন সংস্করণ ব্যবহার করছেন তা বিবেচনা না করেই, কোনও শাখায় ফিরে ট্রাঙ্কে পরিবর্তন আনার জন্য একটি সর্বোত্তম অনুশীলন পদ্ধতি রয়েছে। এটি সাবভার্সন ম্যানুয়ালটিতে বর্ণিত হয়েছে: সাবভারশন সহ সংস্করণ নিয়ন্ত্রণ, অধ্যায় ৪ ran শাখা এবং মার্জ করা, সিঙ্কে একটি শাখা রাখা


অফিসিয়াল তথ্যের জন্য থ্যাক্স যাতে অফিসিয়াল পদ্ধতির দ্বারা আমি ট্রাঙ্কে শাখাটি মার্জ করতে পারি। কীওয়ার্ডটি পুনরায়
সংহত

-3

এটি এসভিএন-এ একটি সত্যিই অদ্ভুত / অস্বাভাবিক কনফিগারেশন, এমনকি আমি মনে করি এটি একেবারেই "ভাল অনুশীলন" হওয়া অনেক দূরের বিষয়, যাইহোক, আমার ধারণা আপনি এই জাতীয় কিছু করতে পারেন:

  • সমস্ত সোর্সট্রি (এসএনএন কো থ্রুটসোর্সট্রি) চেকআউট করুন
  • ট্রাঙ্কটি সরান (এসএনএন আরএম ট্রাঙ্ক)
  • ট্রাঙ্কে শাখাটি অনুলিপি করুন (এসএনএন সিপি শাখা / থ্র্যাঞ্চ / ট্রাঙ্ক)
  • শাখাটি সরান (এসএনএন আরএম শাখা / থ্র্যাঞ্চ)
  • পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ

শুভকামনা


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