گردش کار گیت یا Git Flow
در این نوشته به لزوم تعریف و رعایت یک گردش کار (workflow) برای انجام وظایف خود میپردازیم و در نهایت یک گردش کار برای انجام وظایف خود با استفاده از ابزار گیت معرفی میکنیم.
چرا از یک گردش کار استفاده کنیم؟
به عنوان یک توسعهدهنده کارهای مختلفی به ما واگذار میشود. اگر بدون استفاده از فرآیند مشخص برای انجام هر کار، مشغول آن شویم و امکان تفکیک کارهای مختلف از یکدیگر را نداشته باشیم به سرعت به شرایط پیچیدهای دچار خواهیم شد که ادامه کار را برای ما سخت خواهد کرد.
داستان ۱: یک کار به شما محول شده است و شما مشغول انجام آن هستید. در همین حال یک کار با اولیت بالاتر به شما واگذار میشود که باید کار فعلی را رها کرده و به کار جدید بپردازید. در این شرایط شما تغییراتی ایجاد کردهاید که باید برای مدتی آنها را کنار بگذارید و به وضعیت قبل از شروع کار خود بازگردید و کار جدید را انجام دهید.
داستان ۲: برای انجام یک قابلیت جدید به سامانه تصمی م گرفتهاید تا در چندین مرحله تغییرات را برای کاربر منتشر کنید. شما تغییرات مرحله اول را انجام دادهاید و منتظر هستید تا همکار شما تغییرات را بازبینی کند تا انتشار آن برای کاربر انجام شود. در این زمان شما میخواهید مشغول انجام دادن مرحله بعدی شوید در حالی که تغییرات قبلی هنوز تایید نشدهاند. همچنین ممکن است طی بازبینی نکاتی مشخص شود و نیاز به انجام تغییرات دیگر برای انتشار مرحله قبلی باشد.
داستان ۳: به منظور انجام آزمون دستی قبل از انتشار تغییرات برای کاربران اصلی، یک نسخه از تغییرات را در محیط آزمایشی منتشر میکنید و پس از تایید، آن تغییرات را برای کاربر منتشر میکنید. در این حین در شرایطی مانند داستان ۱ و داستان ۲ قرار میگیرید. با این تفاوت که به دلیل وجود تنها یک محیط آزمون مجبور هستید تا همه تغییرات را در یک محل قرار دهید. در این شرایط ممکن است برخی از تغییرات موجود در این محل امکان انتشار برای کاربر را نداشته باشند و بخواهید برخی دیگر را منتشر کنید.
داستان ۴: تغییرات جزئی وجود دارند که میخواهید تنها در برخی محیطها لحاظ شوند. برای مثال میخواهید در محیط آزمون بار به جای ارسال رمز یکبار مصرف از طریق پیامک، رمز در پاسخ درخواست برای کاربر ارسال شود. همچنین ممکن است این تفاوتها برای کد منبع نباشند و تنظیمات محیطی سیستم CI/CD که بر اساس هر شاخه تنظیم میشوند نیاز به تنظیم مقادیر متفاوت داشته باشد.
نمونههای دیگری نیز وجود دارد که میتواند شرایط پیچیدهای ایجاد کند و پیشبرد کار را برای شما سخت کند.
این موارد در انجام کارها به صورت تیمی نیز رخ میدهد و تقریبا شرایط مشابهی را ایجاد میکند با این تفاوت که همه تغییرات توسط یک شخص انجام نمیشود. در این حالت ایجاد یک توافق بین افراد تیم برای استفاده از یک گردش کار واحد دارای اهمیت است.
از چه گردش کاری استفاده کنیم؟
گیت یک ابزار منعطف است و فرآیند استانداردی برای استفاده از آن وجود ندارد. با این حال برای ایجاد یک مسیر توسعه هموار و جلوگیری از بروز شرایط پیچیده راهکارهای مختلفی توسط افراد و سازمانهای مختلف ارائه شده است. از جمله این راهکارها میتوان به موارد زیر اشاره کرد: