اگر از برنامهنویسان حرفهای و یا حتی متوسط باشید، حتما از سیستمهای ورژن کنترل مانند GitHub یا GitLab -گیت لب- استفاده کردهاید. اما این ابزارها فقط مخصوص برنامهنویسها نیستند. حتی توسعهدهندگان سختافزار هم میتوانند از این ابزارها استفاده کنند.
ابزارهای ورژن کنترل چه چیزهایی هستند؟
حتماً تابهحال برایتان پیش آمدهاست که پروژهتان را به یک مرحلهای رسانده باشید که بتوان تاحدی آنرا پایدار نامید. سپس تصمیم گرفتهاید که تغییراتی کوچک در آن بدهید و پساز تغییرات متوجه شدهاید که این تغییرات پروژه را از حالتپایدار و مطلوب شما خارج کردهاست. اما چندروزی از انجام پروژه گذشته و نمیدانید چه مواردی را باید دوباره دستکاری کنید تا به همان مرحلهی پایدار قبلی برسید. یا حتماً پروژهای که قراربوده به مدیرتان تحویلدهید را با نام Final Project ذخیره کردهاید و برای او ارسال کردهاید. پساز چندروز اصلاحیهای برای پروژه آمده و شما نسخهی بعدی را با نام Final of Final project ذخیرهکرده و دوباره ارسال کردهاید. این روند معمولاً آنقدر ادامه پیدا میکند که لیستی از فایلهای نهایی برای یک پروژه در اختیار دارید. فاجعهی اصلی زمانی رخ میدهد که مدتزمان زیادی از انجام پروژه گذشتهاست و دوباره لازماست تا به فایل اصلی پروژه مراجعهکنید. در آن زمان است که نمیدانید کدامیک از این فایلها نسخهی پایدار و اصلی است. ابزارهای ورژن کنترل درچنین مواقعی بهکمک توسعهدهندگان میآیند. این ابزارها تاریخچهای از تغییرات را نگهداری میکنند و برای هر تغییری که در آنها ذخیره میشود، میتوان (و البته باید که) یادداشتی نیز اضافهنمود. هرزمان که نیاز به بازگشت بود، با انتخاب نقطهی بازگشت، تمام فایلهای پروژه به تغییرات آن نقطه برخواهند گشت.
عکسفوق تصویری از یک پروژه را نمایش میدهد که چندین نقطهی بازگشت در طی توسعهی پروژه، برای آن ایجاد شدهاست. هر نقطهی بازگشت نیز دارای توضیحی از وضعیت پروژه در آن نقطه است تا بهراحتی بتوان بهیاد آورد که پروژه در آن نقطه چگونه بودهاست.
این ابزارها دقیقاً کجا هستند؟
ابزارهای ورژن کنترل درواقع سرویسهای نرمافزاری هستند. این سرویسها را میتوانید برروی کامپیوتر شخصی خودتان یا کامپیوتری متصلبه شبکهی محلی، اجرا کنید. البته توصیهی من ایناست که از ابزارهای آنلاین استفادهکنید؛ چراکه در هر نقطهای از دنیا به پروژههایتان دسترسی دارید و البته خیالتان راحتاست که یک نسخهی پشتیبان از پروژهتان هم در یک جای دیگری از دنیا نگهداری میشود. از سیستمهای آنلاین معروف ورژن کنترل، Github و Gitlab هستند. اولی دارای امکانات بیشتری است و استفادهکنندگان بسیاری در سرتاسر دنیا دارد. البته برای آنها که بهدنبال سرویسهای رایگان هستند، باید عرض کنم در Github فقط پروژههایی که بهصورت عمومی در دسترس هستند، رایگان سرویسدهی میشوند. پس اگر بهدنبال سرویسی رایگان حتی برای پروژههای غیرعمومی هستید، به شما Gitlab را پیشنهاد میکنم.
آیا میشود از دستورات Command Line خلاص شوم؟
ابزارهای ورژن کنترل بهطور معمول از دستورات تحت Command Line برای ایجاد و ثبت تغییرات پروژه استفاده میکنند. اما اگر شما هم مثل من از محیط CMD و Bash فراری هستید، در این پست چگونگی استفادهاز ابزارهای ورژن کنترل بااستفادهاز محیطهای گرافیکی آموزش داده شدهاست:
اول- اکانت گیت لب
سامانههای گیت زیادی دردسترس است. معروفترین آنها، GitHub است. یکیاز مشکلات این سامانه، دریافت هزینه برای پروژههایی است که دسترسی آنها محدود به خودتان است (Private). من هم چون ترجیح میدهم بابت این موضوع دلاری خرج نکنم، از سامانهی دوست داشتنی GitLab استفاده میکنم. این سامانه برای تمام پروژههای شخصی و عمومی رایگان است. پس لطفا به GitLab بروید و یک اکانت برای خودتان بسازید.
دوم- ایجاد پروژه در گیت لب
درهمان صفحهای ابتدایی پساز Login نمودن، میتوانید دکمهی New Project را مشاهده نمایید. برروی آن کلیککنید تا صفحههای مشابه عکسزیر ببینید:
یک اسم مناسب پروژهتان انتخاب کنید و حتما یک توضیح خوب برای پروژه بنویسید. میدانم که الان در دل پروژه هستید و همهچیز مثل روز برایتان روشن و بدیهی است، اما یک سال که بگذرد همهچیز فراموش میشود؛ پس برای آن روز بنویسید. دسترسی پروژه را هم در انتها مشخص کنید. البته این مورد اخیر را هر وقت که بخواهید میتوانید تغییر دهید.
سوم- اضافه کردن فایلها به گیت لب
خوب حالا به بخشاصلی ماجرا میرسیم. آنها که حرفهای تر هستند، از دستورات CommandLine در این بخش استفاده میکنند، اما آنهایی که مثل من به دنبال برنامههای گرافیکی هستند، لطفا ابتدا برنامهی رایگان SourceTree را دانلود کنند. برنامه را باز کنید و از منوی File برروی دکمهی Clone/New کلیککنید. برای پرکردن فیلدهای این قسمت لازماست که دوباره به گیتلب و صفحهی پروژهتان برگردید. در آن صفحه یک آدرس اختصاصی برای پروژه شما ایجاد شدهاست که لازماست آنرا در قسمت Source Path/URL در برنامهی SourceTree واردکنید:
این هم صفحهی وارد کردن آدرس پروژه در SourceTree که از مسیر File/Clone-New به آن رفتهایم:
خوب حالا همهچیز آماده است. هرفایلی که میخواهید را به پوشهی ایجادشده در کامپیوترتان منتقل کنید. پساز آن نوبتبه همگامکردن این فایلهای موجود برروی کامپیوتر با سرورهای گیتلب میرسد. هر تغییری که در پروژه میدهید و میخواهید آن تغییر بهعنوان یک نقطهی قابل بازگشت ثبت شود، دو کار برای آن باید انجامشود:
Commit: این اقدام، باعث ثبت تغییرات در یک فایل داخلی (موجود بر روی کامپیوتر شما) میشود. هربار که این اقدام را انجاممیدهید لازماست تا توضیحی درمورد این تغییر بنویسید. تنبلی نکنید و یک توضیح مناسب بنویسید، مطمئنباشید بعدها از آن استفاده خواهیدکرد. این توضیحات بههمراه تغییرات فایلها ثبتشده و قابلدسترسی است.
Push: تغییرات ثبتشده برروی کامپیوتر با سرورهای گیت همگام میشود. برای مثال، به پروژهی تست خودم، یک فایل به نام main.c اضافه میکنم. بهمحض اضافهکردن این فایل، در برنامهی SourceTree این مورد گزارش میشود. با انتخاب این فایل و نوشتن یک توضیح مناسب، این موضوع را Commit میکنم.
حالا وقت همگامسازی با سرورهای گیت است. فقط کافی است دکمهی Push را فشار دهید. کار تمام است. میتوانید فایل اضافهشده را در صفحهی پروژهی گیت لب هم مشاهده نمایید. ازاینپس، با هر تغییری در پروژهتان و ایجاد یک نقطهی قابلدسترس، کافیاست مراحل Commit و Push را تکرارکنید.
منبع: سیسوگ