ডিভিসিএস - একটি সাধারণ কর্মপ্রবাহ "ক্লোন ক্লোন"?


9

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

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

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


7
এটি সিভিএস এবং এসভিএন ওয়ার্কফ্লোগুলি থেকে একটি নিয়ন্ত্রণ, মনে রাখবেন "হাতুড়ি পর্যন্ত সমস্ত কিছুই পেরেকের মতো দেখাচ্ছে"

1
@ জারোদরবারসন - আপনি যদি কেবল নিজের পথে gitকাজ করতে সীমাবদ্ধ থাকেন তবেই । hgএটির সাথে সাধারণত প্রথম কর্মপ্রবাহ শেখানো হয় এবং এটি এখনও খুব দরকারী।
বুথ

উত্তর:


3

উভয় শাখা দেখতে সক্ষম হওয়ার সাধারণ সুবিধা / অসুবিধা ছাড়াও, আমি মনে করি এটি করার জন্য একটি মার্চারিয়াল-নির্দিষ্ট সুবিধা রয়েছে।

আপনি যদি একটি শাখা তৈরি করতে ক্লোন করেন তবে আপনি নিজের পরিবর্তনগুলি রাখতে না চাইলে আপনি ক্লোনটি পরে মুছতে পারেন। যদি আপনি সেগুলি মার্জ করার সিদ্ধান্ত নেন, তবে আপনি নিজের পরিবর্তনগুলি এইভাবে আলাদা করার সিদ্ধান্ত নিয়েছিলেন তা অন্য কারও কাছে দৃশ্যমান নয়।

বিপরীতে, আপনি যদি hg branchনতুন নামযুক্ত শাখা তৈরি করতে ব্যবহার করেন তবে শাখাটির নাম ইতিহাসে রেকর্ড করা হয় যখন আপনি প্রতিশ্রুতিবদ্ধ হন, অন্য সবার কাছে দৃশ্যমান হয় এবং পরে সম্ভাব্য বিভ্রান্তি এড়াতে মোটামুটি অনন্য হতে হবে। আপনার শাখাটি কিছু পরীক্ষামূলক বৈশিষ্ট্য বিকাশের জন্য, বা এমন একটি পরিবর্তনের জন্য রয়েছে যা ছোট হতে পারে।

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

http://mercurial.selenic.com/wiki/SandardBranching এটি আরও বিশদে ব্যাখ্যা করে। এটি উল্লেখ করার মতো বিষয় যে মার্চুরিয়াল 1.8 সাল থেকে, একটি বুকমার্ক ( hg bookmark) তৈরি করা সম্ভব - একটি স্বল্প-কালীন শাখার জন্য নিষ্পত্তিযোগ্য নাম। বুকমার্কগুলি ধাক্কা, টান, চারপাশে সরানো এবং মোছা যায়।


2
আমি মার্কুরিয়াল বেশি ব্যবহার করি নি তবে গিটের এই সমস্যা নেই। আমি সারাদিন স্থানীয়ভাবে শাখা করতে পারি, বিকাশকারী শাখায় একীভূত করতে পারি, ধাক্কা দিতে পারি এবং আমার শাখার নাম দেখতে কারও দরকার নেই।
অ্যান্ড্রু টি ফিনেল

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

1
@AndrewFinnell - নামযুক্ত শাখা আমি হয় সত্যিই মিস git, তাদের ব্যবহৃত হচ্ছে hg। এছাড়াও, git branchপ্রত্যেকবার আমি একটি শাখা তৈরি করতে চাইলে তা স্পষ্টভাবে মনে রাখা বিরক্তিকর, নিজের hgনামবিহীন শাখাগুলির স্বয়ংক্রিয়ভাবে তৈরি করার সাথে তুলনা করে ।
বুথ

আপনি এখনও এইচজি তে আপনার শাখাটি মুছতে বান্ডিল স্ট্রিপ এক্সটেনশনটি ব্যবহার করতে পারেন। "পর্যায়ক্রমে" ব্যবহারের মাধ্যমে
মার্কুরিয়াল

2

আপনি যখনই কোনও ডিভিসিএসে প্রতিশ্রুতিবদ্ধ হন আপনি প্রযুক্তিগতভাবে ইতিহাসে একটি শাখা তৈরি করছেন, যতবারই আপনি এটি পুনরায় একীভূত করে আশীর্বাদী ভাণ্ডারে ফিরে যান, আকর্ষণীয় অংশটি এখানে আসে:

  • আপনার প্রতিশ্রুতি দেওয়ার সময় যদি কেউ পরিবর্তন না করে থাকে তবে এটি ড্যাগের কোনও শাখার মতো দেখাবে না (নির্দেশিত অ্যাসাইক্লিক গ্রাফ)
  • যদি আপনার প্রতিশ্রুতি দেওয়ার সময় অন্য কেউ পরিবর্তন করে থাকে তবে এটি ডিএজি-র একটি শাখার মতো দেখাবে, কেবল নামবিহীন

বিটবকেট / গিথুবে "কাঁটাচামড়া" বোতামটি মনে রাখবেন ?, কাঁটাচামচ শাখার সমার্থক হিসাবে বিবেচনা করা যেতে পারে, এবং "কাঁটাচামচ" বোতামটি কী করে তা আপনার অ্যাকাউন্টের সেই সংগ্রহস্থলের একটি ক্লোন মাত্র।

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

কীভাবে শাখা করবেন তা আপনার সহকর্মীকে বলুন , এটি খুব সহজ, এখানে একটি টিউটোরিয়াল রয়েছে:

D:\>mkdir lol

D:\>cd lol

D:\lol>hg init

D:\lol>hg branch
default

D:\lol>touch lol

D:\lol>hg add lol

D:\lol>hg commit -m "lol"

D:\lol>hg branch lol
marked working directory as branch lol
(branches are permanent and global, did you want a bookmark?)

D:\lol>hg branches
default                        0:35d562fafaf2

D:\lol>echo "lol" > lol

D:\lol>hg commit -m "New lol branch"

D:\lol>hg branches
lol                            1:9384f923e78d
default                        0:35d562fafaf2 (inactive)

D:\lol>hg branch
lol

D:\lol>hg update default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

D:\lol>hg branch
default

D:\lol>hg update lol
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

D:\lol>hg branch
lol

D:\lol>hg update default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

D:\lol>hg branch
default

D:\lol>hg merge lol
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)

D:\lol>hg commit -m "lol merge"

D:\lol>hg branch
default

D:\lol>hg update lol
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

D:\lol>hg branch
lol

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

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

D:\lol>hg branches
default                        2:46420aca1612
lol                            1:9384f923e78d (inactive)

D:\lol>hg branch
lol

D:\lol>hg commit --close-branch -m "Obai, glorious lol branch"

D:\lol>hg branches
default                        2:46420aca1612

D:\lol>hg branch
lol

D:\lol>hg update default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

D:\lol>hg branches
default                        2:46420aca1612

D:\lol>hg branches --closed
default                        2:46420aca1612
lol                            3:4b79c577e029 (closed)

আশা করি এটি আপনার ডিভিসিএস শাখাগুলির সন্দেহগুলি দূর করে, এখানে শাখাগুলি আর ভীতিজনক নয়।


0

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

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


আমি উত্পাদন সঙ্গে এটি ব্যাপকভাবে ব্যবহার করেছি hg। একাধিক hgসংগ্রহস্থলের মধ্যে ধাক্কা টানতে সক্ষম হওয়া সত্যই শক্তিশালী সহযোগী সরঞ্জাম হতে পারে। কেবল নন-বেয়ার স্টোরগুলি থেকে টানতে সক্ষম হওয়া gitএই ধরণের ওয়ার্কফ্লো দিয়ে আপনার বিকল্পগুলিকে যথেষ্ট পরিমাণে সীমাবদ্ধ করতে পারে।
বুথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.