একটি গিট কমিট মেসেজের পরিবর্তিত ফাইলটি উল্লেখ করা উচিত?


50

গিট কমিট ম্যাসেজের প্রথম লাইনে আমার সেই ফাইলটি উল্লেখ করার অভ্যাস রয়েছে যা পরিবর্তনটি একাধিক ফাইলকে স্প্যান না করে যদি পরিবর্তিত হয়, উদাহরণস্বরূপ:

Add [somefunc] to [somefile] 

এটি করা ভাল কি এটি অপ্রয়োজনীয়?

উত্তর:


84

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

আপনি somefuncএকটি প্রয়োজনীয়তা পূরণের জন্য পদ্ধতি যুক্ত করেছেন , অর্থাত:

  • একটি বৈশিষ্ট্য যুক্ত করতে,
  • একটি বাগ বা অপসারণ করতে
  • উত্স কোডটি রিফ্যাক্টর করতে।

এর অর্থ হ'ল আপনার লগ বার্তাগুলিতে অবশ্যই বৈশিষ্ট্যগুলি / বাগগুলি প্রভাবিত হয়েছিল বা রিফ্যাক্টরিংয়ের উদ্দেশ্য কী ছিল তা ব্যাখ্যা করতে হবে।


5
কেন এটি সম্পর্কেও কথা বলা উচিত । আপনি অন্য কোন বিকল্পগুলি বিবেচনা করেছেন এবং আপনি কেন এটি বেছে নিয়েছেন?
জে বাজুজি

2
আমি যেমন উচ্চতর স্তরের দৃষ্টিভঙ্গি (যেমন, কম তথ্য, আরও সংক্ষিপ্তকরণ) থেকে কোড মন্তব্য করব ঠিক তেমনভাবে কমিটিকেও মন্তব্য করি। ব্যক্তিগতভাবে, আমি এটিকে ফাইল / মডিউল স্তরে (গিটে) বিভক্ত করি তবে কেবল কমিটগুলি সস্তা আপ-ফ্রন্ট এবং আমি বইয়ের মতো ইতিহাস পড়তে পারা পছন্দ করি। YMMV।
ইভান প্লেস

1
যদি কোনও কারণে সেই ব্যক্তি একবারে একগুচ্ছ ফাইলের সাথে প্রতিশ্রুতি দেয় যা একই বাগের সাথে সম্পর্কিত না হয় আমি তাদের সংক্ষিপ্তসারের আগে ফাইলের নাম এবং বাগ আইডি তালিকাভুক্ত করতে পছন্দ করি। ফাইলকপিপি: গেটমথোড () যোগ করার দরকার নেই, তবে আমি বাগ আইডি # 10 file.cpp: এখানে সম্মানজনক সংক্ষিপ্ত বিবরণ চাই। যদি তারা একাধিক বাগ রিপোর্টে ছড়িয়ে থাকা ফাইলগুলির একটি গুচ্ছ প্রতিশ্রুতিবদ্ধ হয় তবে আমাদের সাথে কথা হবে, কারণ আমি সত্যিই এটি পছন্দ করি না। আমি বরং তারা একাধিক কমিট করতে চাই। প্রতিটি সমস্যার জন্য তারা সমাধান করছে One
উইলিয়াম

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

59

না। কমিটের বিষয়বস্তুগুলি পরীক্ষা করার প্রচুর উপায় রয়েছে । মন্তব্যে কমিটের উদ্দেশ্য বর্ণনা করা উচিত ।


30

টিকিট / ইস্যু সংখ্যা যুক্ত করতে ভুলবেন না ।

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

আমার শেষ প্রজেক্টে, একটি ম্যাক্রো ছিল যা মন্তব্যটির প্রথম 7 টি সংখ্যা পরিষ্কার অনুসন্ধান (আমাদের ইস্যু / বৈশিষ্ট্য ট্র্যাকিং সিস্টেম) থেকে একটি বৈধ ইস্যু নম্বর ছিল তা নিশ্চিত করার জন্য তৈরি করা হয়েছিল।


তাহলে আপনি কীভাবে একটি রিফ্যাক্টরিং পরিবর্তন করবেন?
জুলে

@ জুলস রিফ্যাক্টরিংয়ের একটি টিকিট রয়েছে যা কখনও শেষ হয় না
কালেথ

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

@ স্কটএমসিআইন্টিয়র যদিও এটি সত্য হতে পারে তবে আমি নিশ্চিত নই যে এটি একটি ভাল ধারণা। রিফ্যাক্টরিং প্রায়শই সেরা সুবিধাবাদীভাবে সম্পাদিত হয়, বা কোডটি বিকশিত হওয়ার জন্য কোডের উপর নির্ভর করে এমন কোড বিকাশের প্রক্রিয়ার অংশ হিসাবে। জালিয়া হিসাবে এটা বন্ধ রাখে , "পরিকল্পিত refactoring হয় [...] একটি সাইন দলে যথেষ্ট refactoring অন্যান্য কর্মপ্রবাহ ব্যবহার করছেন না করেছেন"। বা আরও ভোঁতাভাবে রন জেফরিস দ্বারা: রিফ্যাক্টরিং - ব্যাকলগে নেই!
জুলাই

3

আমি প্রতিশ্রুতিবদ্ধ যখন আমি এই ধরনের জিনিস যেমন একাধিক ফাইলের পরিবর্তন প্রয়োজন যে একটি ত্রুটির জন্য ঠিক করা। এটি চেঞ্জসেটে পৃথক ফাইলগুলি না দেখে আসলে কী বদলেছে তা বলা কিছুটা সহজ করে তোলে।

একক ফাইল চেঞ্জসেটের জন্য, এটি অপ্রয়োজনীয়।

প্রথম লাইনটি সর্বদা ত্রুটি বা ব্যবহারকারী গল্পের লিঙ্কের মতো চেঞ্জসেটের একটি উচ্চ-স্তরের বর্ণনা।


3

যদি এটি প্রতিশ্রুতি বার্তার বর্ণনায় প্রাসঙ্গিক তথ্য হয় তবে হ্যাঁ, এটি অন্তর্ভুক্ত করুন। যদি তথ্যটির একমাত্র বিট ফাইলের নাম নিজেই হয়, তবে না।

উদাহরণস্বরূপ এটি বোধগম্য করুন: "বিল্ড_ফু () ফাংশনটি fooutil.c থেকে foobase.c এ সরানো হয়েছে, যেহেতু বিল্ড_ফু () ব্যবহার করতে চান এমন বেশিরভাগ প্রোগ্রাম ইতিমধ্যে foobase.c সহ অন্তর্ভুক্ত রয়েছে"

এটির কোনওটি নয়: "বার পরামিতি নিতে fooutil.c এ বিল্ড_ফু () আপডেট হয়েছে।"


1

আমি এখানে একটি ভিন্ন দৃষ্টিভঙ্গি যুক্ত করতে চাই।

আমার উত্তর হ্যাঁ বা না, তবে সাধারণত আমি হ্যাঁ বলি।

সংস্করণ নিয়ন্ত্রণ প্রকৃতপক্ষে যথেষ্ট পরিমাণে জানার জন্য কোন ফাইলটি আপডেট হচ্ছে। কিন্তু, আমরা যখন করি

$ git log

আমরা কেবল প্রতিশ্রুতি বার্তা দেখতে পাই। বেশিরভাগ মানুষ যা করেন।

লগতে নিজেই তাকিয়ে। এটি এতে অতিরিক্ত প্রসঙ্গ যুক্ত করে। উদাহরণ স্বরূপ:

readme.md: Fix typo detected by language tool

বেশী ভালো

Fix typo detected by language tool

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

API: Fix reset password not sent email to user

এটি পড়ে, আমরা জানি যে ত্রুটিটি সংশোধন করা হচ্ছে এটি API উপাদানটিতে রয়েছে এবং এটি সম্ভবত কোড বেসে API ডিরেক্টরিতে রয়েছে under

আমরা যাইহোক করতে পারে

$ git show COMMIT_ID --name-only 

তবে এটি কেবল ফাইলগুলি পেতে আরও পদক্ষেপ যুক্ত করে।


0

একমাত্র ফাইলের চেকইনের জন্য আমি কেবল এটিই কার্যকর হতে দেখতে পেলাম যদি আপনি ফাইলের মধ্যে অনেক জায়গায় ব্যবহৃত একটি ফাংশনে পরিবর্তন করে থাকেন যে ফলাফলটি বিশৃঙ্খলাবদ্ধ হয়। তারপরেও আমি পরিবর্তন ট্র্যাকারটিকে # এবং পরিবর্তনের প্রথমে একটি স্পষ্ট পাঠ্য বিবরণ রেখেছি।


-1

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

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

আরও কমিট, আরও প্রায়শই। আপনি নিজের বার্তাগুলিতে এত ভার্বোজ হওয়া এড়াতে পারেন।


-2

এটা করা উচিত নয়

আগ্রহী প্রত্যেকেই ইতিহাসের পরিবর্তনগুলি দেখতে পাবে

বৃহত্তর সিস্টেমে এটি সম্ভবও নয় কারণ অনেকগুলি ফাইল স্বয়ংক্রিয়ভাবে উত্পন্ন হতে পারে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.