مقدمه
در درسهای گذشته دیدیم که چگونه Issues و Pull Requests ستونهای اصلی همکاری و
مدیریت پروژه در گیتهاب هستند. اما ویژگیای که این دو را به هم پیوند میدهد و یک جریان کاری
یکپارچه و قابل ردیابی ایجاد میکند، قابلیت اتصال مستقیم کد (کامیتها و PRها) به وظایف
(Issueها) است.
این قابلیت به شما کمک میکند تا به سادگی به سوال «این خط کد برای حل کدام مشکل نوشته شده؟» پاسخ
دهید. در این درس، به صورت دقیق یاد میگیریم که چگونه این ارتباط را برقرار کرده و از مزایای آن
بهرهمند شویم.
چرا باید کامیتها را به Issueها متصل کنیم؟
-
قابلیت ردیابی (Traceability): مهمترین مزیت، ایجاد یک ردپای شفاف است. با نگاه به یک
Issue بسته شده، میتوانید فوراً ببینید کدام Pull Request و کدام کامیتها باعث
حل آن شدهاند. برعکس، با نگاه به یک کامیت در تاریخچه، میتوانید با یک کلیک به Issue
مربوطه رفته و دلیل و زمینه آن تغییر را درک کنید.
-
اتوماسیون (Automation): این اتصال، امکان اتوماسیون فرآیندها را فراهم میکند. همانطور
که دیدیم، میتوان کاری کرد که با ادغام یک Pull Request، ایشوی مربوط به آن به صورت
خودکار بسته شود. این کار بار کاری دستی را از روی دوش نگهدارندگان پروژه برمیدارد.
-
ارتباط متمرکز: تمام زمینه و تاریخچه یک تغییر، از گزارش اولیه مشکل تا بحثهای فنی و
راهحل نهایی، در یک مکان جمع میشود و به عنوان یک مستند ارزشمند برای آینده عمل میکند.
نحوه ارجاع دادن به یک Issue
برقراری ارتباط بین کد و یک Issue بسیار ساده است. کافی است در هر قسمت از گیتهاب که امکان
نوشتن متن وجود دارد (پیام کامیت، توضیحات Pull Request، یا حتی کامنتها)، از علامت شارپ
(#) و به دنبال آن شماره Issue استفاده کنید.
برای مثال، اگر بخواهید در یک پیام کامیت به Issue شماره ۴۲ ارجاع دهید، به این صورت عمل
میکنید:
git commit -m "Add caching layer to user service (ref #42)"
گیتهاب به صورت خودکار #42 را تشخیص داده و آن را به یک لینک قابل کلیک به صفحه
Issue شماره ۴۲ تبدیل میکند. همچنین، در صفحه Issue نیز یک رویداد جدید ثبت میشود
که نشان میدهد این کامیت به آن ارجاع داده است. این کار یک ارتباط دوطرفه ایجاد میکند.
بستن خودکار Issueها با کلمات کلیدی
قدرت واقعی این اتصال زمانی آشکار میشود که از کلمات کلیدی خاصی برای بستن خودکار Issueها
استفاده کنید. اگر قبل از ارجاع به شماره Issue، یکی از کلمات کلیدی زیر را بیاورید، گیتهاب
کار بیشتری برای شما انجام خواهد داد.
کلمات کلیدی اصلی عبارتند از:
- close, closes, closed
- fix, fixes, fixed
- resolve, resolves, resolved
بهترین مکان برای استفاده از این کلمات، در توضیحات یک Pull Request است. فرض کنید
یک PR برای حل باگ گزارششده در Issue شماره ۱۰۱ باز میکنید. در بخش توضیحات
PR خود مینویسید:
این Pull Request با افزودن اعتبارسنجی ورودی، مشکل گزارششده را حل میکند.
Fixes #101
حالا، به محض اینکه این Pull Request توسط یکی از مدیران پروژه در برنچ اصلی
Merge شود، گیتهاب به طور خودکار Issue شماره ۱۰۱ را نیز خواهد بست و
پیامی مبنی بر اینکه این Issue توسط کدام PR حل شده، در آن ثبت میکند. این فرآیند،
چرخه کامل یک وظیفه را به صورت خودکار و مستند به پایان میرساند.