গিটে ক্রিপ্টোগ্রাফিকভাবে কমিট এবং ট্যাগ সাইন করার সুবিধা এবং অসুবিধাগুলি কী?


109

সুতরাং কোনও সমবয়সী আমার কাজ পর্যালোচনা করেছেন এবং তিনি আমাকে বলেছিলেন যে আমার ক্রিয়াকলোগতভাবে সর্বদা আমার কমিট এবং ট্যাগগুলিতে স্বাক্ষর করা উচিত। কেন জিজ্ঞাসা করা হল, তিনি আমাকে এটি ব্যাখ্যা করতে জানেন না, এবং বলেছিলেন "এটি করা ভাল কাজ"।

একটি স্পষ্ট শিম্পাঞ্জি দৃশ্য এড়ানোর চেষ্টা করছি , কেন আমি সত্যই করব? সত্যিই কি অনেকগুলি পৃথক সুবিধা এবং কোনও অসুবিধা নেই?

কী কারণে ব্যবহারিক কারণগুলি আমাকে প্রতিটা প্রতিশ্রুতি এবং ট্যাগটিতে স্বাক্ষর করতে চাইবে?


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

@ জেমস: এটি সংস্থার কাজ নয়, তবে আমি কিছু উন্মুক্ত এবং বদ্ধ উত্স প্রকল্পে অংশ নিই।
মাদারা উচিহা

@ জেমস: "বৃহত্তর সুরক্ষা সমস্যা" --- কিসের মতো? সাইন ইন তাদের সমাধান করার প্রযুক্তিগত উপায় তাই না?
zerkms

8
mikegerwitz.com / পেপারস / git-horror-story.html স্বাক্ষরিত কমিট এবং ট্যাগগুলির ব্যবহারের ক্ষেত্রে একটি সূচনা পয়েন্ট।

1
@ জেমস আপনি যখন আপনার এসভিএন অ্যাকাউন্ট ব্যবহার করে প্রতিশ্রুতিবদ্ধ হন, আপনি আপনার প্রতিশ্রুতিতে স্বাক্ষর করেন। আপনি যখন আপনার গিট গ্লোবাল কনফিগারেশনের সাথে প্রতিশ্রুতিবদ্ধ হন, আপনি একমাত্র কর্তৃত্ব হলেন যে আপনি লেখক confir
ফ্লোরিয়ান মার্জাইন

উত্তর:


102

(এটি মূলত এ গিট হরর স্টোরি অবলম্বন করা হয়েছে: স্বাক্ষরিত কমিটস সহ রিপোজিটরি ইন্টিগ্রিটি - খুব ভাল পঠিত, এবং আমি উত্তর দিতে পারি না তার চেয়ে আরও বেশি তথ্য))

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

যেমন একটি উদাহরণ:

$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com

আমি, আমি গিটারের কনফিগারেশনটি পরিবর্তন করে দিয়েছি যে আমি আপনি। এবং এখন আমি প্রতিশ্রুতিবদ্ধ করতে পারি এবং সেই প্রতিশ্রুতিগুলি কোনওরকমে উত্পাদন বুননে প্রবেশ করতে পারি এবং দেখে মনে হচ্ছে আপনি এটি করেছেন।

কমিট (এবং ট্যাগগুলি) সাইন ইন করার মাধ্যমে, কেউ প্রমাণ করতে পারে যে কিছু নির্দিষ্ট কমিট এবং ট্যাগগুলি আপনার কাছ থেকে এসেছিল (এবং যে জিনিসগুলিতে স্বাক্ষর করা হয়নি তা এটি নির্মাণের ক্ষেত্রে তৈরি করা উচিত নয়)। এটি আসলেই এর মূল চাবিকাঠি comm কমিট করে স্বাক্ষর করে আপনি বলেছেন যে এটি আপনার কাজ।

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

প্রতিটি কমিটিতে স্বাক্ষর করা উচিত কিনা তা নিয়ে কিছুটা বিতর্ক রয়েছে। জিপিজি থেকে গিট কমিটের জন্য সই করছেন? (ফিরে '09), লিনাস লিখেছিলেন:

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

গিটে সাইন ইন করার বিষয়ে চিন্তাভাবনা সম্পর্কে আরও অনেক কিছু সেখানে পড়তে পারে।

এটি বলেছিল, এটি যাইহোক গিট মধ্যে প্রবেশ করেছে।

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

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


5
এটি পর্যাপ্ত হতে পারে (কেবলমাত্র শেষটিকে ট্যাগ করতে), তবে আপনি কেবল প্রতিটি প্রতিশ্রুতি কেন ট্যাগ করবেন না ?
হাইড

3
ট্যাগ ব্যবহার না করে এমন অলস জারজাদার হিসাবে আমি আগের মন্তব্যটি আপডেট করছি। আমার ওয়ার্কস্টেশনে গিট কনফিগারেশনে আমার রয়েছে commit.gpgsign = trueএবং আমি কোনও অসুবিধাগুলি সনাক্ত করতে পারি। যদিও এটি নির্বোধ হতে পারে তবে এটি খুব ব্যয়বহুল বলে মনে হয় না।
pnovotnak

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

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

1
@JosiahYoder। না, গিথুব কোনও ধাক্কা অস্বীকার করবে না কারণ ইমেল তাদের পরিষেবাতে নেই। ধরা যাক আপনি অন্য কোডটিতে আপনার কোডটি হোস্ট করছেন (যেমন: বিটবকেট) এবং আপনি আপনার সংগ্রহশালা অন্য সরবরাহকারীর কাছে সরিয়ে নিতে চেয়েছিলেন। এটি ব্যবহারকারীদের একটি সংগ্রহস্থল স্থানান্তর (একাধিক ব্যবহারকারী দ্বারা একাধিক কমিট) বা আয়না তৈরি করা থেকে বিরত করবে এটি ডিভিসিএসের বৈশিষ্ট্য।
রিকি নোটারো-গার্সিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.