মার্চুরিয়াল: আমি একটি শাখার নাম পরিবর্তন করতে পারি?


204

আমাদের এখন একটি "স্টেঞ্জিং" শাখা রয়েছে, যেখানে "স্টেজেজিং" আরও অনেক ভাল সিনম্যাটিক ফিট বলে মনে হচ্ছে। এটি পরিচালনা করার জন্য একটি ভাল কৌশল কী?

উত্তর:


223

stigingশাখায় আপডেট করুন এবং এটি বন্ধ করে একটি নতুন শাখা তৈরি করুন। তারপরে পুরানো শাখাটি বন্ধ করুন।

সংক্ষেপে:

hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch

1
এটি আমি খুঁজে পেয়েছি এটি করার সর্বোত্তম উপায়। শাখাটি বন্ধ করা অন্যকে দুর্ঘটনাক্রমে এটি ব্যবহার করতে বাধা দেয় কারণ এটি "এইচজি শাখা" এর আউটপুটটিতে প্রদর্শিত হয় না show নামটি জানলে এটি পরে আপনাকে এটি অ্যাক্সেস করার অনুমতি দেয়।
পাত্র

2
মার্চুরিয়াল কি বন্ধ শাখার নাম পুনরায় ব্যবহারের অনুমতি দেবে? উদাহরণস্বরূপ, আপনার যদি v3 শাখা থাকে, আপনি কি উপরের কৌশলটি ব্যবহার করে এটি v4 নামকরণ করতে পারেন এবং তারপরে একটি বন্ধ v3 পিছনে রেখেও একটি নতুন v3 শাখা কাঁটাচামচ করতে পারেন?
জোশুয়া গোল্ডবার্গ

4
@ জোশুয়া গোল্ডবার্গ, 3 নোচ ভুল আপনি যদি ব্যবহার করেন তবে মার্চুরিয়াল আপনাকে একটি বদ্ধ শাখার নাম পুনরায় ব্যবহার করার অনুমতি দেবে --force। উদাহরণস্বরূপ: hg branch --force v3। এটি আপনি যেমন চেয়েছিলেন তেমন hg update v3নতুন v3শাখায় আপডেট হওয়ার ফলস্বরূপ ।
গিলি

2
এইচজি সহায়তা শাখায় @ গিলির মন্তব্য নিশ্চিত করেছেন: "
জোশুয়া গোল্ডবার্গ

7
আপনি যদি stigingশাখার আগে বন্ধ করেন , আপনি কোনও "আলগা শেষ" পাবেন না
ম্যাক্স.মাস্টারম্যান

60

ভবিষ্যতের পাঠকদের জন্য: rebaseএক্সটেনশনের সাহায্যে আপনি একই পিতামাতার সাথে একটি নতুন শাখা তৈরি করতে stigingএবং পুরো শাখার ইতিহাসটিকে এখান থেকে সরিয়ে নিতে পারেন:

hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging

এটি ধরে নিয়েছে যে stigingকেবলমাত্র একটি পিতা বা মাতা আছে। অবশ্যই আপনি পরিবর্তে কেবল সুস্পষ্ট সংশোধন নম্বর ব্যবহার করতে পারেন।

উল্লেখ্য 1: শাখা তাহলে stigingঅন্যান্য শাখার সঙ্গে মার্জ অন্তর্ভুক্ত, আমি মনে করি যে, এই তাদের সংরক্ষণ করবে, যতদিন stagingএবং stigingএকই পিতা বা মাতা আছে। তবে আমি অবশ্যই ডাবল-চেক করব

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

নোট 3 / সম্পাদনা (সৌজন্যে @ জেসনআরকুমবস): এখন যে পর্যায়গুলি পারদর্শী হিসাবে মানক, rebaseইতিমধ্যে ঠেলাঠেলি করা পরিবর্তনগুলি সংশোধন করতে অস্বীকার করবে। হয় এটিকে পুনরায় খসড়া (সহ hg phases) এ পরিবর্তন করে বা পুরানো শাখাটি যেখানে রয়েছে সেখানে থাকতে দিন এবং একটি সঠিক নামযুক্ত অনুলিপি করুন (উদাহরণস্বরূপ, `hg রিবেস - কিপিসহ)।


ছোট দলগুলির জন্য +1 যেখানে আপনি ব্যবহারকারীদের ক্লোন করতে বাধ্য করতে পারেন এটি একটি ভাল ধারণা - বা hg convertপরিবর্তে ব্যবহার করুন।
hochl

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

এ পদক্ষেপ 4: abort: can't rebase immutable changeset 11b1e2b7dc4f। মনে রাখবেন যে আমি অন্য একটি শাখা থেকে এই একটিতে চেঞ্জসেটগুলি গ্রাফ্ট করেছি। তদ্ব্যতীত, এটি বিভক্ত এবং বিনামূল্যে মার্জ।
মার্ক জেরোনিমাস

@ মার্ক, উপরের নোট 3 একবার দেখুন
অ্যালেক্সিস

6
নতুন শাখায় পরিবর্তন আনার পরিবর্তে এবং তারপরে পুনরায় রিভিসিংয়ের পরিবর্তে আপনি এটিকে বাদ দিতে পারেন .এবং আপনার --destমানের জন্য ব্যবহার করতে পারেন এবং পুনরায় নতুন শাখার নামটি স্বয়ংক্রিয়ভাবে নেওয়া হবে।
weberc2

16

যদি আপনার এতে চেঞ্জসেট থাকে, তবে আপনাকে নতুন নামকরণের জন্য আপনাকে একটি ব্রাঞ্চম্যাপের সাথে রূপান্তর এক্সটেনশনটি ব্যবহার করতে হবে। তারপরে প্রত্যেককে নতুন রেপো ক্লোন করতে হবে বা পুরাতন শাখাটি সরিয়ে ফেলতে হবে।


1
এটি একটি আকর্ষণীয় সমাধান, আপনি কি আরও কিছুটা ব্যাখ্যা করতে পারেন?
ডাঃএম

15

"স্টেজিং" নামে একটি নতুন শাখা তৈরি করুন এবং অন্যটিকে ভুলে যান ...


আমি এটিই করতাম +1। পুরানো চেঞ্জসেটগুলিতে এখনও পুরাতন ব্রাঞ্চের নাম থাকবে, তবে নতুনদের নতুন শাখার নাম থাকবে।
বরজাক

6

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

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

hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch

1
পদক্ষেপ 3 এর জন্য আপনি ব্যবহার করতে পারেনhg graft {first changeset in stiging}..{stiging head}
কেসিডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.