ট্রাঙ্কে একটি শাখা মার্জ করুন


125

আমি এসভিএন নিয়ে এক অদ্ভুত সমস্যার মুখোমুখি merge। আমি একটি দেব শাখা থেকে ট্রাঙ্কে মার্জ করতে চাই। আমাদের একইসাথে ট্রাঙ্কটি কেটে একাধিক দেব শাখা রয়েছে।

আমি এই কমান্ডটি দিয়ে ট্রাঙ্কে সেই শাখাগুলির একটি মিশ্রণ করছি:

svn merge trunk branch_1

আমি পরিবর্তনগুলি দেখতে পাচ্ছি যা এই শাখার অংশ নয়, ট্রাঙ্কে মিশে গেছে। আমি কি ভুল করছি ?

এসভিএন সংস্করণ:

সাবভার্সন কমান্ড-লাইন ক্লায়েন্ট, সংস্করণ 1.6.16- স্লিকসভন-tag-1.6.16@1076804-WIN32।


7
আমি জানি এটি কোনও উত্তর নয়, তবে আপনার যদি একসাথে বেশ কয়েকটি সক্রিয় শাখা থাকে তবে সম্ভবত আপনি আরও ভাল বা গিটারে যেতে চান। পিএস: আমি কোনও ধর্মান্ধ নই, আমি
n

2
এটি কী সুবিধা দেয়? গিট বা মুরূসিয়াল কেন সরানো একটি ভাল পছন্দ?
ভানচিনাথন চন্দ্রশেকরন

3
কারণ গিট এবং মারিউরিয়াল শাখাগুলির আরও ভাল সমর্থন রয়েছে। সুবিধা: আপনি এই জাতীয় প্রশ্ন জিজ্ঞাসা করবেন না এবং শাখা তৈরি এবং রক্ষণাবেক্ষণের ক্ষেত্রে আপনার মাথাব্যথা কম হবে (বর্তমানে আমি> 1000 শাখা নিয়ে একটি প্রকল্পে কাজ করছি,
এসএনএনতে

আমি Svnrc.py সন্ধান এবং এই নিবন্ধটি পর্যালোচনা করার পরামর্শ দিচ্ছি ।
chown

উত্তর:


215

আপনার svn mergeসিনট্যাক্সটি ভুল।

আপনি একটি ওয়ার্কিং কপি চেকআউট করতে চান trunkএবং তারপরে svn merge --reintegrateবিকল্পটি ব্যবহার করতে পারেন :

$ pwd
/home/user/project-trunk

$ svn update  # (make sure the working copy is up to date)
At revision <N>.

$ svn merge --reintegrate ^/project/branches/branch_1
--- Merging differences between repository URLs into '.':
U    foo.c
U    bar.c
 U   .

$ # build, test, verify, ...

$ svn commit -m "Merge branch_1 back into trunk!"
Sending        .
Sending        foo.c
Sending        bar.c
Transmitting file data ..
Committed revision <N+1>.

দেখুন মার্জ উপর SVN বই অধ্যায় আরো বিস্তারিত জানার জন্য।


নোট করুন যে সময়ে এটি লেখা হয়েছিল, এটি সঠিক উত্তর ছিল (এবং স্বীকৃত হয়েছিল) তবে জিনিসগুলি এগিয়ে গেছে। টোপেকের উত্তর দেখুন, এবং http://subversion.apache.org/docs/release-notes/1.8.html#auto-reintegrate


4
--reintegrate বিকল্প বাধ্যতামূলক নয়, শাখা (1.6 এ) যে কোনও গন্তব্যের সাথে একত্রীকরণ করা যেতে পারে কোনও স্থানে
অলস ব্যাজার

1
সত্যি? একই চেঞ্জসেটগুলির পুনরুত্থানের ঝুঁকি ছাড়াই? আপনি কি দয়া করে এর প্রমাণ প্রমাণের জন্য একটি লিঙ্ক সরবরাহ করতে পারেন।
নিউট্রিনো

--reintegrateপ্রকৃতপক্ষে বাধ্যতামূলক নয় তবে এই ক্ষেত্রে সত্যই সুপারিশ করা হয়েছে। আমি এটি ছাড়াই এটি করার চেষ্টা করেছি --reintegrateএবং শত সংঘাতের সাথে শেষ করেছি। সাথে --reintegrate, কোনও বিরোধ নেই এবং সবকিছুই ভাল ছিল!
টিবো

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

3
@ ডেভেল, ফরোয়ার্ড ট্রাঙ্ক থেকে শাখায় মিশে গেছে তা আমার কাছে বোধগম্য। তবে আমি একটি উন্নত বৈশিষ্ট্য পাওয়া যায় "একটি reitegrated শাখা রাখা জীবিত" (দেখুন stackoverflow.com/a/10163059/685806 ), উপরন্তু এটা নতুন ক্লায়েন্ট সংস্করণ দ্বারা স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়।
পিনো

78

যদি আপনার ওয়ার্কিং ডিরেক্টরিটি ট্রাঙ্কের দিকে নির্দেশ করে তবে আপনার শাখাটি এতে মার্জ করতে সক্ষম হবেন:

svn merge https://HOST/repository/branches/branch_1

আপনার ট্রাঙ্কের মূল ডিরেক্টরিতে এই কমান্ডটি প্রদান করা নিশ্চিত হন


7
এসভিএন 1.8 হিসাবে। এই সঠিক উত্তর। দেখুন subversion.apache.org/docs/release-notes/...
GreenAsJade

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

1.7 দিয়ে আপনি --reintegrate বিকল্প ব্যতীত মার্জ করতে পারবেন এবং শাখায় বিকাশ করতে এবং মার্জ করতে থাকবেন। দুঃখের বিষয়, 1.8 এটিকে পুনরায় সংহত করতে বাধ্য করবে এবং এটি প্রতিরোধের কোনও উপায় বলে মনে হচ্ছে না। এর অর্থ আপনি মার্জ হওয়ার সাথে সাথেই আপনি তখন ভয়ঙ্কর "কিপ-লাইভ ডান্স" না পেরে শাখাটি ব্যবহার করতে পারবেন না
জন লিটল

3
সংশ্লেষের পরে ট্রাঙ্কের কাজের অনুলিপিটি পুনরায় ভান্ডারে জমা দিতে ভুলবেন না!
জন

16

ট্রাঙ্কে একটি এসএনএন আপডেট করুন, সংশোধন নম্বরটি নোট করুন।

ট্রাঙ্ক থেকে:

svn merge -r<revision where branch was cut>:<revision of trunk> svn://path/to/branch/branchName

এসএনএন লগ করে আপনি ট্রাঙ্ক থেকে শাখাটি কোথায় কাটা হয়েছিল তা পরীক্ষা করতে পারেন

svn log --stop-on-copy

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

যদিও এটি সঠিক নয়, এর আরও সাম্প্রতিক সংস্করণগুলিতে svn(যেমন একটি ওপি ব্যবহার করছে) এর সাথে একত্রীকরণের সহজ উপায় রয়েছে ।
blahdiblah

@ বাঞ্চিনাথনচন্দ্রসেকরণ, কমান্ডে আপনি শাখার নাম উল্লেখ করেছেন svn://path/to/branch/branchNameকারণ সেই শাখার পরিবর্তনগুলি অন্য শাখা থেকে নয় pull তা হলে আমরা বিপদে!
ফ্রেড্রিক গাউস

1

বাক্য গঠনটি ভুল, পরিবর্তে এটি হওয়া উচিত

svn merge <what(the range)> <from(your dev branch)> <to(trunk/trunk local copy)>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.