به دنبال سلسله آموزشهای مطرحشده در آریانت، حالا نوبت به بکارگیری سیستم Version control برای حفاظت از دادهها و مدیریت بروزرسانی کدهاست. در انتهای این مطلب شما قادر خواهید بود که از روشهای مختلف Version control استفاده کنید و ابزارهایی را که سازمانهای بزرگ در این زمینه به کار میبرند، بشناسید.
شروع به کار با سیستم Version control
یک سیستم Version control یک اپلیکیشن ویژه برای ذخیره و مدیریت هر گونه بازنگری در فایلها و کدهایتان است. بسیاری از توسعهدهندگان و سازمانها از ابزار Version control برای هماهنگسازی در سورسکد، مدیریت نسخهها و برگشت به نسخههای قبلی در هنگام کشف نقاط ضعف استفاده میکنند.
تنظیمات یک سیستم Version control بهراحتی انجام میشوند. سختترین بخش کار شاید یاد گرفتن نحوه استفاده از آن و سپس وارد کردن آن به روند کار روزمره باشد. در این بخش، ابزار Version control را به شما معرفی میکنیم و توضیح میدهیم که چگونه باید از آن در پروژههایتان استفاده کنید. در تمام مراحل با شما همراه خواهیم بود؛ از بررسی سیستمهای مختلف Version control گرفته تا ساخت و ایجاد منابع.
چرا از Version control استفاده میکنیم؟
اگر میزبانی یک وبسایت یا یک اپلیکیشن تحتوب را در سرور برعهده دارید، کاربران شما حتماً به در دسترس بودن محتوای شما تکیه خواهند داشت. همچنین شما باید محتوایتان را بروزرسانی و پویا نگه دارید. با این وجود، تغییر در محتوا ممکن است منجر به برخی مشکلات شود که از دید شما پنهان میمانند. این مشکلات در نهایت، حتی میتوانند وبسایت شما را از کار بیندازند. بنابراین شما به روشی برای محافظت از کدها و فایلها در طول انجام تغییرات دارید. همچنین باید بتوانید آپدیتها را قبل از ارائه عمومی، آزمایش کنید و در صورت بروز اشکال، سریعاً به نسخه پایدار قبلی برگردید.
سیستم Version control که از آن با عنوان Revision control یا Source control نیز یاد میشود، یک سیستم ذخیره فایل است که هر گونه تغییرات در فایلها را رهگیری میکند. این ابزار به شما اجازه میدهد که در طول این تغییرات به عقب برگردید و بازیابی را انجام دهید. به عنوان مثال، اگر یک فایل را در کامپیوتر شخصی خود ویرایش کرده باشید و قصد حذف بخشی از کد را داشته باشید، با استفاده از سیستم Version control میتوانید در آینده، هفتهها و یا ماهها بعد، این قسمت از کد را بازیابی کنید.
Version control برای افرادی که میخواهند به صورت همزمان بر روی یک پروژه کار کنند، ابزاری فوقالعاده خواهد بود. آنها به وسیله این ابزار میتوانند منابع را بررسی کرده و پس از اتمام کار، تغییرات را ذخیره کنند. اگر دو نفر یک فایل را اصلاح کرده باشند، سیستم Version control میتواند تغییرات را تجمیع کند؛ مگر اینکه این تغییرات با هم تداخل داشته باشند. در این حالت، کاربر میبایست به صورت دسترسی آنها را ترکیب کند و یا یکی از آنها را انتخاب نماید.
سیستم Version control همچنین باعث سهولت ردگیری تغییرات میشود. شما با کمک این سیستم میتوانید ببینید که چه کسی و به چه دلیل کدها را دستکاری کرده است. همچنین اگر شما شروع به کار بر روی نسخه جدیدی از وبسایت یا اپلیکیشن خود کنید، میتوانید یک شاخه از کد در یک ناحیه جدید ایجاد نمایید. به طور خلاصه باید گفت که ابزار Version control یک بیمه ارزانقیمت در برابر خطاهای انسانی و بحرانهای غیرقابلپیشبینی است. این همان ابزاری است که باید از آن استفاده کنید.
ارزیابی سیستمهای Version control
انواع مختلفی از سیستمهای متنباز Version control در دسترس قرار دارند. هر کدام از این سیستمها مزایا و معایب خاص خود را دارند. بنابراین قبل از انتخاب گزینه نهایی، باید تحقیقات خود را انجام دهید. در اینجا به ۳ نمونه از پرطرفدارترین آنها اشاره میکنیم.
Git
این ابزار که توسط تیم «لینوس توروالدز» طراحی و توسعه پیدا کرده، یک پشتیبان قوی برای توسعههای گسترده و غیرخطی محسوب میشود. ابزار Git احتمالاً محبوبترین گزینه در میان سیستمهای Version control و مدیریت سورسکد است. برای اطلاعات بیشتر در مورد این ابزار میتوانید به این مطلب مراجعه کنید.
Subversion
این ابزار در ابتدای عرضهاش در سال ۲۰۰۰ عملکردی شبیه به CVS داشت و تنها برخی ویژگیها را به آن اضافه کرده بود. Subversion سلطان بیچون و چرای سیستمهای Version control محسوب میشد تا اینکه در سال ۲۰۰۵، Git به بازار آمد. البته هنوز هم Subversion به عنوان یک سیستم Version control ، طرفدارهای زیادی دارد. Subversion هماکنون زیر نظر بنیاد نرمافزار آپاچی قرار دارد.
Mercurial
Mercurial یکی دیگر از ابزارهای محبوب Version control است که شرایط شبیه به Git را تداعی میکند. البته عملکرد و پشتیبانی در آن به جذابیت Git نیست، ولی قابلیتها و دسترسیها زیادی را به همراه دارد.
در اینجا به عنوان نمونه از ابزار Git استفاده خواهیم کرد. امّا شما میتوانید از یک سیستم دلخواه Version control که تعداد آنها کم نیست، استفاده کنید.
نمونه روند کاری Version control
این فرآیندی است که بسیاری از توسعهدهندگان برای ایجاد، زمانبندی و ارائه فایلها به یک منبع Git طی میکنند. این فرآیند ممکن است با چیزی که هماکنون در حال انجام آن هستید، فرق داشته باشد. ولی در هر صورت، یادگیری روند کار Git اهمیت دارد و سعی کنید که اگر هم در اوایل اندکی برای شما عجیب و غریب است، آن را یاد بگیرید. روند کار به صورت زیر خواهد بود.
۱) ساخت یا اصلاح فایلها در دایرکتوری پروژه. وقتی تغییرات موردنظرتان را انجام دادید، با استفاده از فرمان git add، فایلهای اصلاحشده را به محل ارائه انتقال میدهید.
۲) نسخههای جدید و اصلاحشده فایلها به «محل ارائه» اضافه میشوند. در اینجا میتوانید نمایشی از فایلها ببینید.
۳) وقتی برای انتقال فایلها به منبع آماده بودید، از ابزار git commit استفاده کنید. در نتیجه، این فایلها به صورت همیشگی در دایرکتوری Git ذخیره میشوند.
مراحل کار به صورت تصویری در زیر نمایش داده شدهاند.
برای ایجاد یک لایه اضافه امنیتی، میتوانید فایلهایتان را هم در منبع محلی و هم در منبع ریموت Git ذخیره کنید. این راهکاری ایدهآل برای توسعهدهندگانی است که فایلها را در کامپیوتر شخصیشان تغییر میدهند و سپس میخواهند آنها را به یک سرور انتقال دهند. البته این تنظیمات فراتر از موضوع آموزشی در این مطلب است و سعی میشود که در آینده مطلبی اختصاصی در این رابطه ارائه شود.
نصب Git
میتوانید ابزار Git را در کامپیوتر دسکتاپ، سرور و یا هر دوی آنها نصب کنید. شروع به کار با Git بسیار ساده است. تنها کاری که باید انجام دهید، نصب Git در سرور، ایجاد یک منبع و شروع یک پروژه اولیه است. به صورت زیر:
۱) باز کردن یک پنجره ترمینال و ورود به سرور از طریق SSH.
۲) نصب Git در سرور با تایپ فرمانهای زیر:
sudo apt-get update sudo apt-get install git
۳) تنظیم کلمه کاربری و آدرس ایمیل با کمک فرمانهای زیر. دقت کنید که نام کاربری و ایمیل را مطابق با مشخصات خودتان تغییر دهید. Git در هنگام ثبت تغییرات، از این مشخصات استفاده خواهد کرد.
git config --global user.name "Jane Smith" git config --global user.email jsmith@example.com
۴) اکنون که Git در سرورتان نصب شده، نیاز به ایجاد یک منبع دارید. به دایرکتوری پروژهتان بروید و فرمان زیر را وارد نمایید.
git init
۵) منبع یا سابدایرکتوری .git ایجاد شده، ولی هنوز چیزی به آن اضافه نشده است. برای ردگیری تغییرات تمام فایلهای موجود در دایرکتوری پروژه، فرمان زیر را تایپ کنید.
git add *
۶) در نتیجه، فایلها رهگیری میشوند و میتوانید اقدامات اولیه را انجام دهید. برای این منظور، از فرمان زیر استفاده کنید.
git commit -m ‘initial project version’
شما با موفقیت یک منبع Git ایجاد کردید، فایلهایی که باید ردگیری شوند، مشخص نمودید و یک تغییر اولیه انجام دادید. در ادامه نگاهی خواهیم داشت به جریان یک سیستم Version control در یک پروژه واقعی.
محیطها (Environments)
حالا نوبت به استفاده از چیزهایی است که در رابطه با سیستم Version control و ساخت محیط های مختلف برای کدها یاد گرفتهاید. محیطها چارچوبهای اختصاصی هستند که میتوانند در کامپیوترهای مختلف یا در همان سیستم ذخیره شوند. شما میتوانید محیطهای جداگانه برای ذخیرهسازی فایلها در مراحل مختلف توسعه و تولید پروژه بسازید. در این بخش، نحوه اصلاح فایلها در یک محیط توسعه را مشاهده خواهید کرد. همچنین نحوه نمایش تغییرات در «محیط ارائه» و سپس، استفاده از تغییرات در «محیط تولید» را تجربه میکنید. چنین روشی برای انجام تغییرات و آزمایش آنها قبل از بکارگیری در یک وبسایت عمومی، بسیار مؤثر خواهد بود.
شروع کار و تنظیمات
برای شروع به کار، باید تصمیم بگیرید که کدام محیط را میخواهید بسازید و تنظیمات آن را انجام دهید. توصیه میشود که سه محیط مختلف ایجاد کنید؛ رویکردی که میتواند برای بسیاری از توسعهدهندگان انفرادی و سازمانهای کوچک مفید باشد. شرکتهای بزرگتر بر اساس تیم کاری و فرآیندها، احتمالاً به محیطهای دیگر نیز احتیاج خواهند داشت. به عنوان مثال، اگر سازمان شما دارای یک واحد ویژه برای کنترل کیفیت است، حتماً به یک محیط اضافی برای این واحد نیاز خواهید داشت.
توصیه میشود که محیطهای زیر را ایجاد کنید.
Development: از این محیط برای تولید فایلهای جدید و اصلاح فایلهای موجود استفاده کنید. هیچکس به جز شما نمیتواند تغییرات را ببیند. بنابراین شما در اینجا، آزادیِ عمل خواهید داشت.
Staging: پس از اتمام تغییرات، فایلها را به این محیط انتقال میدهید تا پیشنمایشی از تغییرات در یک فضای اختصاصی داشته باشید. در این مقطع، تغییرات از دید عموم پنهان هستند. ولی شما میتوانید وبسایت را قبل از بروز مشکل، بازبینی کنید.
Production: اگر تغییرات مناسب باشند، میتوانید فایلهای اصلاحشده را به وبسایت پروژه انتقال دهید. در اینجا، تمام تغییرات در معرض دید همگان قرار خواهند گرفت.
به این فکر کنید که از فایلهای هر کدام از محیط ها چه میخواهید. به عنوان مثال، اگر یک توسعهدهنده به صورت انفرادی هستید، شاید بخواهید که محیط توسعه یا Development را در کامپیوتر شخصی خود داشته باشید و محیطهای staging و production را در سرور نگهداری کنید. همچنین میتوانید تمام محیط ها را در یک سیستم نگهداری کنید.
در حالت ایدهآل، از یک سیستم Version control برای ایجاد و حفظ منابع جداگانه برای هر کدام از محیط ها استفاده خواهید کرد. به این ترتیب، امکان استفاده از فرمانها برای انتقال فایلهای منابع محیطها به یکدیگر وجود خواهد داشت. از آنجایی که محیطهای مختلف از دادههای متفاوت استفاده میکنند، لازم است که پایگاه داده جداگانه برای هر کدام از محیطها بسازید. می توانید دادههای موجود در پایگاه داده production را در محیطهای staging و development کپی کنید.
تکمیل روند کار
همانند کار با سیستم Version control، برای عادت به کار با محیطها، زمان و تلاش لازم خواهد بود. به عنوان مثال، اگر قبلاً فایلها را در محیط تولید یا production اصلاح کرده باشید، ممکن است در استفاده از سیستم Version control و انتقال فایلها بین محیطهای مختلف به چالشهای زیادی برخورد کنید. استفاده از این سیستم شاید در ابتدا اندکی سخت باشد، ولی مطمئناً ارزشش را برایتان خواهد داشت.