দাবি অস্বীকার : আমি গিট ব্যবহার করি, গিট মেইলিং তালিকায় গিট বিকাশ অনুসরণ করি এবং গিটকেও কিছুটা অবদান রাখি (মূলত গিটওয়েব)। আমি ডকুমেন্টেশন থেকে মার্চুরিয়াল এবং কিছুকে ফ্রি নোডের #revctrl আইআরসি চ্যানেলে আলোচনা থেকে জানি।
এই # লেখার জন্য মার্চুরিয়াল সম্পর্কে সহায়তার জন্য # জরুরী আইআরসি চ্যানেলের সমস্ত লোককে ধন্যবাদ
সারসংক্ষেপ
এখানে টেবিলের জন্য কিছু সিনট্যাক্স, পিএইচপিমার্কডাউন / মাল্টিমার্কডাউন / মার্কডাউন মার্কুকুর এক্সটেনশন এর মতো কিছু ভাল লাগবে would
- সংগ্রহস্থল কাঠামো: মার্চুরিয়াল অক্টোপাসকে একত্রীকরণের অনুমতি দেয় না (দু'জনের বেশি বাবা-মায়ের সাথে), বা অ-প্রতিশ্রুতিবদ্ধ অবজেক্টগুলিকে ট্যাগ করতে পারে না।
- ট্যাগ্স: মার্চুরিয়াল
.hgtags
প্রতি-সংগ্রহের ট্যাগগুলির জন্য বিশেষ নিয়মযুক্ত সংস্করণযুক্ত ফাইল ব্যবহার করে এবং এতে স্থানীয় ট্যাগগুলির জন্য সমর্থনও রয়েছে .hg/localtags
; গিট ট্যাগগুলিতে refs/tags/
নেমস্পেসে থাকা রেফ থাকে এবং ডিফল্টরূপে আনার সময় স্বয়ংক্রিয়ভাবে ফাঁকা থাকে এবং স্পষ্টভাবে ধাক্কা দেওয়ার প্রয়োজন হয়।
- শাখাগুলি: বুধবার্কে বুনিয়াদি কর্মপ্রবাহ বেনামে মাথার উপর ভিত্তি করে ; গিটটিতে হালকা ওজনের নামযুক্ত শাখা ব্যবহার করা হয় এবং এতে বিশেষ ধরণের শাখা থাকে ( রিমোট-ট্র্যাকিং শাখা) branches ) যা দূরবর্তী সংগ্রহস্থলে শাখা অনুসরণ করে।
- পরিবর্ধন ও পরিবর্তন নামকরণ করার এবং রেঞ্জ: Mercurial উপলব্ধ সংস্করণ সংখ্যা , সংগ্রহস্থলের স্থানীয় এবং ভিত্তিগুলোকে আপেক্ষিক পুনর্বিবেচনা (টিপ থেকে কাউন্টিং, অর্থাত্ বর্তমান শাখা) এবং এই উপর পুনর্বিবেচনা রেঞ্জ স্থানীয় সংখ্যায়ন; গিট শাখা টিপের সাথে সম্পর্কিত রিভিশনকে নির্দেশ করার একটি উপায় সরবরাহ করে এবং পুনর্বিবেচনা রেঞ্জগুলি টোপোলজিকাল (সংশোধনের গ্রাফের উপর ভিত্তি করে)
- মার্চুরিয়াল পুনরায় নামকরণ ট্র্যাকিং ব্যবহার করে , যখন গিট পুনরায় নাম সনাক্তকরণ ব্যবহার করে ফাইলের নামগুলি
- নেটওয়ার্ক: মার্চুরিয়াল এসএসএইচ এবং এইচটিটিপি "স্মার্ট" প্রোটোকল এবং স্ট্যাটিক এইচটিটিপি প্রোটোকল সমর্থন করে; আধুনিক গিট এসএসএইচ, এইচটিটিপি এবং জিআইটি "স্মার্ট" প্রোটোকল এবং এইচটিটিপি (এস) "বোবা" প্রোটোকলকে সমর্থন করে। উভয়েরই অফ-লাইন পরিবহনের জন্য বান্ডিল ফাইলগুলির জন্য সমর্থন রয়েছে।
- মার্চুরিয়াল এক্সটেনশন (প্লাগইন) এবং প্রতিষ্ঠিত এপিআই ব্যবহার করে; গিটের স্ক্রিপ্টযোগ্যতা এবং প্রতিষ্ঠিত ফর্ম্যাট রয়েছে।
কিছু জিনিস রয়েছে যা গিট থেকে মার্চুরিয়ালের চেয়ে পৃথক, তবে এমন আরও কিছু জিনিস রয়েছে যা এগুলিকে অনুরূপ করে তোলে। দুটি প্রকল্পই একে অপরের কাছ থেকে ধারণা ধার করে। উদাহরণস্বরূপ, মার্চুরিয়ালেhg bisect
কমান্ড (পূর্বে দ্বিখণ্ডিত এক্সটেনশন ) git bisect
গিটের কমান্ড দ্বারা অনুপ্রাণিত হয়েছিল , যখন ধারণাটি git bundle
দ্বারা অনুপ্রাণিত হয়েছিল hg bundle
।
সংগ্রহস্থল কাঠামো, সংশোধনগুলি সংরক্ষণ করে
গিটে এর অবজেক্টের ডাটাবেসে চার ধরণের অবজেক্ট রয়েছে: ব্লব অবজেক্টস যা কোনও ফাইলের বিষয়বস্তু ধারণ করে, শ্রেণিবদ্ধ গাছের বস্তু যা ফাইলের নাম এবং ফাইল অনুমতিগুলির প্রাসঙ্গিক অংশ সহ ডিরেক্টরি কাঠামো সংরক্ষণ করে (ফাইলগুলির জন্য নির্বাহযোগ্য অনুমতি, প্রতীকী লিঙ্ক হওয়া) , কমিট অবজেক্ট যা লেখক সম্পর্কিত তথ্য রয়েছে , প্রতিশ্রুতি দ্বারা সংশোধনকালে রিপোজিটরির অবস্থার স্ন্যাপশটের পয়েন্টার (প্রকল্পের শীর্ষ ডিরেক্টরিতে একটি ট্রি অবজেক্টের মাধ্যমে) এবং শূন্য বা আরও বেশি পিতামাতার কমিটের উল্লেখ এবং ট্যাগ রেফারেন্স অবজেক্ট যা অন্যান্য অবজেক্টগুলিকে রেফারেন্স করে এবং করতে পারে পিজিপি / জিপিজি ব্যবহার করে স্বাক্ষর করুন।
গিট বস্তু সংরক্ষণের দুটি উপায় ব্যবহার করে: আলগা বিন্যাস, যেখানে প্রতিটি বস্তু একটি পৃথক ফাইলে সংরক্ষণ করা হয় (সেই ফাইলগুলি একবারে লেখা হয়, এবং কখনই পরিবর্তিত হয় না), এবং প্যাকড ফর্ম্যাট যেখানে অনেকগুলি বস্তু একক ফাইলে ডেল্টা-সংকুচিত থাকে। ক্রিয়াকলাপের পারমাণবিকতা সত্য দ্বারা সরবরাহ করা হয়, নতুন কোনও অবজেক্টের লেখার পরে সেই রেফারেন্সটি রচনা করা হয় (পরমাণুভাবে ক্রিয়েট + রিমনাম ট্রিক ব্যবহার করে) writing
গিট সংগ্রহস্থলগুলির git gc
(ডিস্কের স্থান হ্রাস এবং কার্যকারিতা উন্নত করতে) ব্যবহার করে পর্যায়ক্রমিক রক্ষণাবেক্ষণ প্রয়োজন , যদিও আজকাল গিট স্বয়ংক্রিয়ভাবে তা করে does (এই পদ্ধতিটি সংগ্রহস্থলগুলির আরও ভাল সংক্ষেপণ সরবরাহ করে))
মার্চুরিয়াল (যতদূর আমি এটি বুঝতে পারি) ফাইললগে একটি ফাইলের ইতিহাস সংরক্ষণ করে (একসাথে, আমি মনে করি, পুনর্নামকরণ ট্র্যাকিংয়ের মতো অতিরিক্ত মেটাডেটা এবং কিছু সহায়ক তথ্য সহ); এটি ডিরেক্টরি কাঠামো সংরক্ষণের জন্য ম্যানিফেস্ট নামে ফ্ল্যাট কাঠামো এবং চেঞ্জলগ নামে কাঠামো ব্যবহার করে সম্পর্কে changesets (পুনর্বিবেচনা) যা দোকান তথ্য, কমিট বার্তা এবং শূন্য, এক বা দুই বাবা সহ।
মার্চুরিয়াল অপারেশনের পারমাণবিকতা সরবরাহ করতে লেনদেনের জার্নাল ব্যবহার করে এবং ব্যর্থ বা বাধাগ্রস্থ অপারেশনের পরে ক্লিন-আপ করার জন্য ফাইলগুলি কাটানোর উপর নির্ভর করে । রেভলগগুলি কেবলমাত্র পরিশিষ্ট।
মার্চুরিয়ালে গিট বনাম সংগ্রহস্থলের কাঠামোটির দিকে তাকালে, কেউ দেখতে পাবে যে গিট আরও বেশি object
পার্থক্য:
গিটে গাছের জিনিসগুলি একটি শ্রেণিবিন্যাসিক কাঠামো গঠন করে; মার্চুরিয়াল ম্যানিফেস্ট ফাইলটিতে ফ্ল্যাট কাঠামো। গিট ব্লব অবজেক্টে কোনও ফাইলের একটি সামগ্রীর একটি সংস্করণ সংরক্ষণ করা হয়; Mercurial মধ্যে filelog দোকানে একটি একক ফাইলের পুরো ইতিহাস (যদি আমরা বিবেচনায় এখানে কোনো জটিলতা renames সঙ্গে নিয়ে না)। এর অর্থ হ'ল অপারেশনের বিভিন্ন ক্ষেত্র রয়েছে যেখানে গিট মার্কুরিয়ালের চেয়ে দ্রুত হবে, অন্যান্য সমস্ত জিনিস সমান হিসাবে বিবেচিত হবে (যেমন মার্জ করা, বা কোনও প্রকল্পের ইতিহাস দেখানো), এবং যে জায়গাগুলিতে মার্কুরিয়াল গিটের চেয়ে দ্রুত হবে (প্যাচ প্রয়োগ করা বা দেখানোর মতো) একক ফাইলের ইতিহাস)।এই সমস্যা ব্যবহারকারী শেষ জন্য গুরুত্বপূর্ণ নাও হতে পারে।
মার্চুরিয়ালের চেঞ্জলগ কাঠামোর স্থির-রেকর্ড কাঠামোর কারণে, মার্চুরিয়ালে কমিট করার ক্ষেত্রে কেবল দু'জন পিতা-মাতা থাকতে পারে ; গিটে কমিট করার ক্ষেত্রে দুটিরও বেশি বাবা-মা থাকতে পারে (তথাকথিত "অক্টোপাস মার্জ")। আপনি যখন (তত্ত্ব অনুসারে) দ্বি-পিতামাতার একত্রীকরণের সিরিজ দ্বারা অক্টোপাস মার্জ প্রতিস্থাপন করতে পারেন, মার্চুরিয়াল এবং গিট সংগ্রহস্থলের মধ্যে রূপান্তর করার সময় এটি জটিলতা সৃষ্টি করতে পারে।
যতদূর আমি জানি মার্চুরিয়াল গিট থেকে টীকাযুক্ত ট্যাগ (ট্যাগ অবজেক্ট) এর সমতুল্য নয় । টীকাগুলি ট্যাগগুলির একটি বিশেষ ক্ষেত্রে স্বাক্ষরিত ট্যাগগুলি (পিজিপি / জিপিজি স্বাক্ষর সহ) থাকে; মার্চুরিয়ালের সমতুল্য জিপিজিএক্সটেনশন ব্যবহার করে করা যেতে পারে , যা মার্শুরিয়াল বরাবর বর্ধিত হয়। গিটের মতো আপনি মার্কুরিয়ালে নন-কমিট অবজেক্ট ট্যাগ করতে পারবেন না , তবে এটি খুব গুরুত্বপূর্ণ নয়, আমি মনে করি (কিছু গিট রিপোজিটরিগুলি স্বাক্ষরিত ট্যাগগুলি যাচাই করার জন্য পাবলিক পিজিপি কী বিতরণ করার জন্য ট্যাগ ব্লব ব্যবহার করে)।
তথ্যসূত্র: শাখা এবং ট্যাগ
গিট রেফারেন্সে (শাখা, রিমোট-ট্র্যাকিং শাখা এবং ট্যাগগুলি) কমিটের DAG এর বাইরে থাকে (তাদের যেমন করা উচিত)। refs/heads/
নেমস্পেসের ( স্থানীয় শাখা ) রেফারেন্সগুলি কমিটগুলি নির্দেশ করে এবং সাধারণত "গিট কমিট" দ্বারা আপডেট হয়; তারা শাখার ডগা (মাথা) দিকে ইঙ্গিত করে, এই কারণেই এই জাতীয় নাম। refs/remotes/<remotename>/
নেমস্পেসের রেফারেন্স ( রিমোট ট্র্যাকিং শাখা ) প্রতিশ্রুতিবদ্ধ, দূরবর্তী সংগ্রহস্থলে শাখাগুলি অনুসরণ করে <remotename>
এবং "গিট ফেচ" বা সমতুল্য দ্বারা আপডেট করা হয়। refs/tags/
নেমস্পেসের ( ট্যাগগুলি ) রেফারেন্সগুলি সাধারণত কমিট (হালকা ওজনের ট্যাগ) বা ট্যাগ অবজেক্টগুলিতে (টীকায়িত এবং স্বাক্ষরিত ট্যাগগুলি) নির্দেশ করে এবং পরিবর্তিত করার উদ্দেশ্যে নয়।
ট্যাগ
মার্চুরিয়ালে আপনি ট্যাগ ব্যবহার করে সংশোধনের স্থির নাম দিতে পারেন ; ট্যাগগুলি উপেক্ষা করার ধরণগুলির মতো একইভাবে সংরক্ষণ করা হয়। এর অর্থ হ'ল বিশ্বজুড়ে দৃশ্যমান ট্যাগগুলি .hgtags
আপনার সংগ্রহস্থলে পুনর্বিবেচনা-নিয়ন্ত্রিত ফাইলে সংরক্ষণ করা হয় । এর দুটি পরিণতি রয়েছে: প্রথমত, সমস্ত ট্যাগের বর্তমান তালিকা পেতে এবং এই জাতীয় ফাইল আপডেট করার জন্য মার্কুরিয়ালকে এই ফাইলটির জন্য বিশেষ বিধি ব্যবহার করতে হবে (উদাহরণস্বরূপ, এটি ফাইলটির সর্বাধিক প্রতিশ্রুতিবদ্ধ সংশোধনটি পড়েছে, বর্তমানে এটির পরীক্ষা করা সংস্করণ নেই); দ্বিতীয়ত, অন্যান্য ব্যবহারকারী / অন্যান্য সংগ্রহস্থলগুলিতে (যতদূর আমি এটি বুঝতে পারি) নতুন ট্যাগটি দেখতে আপনার এই ফাইলটিতে পরিবর্তন আনতে হবে।
মার্চুরিয়াল স্থানীয় ট্যাগগুলিকে সমর্থন করে , এতে সঞ্চিত রয়েছে hg/localtags
, যা অন্যদের কাছে দৃশ্যমান নয় (এবং অবশ্যই স্থানান্তরযোগ্য নয়)
মধ্যে Git ট্যাগ (ধ্রুব) অন্যান্য বস্তু (সাধারণত ট্যাগ বস্তু, যা আবার করে বিন্দু) সঞ্চিত করার নামে রেফারেন্স ঠিক করা হয়েছে refs/tags/
নামস্থান। ডিফল্টরূপে সংশোধন করে একটি সেট আনার সময় বা ধাক্কা দেওয়ার পরে, গিটটি স্বয়ংক্রিয়ভাবে ট্যাগগুলি টেনে আনে বা ধাক্কা দেয় যা সংশোধনগুলি আনার বা ধাক্কা দেওয়ার জন্য নির্দেশ করে। তবুও আপনি কিছু পরিমাণে নিয়ন্ত্রণ করতে পারেন যে ট্যাগগুলি আনা বা ধাক্কা দেওয়া হয়।
গিট হালকা ওজনের ট্যাগগুলি দেখায় (সরাসরি প্রত্যাশার দিকে নির্দেশ করে) এবং টীকাকৃত ট্যাগগুলি (ট্যাগ অবজেক্টগুলিতে পয়েন্ট করা, যেগুলিতে ট্যাগ মেসেজ থাকে optionচ্ছিকভাবে পিজিপি স্বাক্ষর অন্তর্ভুক্ত থাকে, যা পরিবর্তে বিন্দুতে প্রতিশ্রুতি দেয়) উদাহরণস্বরূপ, ডিফল্টরূপে এটি বর্ণনার সময় কেবল টীকাযুক্ত ট্যাগ বিবেচনা করে "গিট বর্ণনা" ব্যবহার করে প্রতিশ্রুতিবদ্ধ।
গিটের মার্চুরিয়ালে স্থানীয় ট্যাগগুলির কঠোর সমতুল্য নেই। তবুও গিটের সেরা অনুশীলনগুলি পৃথক পাবলিক বেয়ার রিপোজিটরি সেটআপ করার পরামর্শ দেয়, যার মধ্যে আপনি প্রস্তুত পরিবর্তনগুলিকে ধাক্কা দেন এবং অন্যেরা ক্লোন করে নিয়ে আসে। এর অর্থ হ'ল যে ট্যাগগুলি (এবং শাখাগুলি) আপনি চাপছেন না তা আপনার ভাণ্ডারগুলিতে ব্যক্তিগত। অন্যদিকে আপনার কাছে চেয়ে নামস্থান অন্যান্য ব্যবহার করতে পারেন heads
, remotes
বা tags
উদাহরণস্বরূপ, local-tags
স্থানীয় ট্যাগ।
ব্যক্তিগত মতামত: আমার মতে ট্যাগগুলি বাইরের সংশোধন গ্রাফের বাইরে থাকা উচিত, কারণ তারা এর বাহ্যিক (তারা সংশোধনের গ্রাফের দিকে নির্দেশক)। ট্যাগগুলি অ-সংস্করণযুক্ত হওয়া উচিত, তবে স্থানান্তরযোগ্য। ফাইলগুলিকে উপেক্ষা করার জন্য মার্কুরিয়ালের মতো একটি প্রক্রিয়া ব্যবহারের পছন্দটির অর্থ এটি হয় .hgtags
বিশেষভাবে চিকিত্সা করতে হবে (গাছের মধ্যে গাছ স্থানান্তরযোগ্য, তবে সাধারণ এটি সংস্করণযুক্ত), বা ট্যাগ রয়েছে যা কেবল স্থানীয় ( .hg/localtags
অ-সংস্করণযুক্ত, কিন্তু অপরিবর্তনীয়)।
শাখা
গিট স্থানীয় শাখায় (শাখা টিপ, বা শাখা প্রধান) একটি অঙ্গীকারের একটি নামযুক্ত রেফারেন্স, যেখানে কেউ নতুন কমিট বাড়তে পারে। শাখাটি বিকাশের সক্রিয় লাইনকেও বোঝাতে পারে, অর্থাত্ শাখার ডগা থেকে সমস্ত কমে যাওয়া পৌঁছে যায়। স্থানীয় শাখাগুলি refs/heads/
নেমস্পেসে থাকে, সুতরাং যেমন 'মাস্টার' শাখার পুরোপুরি যোগ্যতাসম্পন্ন নাম 'রেফ / হেড / মাস্টার'।
গিটের বর্তমান শাখা (যার অর্থ পরীক্ষা করা শাখা, এবং যে শাখাটি নতুন প্রতিশ্রুতিবদ্ধ হবে) হ'ল শাখা যা হেড রেফ দ্বারা রেফারেন্স করা হয়। প্রতীকী রেফারেন্স না হয়ে কারও কাছে সরাসরি প্রতিশ্রুতিবদ্ধ দিকে নির্দেশ করা যেতে পারে; নামবিহীন নামহীন শাখায় থাকার এই অবস্থাকে ডিটেচড হেড ("গিট শাখা" দেখায় যে আপনি '(কোনও শাখা নেই)' তে আছেন।
মার্চুরিয়ালে বেনামে শাখা রয়েছে (শাখা প্রধান), এবং বুকমার্কগুলি ব্যবহার করতে পারেন ( বুকমার্ক এক্সটেনশনের মাধ্যমে )। এই ধরনের বুকমার্ক শাখাগুলি খাঁটি স্থানীয়, এবং সেইগুলি নামগুলি (সংস্করণ 1.6 অবধি) মার্চুরিয়াল ব্যবহার করে স্থানান্তরযোগ্য নয়। .hg/bookmarks
দূরবর্তী সংগ্রহস্থলে ফাইলটি অনুলিপি করতে আপনি rsync বা scp ব্যবহার করতে পারেন । আপনি hg id -r <bookmark> <url>
বুকমার্কের বর্তমান টিপটির সংশোধন আইডিটি পেতে ব্যবহার করতে পারেন।
যেহেতু 1.6 বুকমার্কগুলি ধাক্কা / টানানো যায়। BookmarksExtension পৃষ্ঠায় একটি অধ্যায় আছে রিমোট সংগ্রহস্থলগুলির সাথে ওয়ার্কিং । পার্থক্য রয়েছে যে মার্চুরিয়াল বুকমার্কের নামগুলি বিশ্বব্যাপী , তবে গিটে 'রিমোট' সংজ্ঞাটিও দূরবর্তী সংগ্রহস্থলের নাম থেকে স্থানীয় দূরবর্তী ট্র্যাকিং শাখার নামগুলির সাথে শাখার নামগুলি ম্যাপিংয়ের বর্ণনা দেয় ; উদাহরণস্বরূপ refs/heads/*:refs/remotes/origin/*
ম্যাপিংয়ের অর্থ হল যে কেউ 'আদি / মাস্টার' রিমোট-ট্র্যাকিং শাখায় ('রিফ / রিমোটস / উত্স / মাস্টার') রিমোট রিপোজিটরিতে 'মাস্টার' শাখা ('রেফ / মাথা / মাস্টার') এর স্থিতি খুঁজে পাবে।
তত্পর তাই ডেকেছেন নামে শাখা , যেখানে শাখা নাম এমবেডেড একটি কমিট (ক changeset মধ্যে) হবে। এ জাতীয় নাম বিশ্বব্যাপী (আনতে স্থানান্তরিত)। পরিবর্তনগুলির names u2019 এর মেটাডেটার অংশ হিসাবে সেই শাখার নাম স্থায়ীভাবে রেকর্ড করা আছে। আধুনিক মার্চুরিয়াল দিয়ে আপনি "নামযুক্ত শাখা" বন্ধ করতে পারেন এবং শাখার নাম রেকর্ডিং বন্ধ করতে পারেন। এই ব্যবস্থায় শাখাগুলির টিপসগুলি উড়তে গণনা করা হয়।
মার্কুরিয়ালের "নামযুক্ত শাখাগুলি" আমার মতে পরিবর্তে কমিট লেবেল বলা উচিত , কারণ এটি সেগুলি। এমন কিছু পরিস্থিতি রয়েছে যেখানে "নামী শাখা" একাধিক টিপস থাকতে পারে (একাধিক নিঃসন্তান প্রতিশ্রুতি), এবং সংশোধনের গ্রাফের কয়েকটি বিচ্ছিন্ন অংশও থাকতে পারে।
গিটে সেই মার্চুয়াল "এম্বেডেড শাখা "গুলির সমতুল্য নেই; তদুপরি গিতের দর্শনটি হ'ল যখন কেউ বলতে পারেন যে শাখায় কিছু কমিট রয়েছে তবে এর অর্থ এই নয় যে কোনও কমিট কোনও শাখার অন্তর্ভুক্ত।
নোট করুন যে মার্কুরিয়াল ডকুমেন্টেশনে এখনও কমপক্ষে দীর্ঘকালীন শাখাগুলির জন্য (পৃথক ভাণ্ডার প্রতি একক শাখা) পৃথক ক্লোন (পৃথক ভাণ্ডার) ব্যবহার করার প্রস্তাব দেওয়া হয়েছে, ক্লোনিংয়ের মাধ্যমে ওরফে ব্রাঞ্চিং ।
ঠেলাঠেলি করে শাখা
ডিফল্টরূপে মার্চুরিয়াল সমস্ত মাথা ঠেলে দেয় । আপনি যদি একটি একক শাখা ( একক মাথা ) ধাক্কা দিতে চান তবে আপনাকে যে শাখায় চাপ দিতে চান তার টিপ রিভিশনটি নির্দিষ্ট করতে হবে। আপনি শাখা টিপটি তার সংশোধন নম্বর (স্থানীয় থেকে সংগ্রহস্থল) দ্বারা, পুনর্বিবেচনা শনাক্তকারী দ্বারা, বুকমার্ক নাম (স্থানীয় থেকে সংগ্রহস্থল স্থানান্তরিত করতে পারবেন না) দ্বারা বা এম্বেড করা শাখার নাম (নামযুক্ত শাখা) দ্বারা নির্দিষ্ট করতে পারবেন can
যতদূর আমি এটি বুঝতে পেরেছি, আপনি যদি মার্চারিয়াল পার্লেন্সের কিছু "নামযুক্ত শাখা" হিসাবে চিহ্নিত কমিটস সমন্বিত সংশোধনীগুলির একটি পরিসীমা ধাক্কা দেন, আপনার কাছে যে ধরণের ধাক্কা আছে সেগুলিতে আপনার এই "নামযুক্ত শাখা" থাকবে। এর অর্থ এই যে এমবেড থাকা শাখাগুলির নাম ("নামযুক্ত শাখা") বিশ্বব্যাপী (প্রদত্ত সংগ্রহস্থল / প্রকল্পের ক্লোনগুলির সাথে সম্মত)।
ডিফল্টরূপে ( push.default
কনফিগারেশন ভেরিয়েবলের সাপেক্ষে ) "গিট পুশ" বা "গিট পুশ < রিমোট >" গিট মেলানো শাখাগুলি ধাক্কা দেবে , অর্থাত্ কেবল সেই স্থানীয় শাখাগুলির সমতুল্য রয়েছে যেগুলি ইতিমধ্যে আপনি রিমোট রিপোজিটরিতে উপস্থিত করেন যার মধ্যে আপনি ধাক্কা দেন। সমস্ত শাখাগুলি--all
ধাক্কা দেওয়ার জন্য আপনি গিট-পুশ ("গিট পুশ - সমস্ত ") বিকল্প ব্যবহার করতে পারেন , প্রদত্ত একক শাখাকে ধাক্কা দিতে আপনি "গিট পুশ < রিমোট > < শাখা >" ব্যবহার করতে পারেন এবং আপনি "গিট পুশ <ব্যবহার করতে পারেন রিমোট > হেড " বর্তমান শাখাকে ধাক্কা দিতে ।
উপরের সমস্ত অনুমান করে যে গিট কনফিগার করা হয়নি যা কোন শাখাটি remote.<remotename>.push
কনফিগারেশন ভেরিয়েবলের মাধ্যমে চাপতে হবে।
আনতে শাখা
নোট: এখানে আমি গীত পরিভাষা যেখানে "আনা" অর্থ দূরবর্তী সংগ্রহস্থল থেকে পরিবর্তন ডাউনলোড করার ব্যবহার ছাড়া স্থানীয় কাজের সঙ্গে যারা পরিবর্তন একীভূত। এটি " git fetch
" এবং " hg pull
" যা করে।
যদি আমি এটি সঠিকভাবে বুঝতে পারি তবে ডিফল্টরূপে মার্কুরিয়াল দূরবর্তী সংগ্রহস্থল থেকে সমস্ত মাথা নিয়ে আসে তবে আপনি " hg pull --rev <rev> <url>
" বা " hg pull <url>#<rev>
" মাধ্যমে একটি শাখা পেতে শাখাটি নির্দিষ্ট করতে পারেন । আপনি <পুনরায়> পুনর্বিবেচনা শনাক্তকারী, "নামযুক্ত শাখা" নাম (চ্যানেলজ এমবেড করা শাখা) বা বুকমার্কের নাম ব্যবহার করে নির্দিষ্ট করতে পারেন। বুকমার্ক নাম তবে (অন্তত বর্তমানে) স্থানান্তরিত হয় না। আপনার প্রাপ্ত সমস্ত "নামযুক্ত শাখা" সংশোধনগুলি স্থানান্তরিত হওয়ার অন্তর্ভুক্ত। "এইচজি পুল" শাখার টিপস সংরক্ষণ করে যা এটি বেনামে, নামবিহীন প্রধান হিসাবে নিয়ে আসে।
গিটে ডিফল্টরূপে ("গিট ক্লোন" দ্বারা নির্মিত 'উত্সের' জন্য রিমোট এবং "গিট রিমোট অ্যাড" ব্যবহার করে তৈরি করা রিমোটগুলির জন্য) " git fetch
" (বা " git fetch <remote>
") রিমোট রিপোজিটরি ( নামস্থান থেকে ) থেকে সমস্ত শাখা পেয়ে থাকে refs/heads/
এবং এগুলিতে সংরক্ষণ করে refs/remotes/
নামস্থান। এর অর্থ উদাহরণস্বরূপ যে রিমোট 'উত্স'-এ' মাস্টার '(পুরো নাম:' রেফ / মাথা / মাস্টার ') নামক শাখাটি' উত্স / মাস্টার ' রিমোট-ট্র্যাকিং শাখা (পুরো নাম:' রেফ / রিমোটের / উৎপত্তি / মাস্টার ')।
আপনি গিটের মাধ্যমে একক শাখা আনতে পারেন git fetch <remote> <branch>
- গিট FETCH_HEAD এ অনুরোধ করা শাখা (এস) সংরক্ষণ করবে যা মার্চুরিয়াল নামবিহীন শিরোনামগুলির অনুরূপ।
এগুলি শক্তিশালী রেফস্পেক গিট সিনট্যাক্সের ডিফল্ট ক্ষেত্রেগুলির উদাহরণগুলি : রেফস্পেকগুলির সাহায্যে আপনি কোন শাখাটি আনতে চান এবং কোনটি সংরক্ষণ করতে হবে তা কনফিগার করতে পারেন এবং / অথবা কনফিগার করতে পারেন। উদাহরণস্বরূপ ডিফল্ট "সমস্ত শাখাগুলি আনুন" কেসটি '+ রেফ / হেড / *: রেফস / রিমোটস / অরিজিন / *' ওয়াইল্ডকার্ড রেফস্পেক দ্বারা প্রতিনিধিত্ব করা হয় এবং 'রেফ / হেড / <ব্র্যাঞ্চ>:' এর জন্য "একক শাখা আনুন" । রেফস্পেকগুলি স্থানীয় রেফসির নামগুলিতে রিমোট রিপোজিটরিতে শাখার নামগুলি (রেফ) ব্যবহার করতে ব্যবহৃত হয়। তবে গিটের সাথে কার্যকরভাবে কাজ করতে সক্ষম হওয়ার জন্য আপনার রেফস্পেকগুলি সম্পর্কে (অনেক বেশি) জেনে রাখা দরকার না (মূলত "গিট রিমোট" কমান্ডকে ধন্যবাদ)।
ব্যক্তিগত মতামত: আমি ব্যক্তিগতভাবে মনে করি যে "নামে শাখা" Mercurial মধ্যে (changeset মেটাডেটা এমবেড শাখা নামের সাথে) বিশেষ করে একটি জন্য তার বিশ্বব্যাপী নামস্থান সঙ্গে বিপথে চালিত নকশা বিতরণ সংস্করণ নিয়ন্ত্রণ ব্যবস্থা। উদাহরণস্বরূপ আসুন মামলাটি নেওয়া যাক যেখানে অ্যালিস এবং বব উভয়ই তাদের ভাণ্ডারগুলিতে 'for-jo' নামক ব্রাঞ্চ রেখেছিলেন, যে শাখাগুলির কোনও মিল নেই। জোয়ের সংগ্রহস্থলগুলিতে তবে এই দুটি শাখা একটি একক শাখা হিসাবে আচরণ করা হবে। সুতরাং আপনি কোনওভাবে শাখার নাম সংঘর্ষের হাত থেকে রক্ষা করার জন্য সম্মেলনে এসেছেন। গিটের ক্ষেত্রে এটি সমস্যা নয়, যেখানে জোয়ের সংগ্রহস্থলে এলিসের 'ফর-জো' শাখাটি 'অ্যালিস / ফর-জো' হবে, এবং বব থেকে এটি 'বব / ফর জো' হবে।
মার্কুরিয়াল এর "বুকমার্ক শাখা" বর্তমানে মূল বিতরণ ব্যবস্থার অভাব রয়েছে।
পার্থক্য:
এই অঞ্চলটি মার্চুরিয়াল এবং গিটের মধ্যে অন্যতম প্রধান পার্থক্য, যেমন জেমস উডিয়্যাট এবং স্টিভ লশ তাদের উত্তরে বলেছিলেন। মুরচুরিয়াল, ডিফল্টরূপে, বেনামে হালকা ওজনের কোডডলাইন ব্যবহার করে, যার পরিভাষায় "হেড" বলা হয় are গিটটি লাইটওয়েট নামের শাখাগুলি ব্যবহার করে, রিমোট রিপোজিটরিতে শাখাগুলির নাম ম্যাপ করতে ইনজেক্টটিভ ম্যাপিং সহ রিমোট ট্র্যাকিং শাখার নাম names গিট আপনাকে শাখাগুলির নাম রাখতে "বাধ্য করে" (ভাল, একক নামহীন শাখা বাদে, পরিস্থিতি পৃথক হেড নামে পরিচিত) তবে আমি মনে করি এটি শাখা-ভারী ওয়ার্কফ্লো যেমন টপিক ব্রাঞ্চ ওয়ার্কফ্লো যেমন একক ভাণ্ডারের দৃষ্টান্তে একাধিক শাখার সাথে আরও ভাল কাজ করে।
নামকরণ সংশোধন
গিটে নামকরণের বিভিন্ন উপায় রয়েছে (যেমন গিট রেভ-পার্স ম্যানপেজে বর্ণিত ):
- সম্পূর্ণ SHA1 অবজেক্টের নাম (40-বাইট হেক্সাডেসিমেল স্ট্রিং), বা স্টোরের মধ্যে স্টোর
- একটি প্রতীকী রেফ নাম, যেমন 'মাস্টার' ('মাস্টার' শাখার উল্লেখ করে), বা 'ভি 1.5.0' (ট্যাগকে উল্লেখ করে), বা 'উত্স / পরবর্তী' (রিমোট ট্র্যাকিং শাখার উল্লেখ)
^
পুনর্বিবেচনা প্যারামিটারের প্রত্যয় অর্থ কমিট অবজেক্টের প্রথম পিতা বা মাতা, ^n
মানে মার্জ কমিটের পিতামাতা। ~n
পুনর্বিবেচনা প্যারামিটারের প্রত্যয়টির অর্থ সরাসরি প্রথম-পিতামাতার লাইনে একটি কমিটের পূর্বসূরি- প্রতীকী রেফারেন্স থেকে অনুসরণ করে সংশোধন স্পেসিফায়ার গঠনের জন্য এই প্রত্যয়গুলি একত্রিত করা যেতে পারে, যেমন 'পু ~ 3 ^ 2 ~ 3'
- "গিট বর্ণনা" এর আউটপুট, অর্থাত্ নিকটতম ট্যাগ, ড্যাশ এবং একটি সংখ্যক কমিটের পরে বিকল্প, তারপরে একটি ড্যাশ, একটি 'জি', এবং একটি সংক্ষিপ্ত বস্তুর নাম, উদাহরণস্বরূপ 'v1.6.5.1-75- g5bf8097 '।
এখানে রিফ্লোগ জড়িত সংশোধন স্পেসিফায়ারও রয়েছে, এখানে উল্লেখ করা হয়নি। প্রতিটি বস্তুকে গিতে, এটি কমিট, ট্যাগ, ট্রি বা ব্লব এর SHA-1 সনাক্তকারী থাকে; বিশেষ সংশ্লেষ যেমন যেমন 'পরবর্তী: ডকুমেন্টেশন' বা 'পরবর্তী: পুনর্নির্মাণ' নির্দিষ্ট সংশোধনীতে গাছ (ডিরেক্টরি) বা ব্লব (ফাইলের বিষয়বস্তু) উল্লেখ করতে।
মার্চুরিয়ালের বিভিন্ন নামকরণের বিভিন্ন উপায় রয়েছে (উদাহরণস্বরূপ, এইচজি ম্যানপেজে বর্ণিত ):
- একটি সরল পূর্ণসংখ্যাকে একটি সংশোধন নম্বর হিসাবে গণ্য করা হয়। একটি মনে রাখতে হবে যে সংশোধন নম্বরগুলি প্রদত্ত ভান্ডারগুলিতে স্থানীয় ; অন্যান্য সংগ্রহস্থলে এগুলি আলাদা হতে পারে।
- Gণাত্মক পূর্ণসংখ্যার টিপটি ক্রমানুসারে অফসেট হিসাবে গণ্য করা হয়, -1 টিপটিকে চিহ্নিত করা, -2 টিপটির পূর্বে সংশোধনকে চিহ্নিত করা এবং এর আগেও। তারা সংগ্রহস্থল স্থানীয় ।
- একটি অনন্য রিভিশন সনাক্তকারী (40-অঙ্কের হেক্সাডেসিমাল স্ট্রিং) বা এর অনন্য উপসর্গ।
- একটি ট্যাগের নাম (প্রদত্ত সংশোধনের সাথে সম্পর্কিত প্রতীকী নাম), বা একটি বুকমার্কের নাম (এক্সটেনশন সহ: প্রদত্ত মাথার সাথে প্রতীকী নাম, ভাণ্ডার থেকে স্থানীয়), বা একটি "নামযুক্ত শাখা" (কমিট লেবেল; "নামকরণ করা শাখা" দ্বারা প্রদত্ত সংশোধন) প্রদত্ত প্রতিশ্রুতিবদ্ধ লেবেলযুক্ত সমস্ত কমিটের টিপ (নিঃসন্তান প্রতিশ্রুতি), এর মধ্যে একাধিক টিপ থাকলে সবচেয়ে বড় সংশোধন নম্বর সহ)
- সংরক্ষিত নাম "টিপ" একটি বিশেষ ট্যাগ যা সর্বদা সাম্প্রতিক সংস্করণটি সনাক্ত করে।
- সংরক্ষিত নাম "নাল" নাল সংশোধন নির্দেশ করে।
- সংরক্ষিত নাম "।" কাজের ডিরেক্টরি পিতামাতাকে নির্দেশ করে।
পার্থক্য
যেমন আপনি উপরের তালিকার তুলনা দেখতে পাচ্ছেন মার্চেরিয়াল সংশোধন সংখ্যাগুলি সরবরাহ করে, স্থানীয় থেকে সংগ্রহস্থল, যখন গিট দেয় না। অন্যদিকে মার্চুরিয়াল কেবলমাত্র 'টিপ' (বর্তমান শাখা) থেকে আপেক্ষিক অফসেটগুলি সরবরাহ করে, যা স্থানীয় সংগ্রহস্থলের (কমপক্ষে প্যারেন্টিভস্পেক এক্সটেনশন ছাড়াই ) স্থানীয় , অন্যদিকে গিট কোনও টিপ থেকে নিম্নলিখিত কোনও কমিট নির্দিষ্ট করার অনুমতি দেয়।
সাম্প্রতিকতম সংশোধনটির নাম দেওয়া হয়েছে গিডে হেড, এবং মার্কুরিয়ালে "টিপ"; গীতে কোনও নাল সংশোধন নেই। মার্চুরিয়াল এবং গিট উভয়েরই অনেকগুলি মূল থাকতে পারে (একাধিক পিতামহীন কমিট থাকতে পারে; এটি সাধারণত পূর্বে পৃথক প্রকল্পে যোগদানের ফলস্বরূপ)।
আরও দেখুন: এলিয়াদের ব্লগে (নতুনদের) বিভিন্ন ধরণের পুনর্বিবেচনার স্পেসিফায়ার নিবন্ধ।
ব্যক্তিগত মতামত: আমি মনে করি যে সংশোধন সংখ্যাগুলি ওভাররেটেড হয়েছে (কমপক্ষে বিতরণকৃত বিকাশ এবং / অথবা ননলাইনার / শাখা ইতিহাসের জন্য)। প্রথমত, বিতরণ করা সংস্করণ নিয়ন্ত্রণ ব্যবস্থার জন্য তাদের হয় স্থানীয়ভাবে সংগ্রহস্থল হতে হবে, বা একটি কেন্দ্রীয় সংস্থানকারী কর্তৃপক্ষ হিসাবে কোনও বিশেষ উপায়ে কিছু সংগ্রহস্থল চিকিত্সার প্রয়োজন। দ্বিতীয়ত, দীর্ঘতর ইতিহাস সহ বৃহত্তর প্রকল্পগুলিতে 5 টি সংখ্যার সংশোধন থাকতে পারে যাতে তারা 6-7 অক্ষর সংশোধন শনাক্তকারীদের সংক্ষিপ্ত করে কেবলমাত্র সামান্য সুবিধা দেয় এবং সংশোধনগুলি কেবলমাত্র আংশিকভাবে অর্ডার করা হয় (তবে আমি এখানে বলতে চাইছি) n এবং n + 1 সংশোধনগুলির পিতা বা মাতা হওয়ার দরকার নেই)।
সংশোধন ব্যাপ্তি
গিট রিভিশন রেঞ্জগুলি টপোলজিক্যাল । সাধারণত দেখা যায় A..B
সিনট্যাক্স, যা রৈখিক ইতিহাসের অর্থ A থেকে শুরু হওয়া সংশোধন পরিসীমা (তবে এটিকে বাদ দিয়ে), এবং বি এ শেষ হওয়া (অর্থাৎ রেঞ্জটি নীচে থেকে উন্মুক্ত ), এর জন্য শর্টহ্যান্ড ("সিনট্যাকটিক চিনি") ^A B
, যা ইতিহাস ট্র্যাভারসিং কমান্ডের অর্থ সমস্ত এ থেকে আগমণযোগ্যকে বাদ দিয়ে বি থেকে পৌঁছনীয় প্রতিশ্রুতিবদ্ধ এর অর্থ এই যে এর পরিধিটির আচরণ A..B
সম্পূর্ণরূপে অনুমানযোগ্য (এবং বেশ দরকারী) এমনকি এ-বি এর পূর্বপুরুষ না হলেও: A..B
এরপরে এ এবং বি এর সাধারণ পূর্বপুরুষের থেকে সংশোধনের পরিসর (একত্রিত বেস) ) সংশোধন বি।
মার্চুরিয়াল রিভিশন রেঞ্জগুলি রিভিশন সংখ্যাগুলির পরিসরের উপর ভিত্তি করে । রেঞ্জটি A:B
সিনট্যাক্স ব্যবহার করে নির্দিষ্ট করা হয় এবং গিট রেঞ্জের বিপরীতে একটি বন্ধ বিরতি হিসাবে কাজ করে । বি রেঞ্জটি বি: এ হ'ল বিস্তৃত এ: বি বিপরীত ক্রমে যা গিটের ক্ষেত্রে নয় (তবে A...B
সিনট্যাক্সের নীচে নোটটি দেখুন )। তবে এ জাতীয় সরলতা দাম সহ আসে: পুনর্বিবেচনা পরিসর A: B কেবল তখনই অর্থবোধ করে যখন A বি এর পূর্বপুরুষ বা তদ্বিপরীত, যেমন লিনিয়ার ইতিহাস সহ; অন্যথায় (আমি অনুমান করি) পরিসীমাটি অনির্দেশ্য এবং ফলাফলটি সংগ্রহস্থলের স্থানীয় (কারণ পুনর্বিবেচনার সংখ্যাগুলি সংগ্রহস্থলের স্থানীয়)।
এটি মার্চুরিয়াল ১.6 দিয়ে স্থির হয়েছে, যার নতুন টপোলজিকাল রিভিশন রেঞ্জ রয়েছে , যেখানে 'এ..বি' (বা 'এ :: বি') এক্স এর বংশধর এবং ওয়াইয়ের পূর্বপুরুষ উভয়ই রূপান্তরগুলির সেট হিসাবে বোঝা যাচ্ছে This , আমার ধারণা, গিটের '--্যানস্ট্রি-পাথ এ..বি' এর সমান।
গীটের A...B
সংশোধনগুলির প্রতিসাম্যগত পার্থক্যের জন্য স্বরলিপিও রয়েছে ; এর অর্থ A B --not $(git merge-base A B)
, যার অর্থ A বা B উভয় থেকেই পৌঁছনীয়, তবে উভয়টিই (সাধারণ পূর্বপুরুষদের কাছ থেকে পৌঁছনীয়) এর থেকে সমস্ত প্রেরণাকে পারা যায় exc
Renames
মার্চুরিয়াল ফাইলের নামগুলি মোকাবেলায় পুনরায় নামকরণ ট্র্যাকিং ব্যবহার করে । এর অর্থ হ'ল কোনও ফাইলের নাম বদলে দেওয়া হয়েছিল এমন তথ্য কমিটের সময় সংরক্ষণ করা হয়; মার্চুরিয়ালে এই তথ্যটি ফাইললগ (ফাইল রেভলগ) মেটাডেটাতে "বর্ধিত ডিফ " আকারে সংরক্ষণ করা হয় । এর পরিণতি হ'ল আপনাকে hg rename
/ hg mv
... ব্যবহার করতে হবে বা hg addremove
অনুরূপতা ভিত্তিক পুনরায় নাম সনাক্তকরণ করতে আপনাকে চালনা করতে হবে।
সংস্করণ নিয়ন্ত্রণ সিস্টেমগুলির মধ্যে গিটটি অনন্য that যা ফাইলের নামগুলির সাথে ডিল করতে পুনরায় নাম সনাক্তকরণ ব্যবহার করে । এর অর্থ এই যে ফাইলটির নাম পরিবর্তন করা হয়েছিল এটি প্রয়োজনীয় সময়ে সনাক্ত করা হয়েছিল: যখন মার্জ করার সময়, বা কোনও ডিফার্ট দেখানোর সময় (যদি অনুরোধ করা / কনফিগার করা থাকে)। এটির সুবিধাটি রয়েছে যে নামকরণ সনাক্তকরণ অ্যালগরিদম উন্নত করা যেতে পারে, এবং প্রতিশ্রুতি দেওয়ার সময় হিমায়িত হয় না।
গিট এবং মার্কিউরিয়াল উভয়েরই --follow
কোনও একক ফাইলের ইতিহাস দেখানোর সময় পুনরায় নামগুলি অনুসরণ করতে বিকল্প ব্যবহার করতে হবে। git blame
/ এ / তে কোনও ফাইলের লাইন-ভিত্তিক ইতিহাস দেখানোর সময় উভয়ই নাম পরিবর্তন করতে পারেন hg annotate
।
গিট-তে git blame
কমান্ড কোড চলন, যা একটি ফাইল থেকে অন্য ফাইলের অন্য কোডের চলন (বা অনুলিপি) অনুসরণ করতে সক্ষম হয়, এমনকি কোড চলাচল স্বাস্থ্যকর ফাইলের নাম পরিবর্তনের অংশ না হলেও। আমি যতদূর জানি এই বৈশিষ্ট্যটি গিতের কাছে অনন্য (লেখার সময়, অক্টোবর ২০০৯)।
নেটওয়ার্ক প্রোটোকল
মার্চুরিয়াল এবং গিট উভয়েরই একই ফাইল সিস্টেমে সংগ্রহস্থলগুলি আনতে এবং ধাক্কা দেওয়ার জন্য সমর্থন রয়েছে, যেখানে সংগ্রহস্থল ইউআরএল কেবলমাত্র সংগ্রহস্থলের ফাইল ফাইল সিস্টেম। উভয়েরই বান্ডিল ফাইলগুলি আনার জন্য সমর্থন রয়েছে ।
ম্যাসুরিয়াল সমর্থন এসএসএইচ এবং এইচটিটিপি প্রোটোকলের মাধ্যমে আনতে এবং ঠেলাঠেলি করে। এসএসএইচের জন্য গন্তব্য মেশিনে একটি অ্যাক্সেসযোগ্য শেল অ্যাকাউন্ট এবং এইচজি ইনস্টল করা / উপলব্ধ একটি অনুলিপি প্রয়োজন। এইচটিটিপি অ্যাক্সেসের জন্য hg-serve
বা মার্চুরিয়াল সিজিআই স্ক্রিপ্ট চলমান প্রয়োজন, এবং মার্চুরিয়াল সার্ভার মেশিনে ইনস্টল করা প্রয়োজন।
গিট দূরবর্তী সংগ্রহস্থল অ্যাক্সেস করতে ব্যবহৃত দুটি ধরণের প্রোটোকল সমর্থন করে:
- "স্মার্ট" প্রোটোকলগুলি , যার মধ্যে এসএসএইচ এবং কাস্টম গিট: // প্রোটোকল (বাই
git-daemon
) এর মাধ্যমে অ্যাক্সেস অন্তর্ভুক্ত রয়েছে, যা সার্ভারে গিট ইনস্টল করা প্রয়োজন। এই প্রোটোকলগুলির মধ্যে এক্সচেঞ্জটি ক্লায়েন্ট এবং সার্ভার নিয়ে থাকে যেগুলি কী কী বস্তুগুলিতে সাধারণ তা নিয়ে আলোচনা করে এবং তারপরে একটি প্যাকফিল উত্পাদন এবং প্রেরণ করে। আধুনিক গিট "স্মার্ট" এইচটিটিপি প্রোটোকলের জন্য সমর্থন অন্তর্ভুক্ত করে।
- "বোবা" প্রোটোকল , যার মধ্যে HTTP এবং FTP (কেবল আনার জন্য) এবং HTTPS (ওয়েবডিএভি দিয়ে চাপ দেওয়ার জন্য) অন্তর্ভুক্ত রয়েছে, সার্ভারে ইনস্টল করা গিটের প্রয়োজন নেই, তবে তাদের প্রয়োজন যে সংগ্রহস্থল দ্বারা উত্পন্ন অতিরিক্ত তথ্য থাকে
git update-server-info
(সাধারণত একটি হুক থেকে চালানো হয়) )। বিনিময়টিতে ক্লায়েন্টকে কমিট চেইন হাঁটা এবং আলগা জিনিসগুলি এবং প্যাকফিলগুলি প্রয়োজনীয় হিসাবে ডাউনলোড করা থাকে। ক্ষতিটি হ'ল এটি কঠোরভাবে প্রয়োজনীয়তার চেয়ে বেশি ডাউনলোড করে (যেমন কোনও একক প্যাকফাইলে যখন কেবল কয়েকটি সংশোধনী আনা হয় তখন এটি সম্পূর্ণ ডাউনলোড হয়ে যায়), এবং এটি শেষ করতে অনেক সংযোগের প্রয়োজন হতে পারে।
প্রসারিত হচ্ছে: স্ক্রিপ্টিবিলিটি বনাম এক্সটেনশন (প্লাগইন)
পারফরম্যান্সের জন্য সিটিতে কিছু কোর কোড লেখা মাইক্রিয়াল পাইথনে প্রয়োগ করা হয় । এটি অতিরিক্ত বৈশিষ্ট্য যুক্ত করার উপায় হিসাবে এক্সটেনশনগুলি (প্লাগইন) লেখার জন্য এপিআই সরবরাহ করে। "বুকমার্ক শাখা" বা পুনর্বিবেচনার স্বাক্ষর করার মতো কিছু কার্যকারিতা মার্চুরিয়ালের সাথে বিতরণকৃত এক্সটেনশনে সরবরাহ করা হয় এবং এটিকে চালু করা প্রয়োজন।
গিট সি , পার্ল এবং শেল স্ক্রিপ্টগুলিতে প্রয়োগ করা হয় । গিট স্ক্রিপ্টগুলিতে ব্যবহারের জন্য উপযুক্ত অনেক নিম্ন স্তরের কমান্ড ( নদীর গভীরতানির্ণয় ) সরবরাহ করে। নতুন বৈশিষ্ট্য প্রবর্তনের স্বাভাবিক উপায় হ'ল পার্ল বা শেল স্ক্রিপ্ট হিসাবে এটি লেখা, এবং যখন ব্যবহারকারী ইন্টারফেসটি কর্মক্ষমতা, বহনযোগ্যতা এবং শেল স্ক্রিপ্টের ক্ষেত্রে কোণার কেসগুলি এড়ানোর ক্ষেত্রে সিটিতে এটি পুনরায় লিখতে থাকে (এই পদ্ধতিটিকে বিল্টিনফিকেশন বলা হয় )।
গিট নির্ভর করে এবং এটি [সংগ্রহস্থল] ফর্ম্যাট এবং [নেটওয়ার্ক] প্রোটোকলের চারপাশে নির্মিত। ভাষার বাইন্ডিংয়ের পরিবর্তে অন্যান্য ভাষায় গিটের (আংশিক বা সম্পূর্ণ) রিম্পিমুলেশনস রয়েছে (তাদের মধ্যে কিছু অংশ আংশিকভাবে পুনরায় প্রয়োগ করা হয়, এবং গিট কমান্ডের আশেপাশে আংশিকভাবে মোড়ক দেওয়া হয়): জেজিট (জাভা, ইজিট দ্বারা ব্যবহৃত, এক্লিপস গিট প্লাগইন), গ্রিট (রুবি) , ডুলউইচ (পাইথন), গিট # (সি #)।
টি এল; ডিআর