دو منبع حقیقت که با هم نمی‌خوانند

بورد می‌گوید تسک ۴۴۲ تمام شده. مخزن کد می‌گوید آخرین کامیت مرتبط با آن، سه هفته پیش بوده و درخواست ادغامش هنوز باز است.

کدام درست می‌گوید؟ مخزن کد. همیشه مخزن کد.

دلیلش ساده است: به‌روزرسانی بورد کاری است که آدم‌ها باید یادشان بماند انجام دهند، ولی کامیت زدن بخشی از خود کار است. هر جریان کاری که به حافظه‌ی آدم‌ها تکیه کند، به مرور از واقعیت فاصله می‌گیرد — نه به این دلیل که کسی سهل‌انگار است، بلکه چون کار اضافه همیشه آخرین اولویت است.

راه‌حل این نیست که به تیم یادآوری کنید بورد را به‌روز کند. راه‌حل این است که به‌روزرسانی را از خود کار استخراج کنید.

قرارداد: TASK-<شناسه> در پیام کامیت

کل الگو در یک خط خلاصه می‌شود. شناسه‌ی تسک را در پیام کامیت بنویسید:

TASK-442 رفع نشتی حافظه در تولیدکننده گزارش

وب‌هوک گیت این را می‌بیند و کامیت را به تسک ۴۴۲ می‌چسباند. هیچ کار دستی، هیچ باز کردن مرورگر.

یک کامیت، چند تسک. اگر یک تغییر به چند تسک مربوط است، همه را در همان پیام بنویسید:

TASK-12 TASK-34 رفع باگ مشترک در لایه احراز هویت

نام شاخه به‌عنوان پشتیبان. اگر فراموش کردن پیام کامیت مشکل همیشگی تیم است، قرارداد نام شاخه را اضافه کنید:

task/442-memory-leak-report-generator

این کمک می‌کند چون نام شاخه را یک بار می‌نویسید، ولی پیام کامیت را ده بار.

اگر کامیت از قبل زده شده. لازم نیست تاریخ را بازنویسی کنید — ابزار attach_commit هش کامیت را به یک یا چند تسک می‌چسباند:

«کامیت a3f9c21 را به تسک‌های ۱۲ و ۳۴ وصل کن.»

چه چیزی خودکار می‌شود

وقتی اتصال برقرار شد، چند چیز بدون دخالت شما اتفاق می‌افتد.

تسک تاریخچه‌ی کد پیدا می‌کند. روی صفحه‌ی تسک، کامیت‌ها، شاخه‌ها و درخواست‌های ادغام مرتبط دیده می‌شوند. بازبین لازم نیست بپرسد «کد این کجاست؟»

وضعیت می‌تواند خودکار جلو برود. می‌توانید تنظیم کنید که با اولین کامیت روی یک تسک، وضعیتش از «انجام نشده» به «در حال انجام» برود. این کوچک به نظر می‌رسد ولی همان یک قدمی است که بیشتر از همه فراموش می‌شود.

گزارش تحویل واقعی می‌شود. به‌جای اینکه بپرسید «چقدر پیش رفته‌ایم؟» و جواب حسی بگیرید، می‌بینید کدام تسک‌ها کد دارند، کدام درخواست ادغام باز مانده، و کدام‌ها هفته‌هاست دست نخورده‌اند.

بررسی مدیر ارشد فنی زمینه پیدا می‌کند. وقتی وضعیت پروژه از مخزن کد می‌آید نه از اسلاید، بحث درباره‌ی واقعیت است.

بورد کانبان WKFGo — همان جایی که بعد از اتصال، کامیت‌ها، برنچ‌ها و درخواست‌های ادغامِ لینک‌شده روی کارت تسک نمایش داده می‌شوند

راه‌اندازی

۱. مخزن را وصل کنید. در تنظیمات پروژه بروید به بخش یکپارچه‌سازی گیت و مخزن GitHub یا GitLab را متصل کنید. اگر ادمین سازمان اتصال را به اشتراک گذاشته باشد، فقط مخزن را انتخاب می‌کنید.

۲. وب‌هوک را بررسی کنید. بعد از اتصال، یک کامیت آزمایشی با TASK-<شناسه> بزنید و ببینید روی تسک ظاهر می‌شود. اگر نشد، معمولاً وب‌هوک در تنظیمات مخزن ثبت نشده.

۳. قرارداد را در ویکی بنویسید. یک صفحه‌ی کوتاه: فرمت پیام کامیت، فرمت نام شاخه، و اینکه چه زمانی تسک برای بازبینی فرستاده می‌شود. تازه‌وارد بدون پرسیدن می‌فهمد.

۴. در بازبینی کد نگاهش کنید. برای دو هفته، در بازبینی کد چک کنید که شناسه‌ی تسک در پیام هست. بعد از آن عادت می‌شود.

نکته‌ای درباره‌ی حلقه‌های بی‌پایان

اگر ابزار مدیریت پروژه با هر تغییر تسک به گیت بنویسد و گیت با هر رویداد به تسک بنویسد، یک حلقه‌ی بی‌پایان می‌سازید که خودش را تغذیه می‌کند.

WKFGo رویدادهایی را که خودش تولید کرده علامت می‌زند و آن‌ها را نادیده می‌گیرد. اگر یکپارچه‌سازی سفارشی می‌نویسید، این را در نظر بگیرید — این کلاسیک‌ترین باگ این نوع اتصال است و معمولاً وقتی کشف می‌شود که کسی صد اعلان در ده ثانیه گرفته باشد.

اشتباهات رایج

نوشتن شماره بدون پیشوند. 442: رفع نشتی تشخیص داده نمی‌شود؛ الگو دنبال TASK-442 می‌گردد. یک قرارداد مبهم بدتر از نداشتن قرارداد است.

اتصال بدون قرارداد مکتوب. نصب یکپارچه‌سازی کار سختی نیست؛ کاری که سخت است مکتوب کردن اینکه تیم چطور از آن استفاده کند.

انتظار اینکه اتصال جای بازبینی را بگیرد. کامیت داشتن یعنی کار شروع شده، نه اینکه درست انجام شده.

فراموش کردن شاخه‌های قدیمی. تسک‌هایی که قبل از اتصال تمام شده‌اند کد متصل ندارند. این طبیعی است — از این به بعد را درست کنید، گذشته را بازنویسی نکنید.

سؤالات متداول

اگر تیم شماره‌ی تسک را در پیام ننویسد؟

آن تسک کد متصل نخواهد داشت و در گزارش خالی می‌ماند. قرارداد نام شاخه پشتیبان خوبی است، ولی در نهایت این یک عادت تیمی است نه یک قابلیت فنی.

آیا با مخزن خصوصی کار می‌کند؟

بله. اتصال با توکن دسترسی شماست و همان دسترسی‌هایی را دارد که به آن داده‌اید.

درخواست‌های ادغام چطور؟

اگر شناسه‌ی تسک در عنوان یا توضیح درخواست ادغام باشد، آن هم متصل می‌شود. برای مرور وضعیت بازبینی مفید است.

اگر یک تسک ده کامیت داشته باشد؟

همه‌شان متصل می‌شوند. برای تسک‌های بزرگ این خودش یک سیگنال است: شاید باید کوچک‌ترش می‌کردید.

جمع‌بندی

اتصال گیت به تسک یک قابلیت پیچیده نیست — یک قرارداد یک‌خطی است که به‌روزرسانی وضعیت را از حافظه‌ی آدم‌ها به خود کار منتقل می‌کند.

از یک پروژه شروع کنید، دو هفته در بازبینی کد رعایتش را چک کنید، و بعد گزارش تحویل را نگاه کنید. تفاوت را می‌بینید.