Version Controlچیست و چرا باید از آن استفاده کنیم؟

در این مقاله ابتدا Version Control رامعرفی می کنیم و درباره ضرورت استفاده از آن صحبت خواهیم کرد سپس انواع آن را معرفی خواهیم کرد و هرکدام را جداگانه بررسی خواهیم کرد و مزایا و معایب هر کدام را خواهیم گفت و در نهایت بین انواع Version Control یک مقایسه انجام خواهیم داد.

 Version Controlچیست و چرا باید از آن استفاده کنیم؟

Version Control چیست؟

Version Control یعنی نگهداشتن کپی از کدها و یا فایل های خود از هر مرحله در چرخه ی عمر خودش. سیستم Version Control به ما اجازه می دهد که همه ی نسخه ها از کد خود را با نمایش یک نسخه در یک زمان مدیریت کنیم.

چرا از Version Control استفاده کنیم؟

گاهی یک کد جدید می نویسیم و یا در آن تغییر ایجاد می کنیم اما بعد ها متوجه می شویم که این کار اشتباه بوده است و می خواهیم به کد قبلی برگردیم،  Version Control این کار را انجام خواهد داد.

اگر می خواهید که چند نسخه از پروژه را نگهداری کنید یا می خواهید تفاوت بین دو (یا بیشتر) از نسخه کد های خود را ببینید یا می خواهید که سابقه ی یک کد خاص را ببینید Version Control همه ی این کارها را انجام می دهد.

گاهی باید کد خود را ارسال و یا با کد های دیگر اعضای تیم برنامه نویسی ادغام کنید یا میخواهید که کد خود را به اشتراک بگذارید که تا به دیگر اعضای تیم اجازه دهید که روی آن کد کار کنند شما می توانید این کار هارا با استفاده از version control انجام دهید.

اگر می خواهید یک آزمایش با یک ویژگی جدید انجام دهید ویا تحقیق و توسعه بدون دخالت در کدی که روی آن کار می کنید انجام دهید version control این انعطاف پذیری را به شما می دهد.

این امکان به تیم توسعه اعتماد به نفس بالایی در انجام آزمایشات در کد می دهد زیرا در هر زمانی می توانیم به کد قبلی برگردیم.

با ویژگی خودکار، Version Control در اتوماتیک کردن تست ، آنالیز کد و گسترش آن، زمانی که یک نسخه ی جدید در version control ذخیره می شود، کمک می کند. این کار باعث ذخیره ی زمان تیم توسعه دهنده می شود.

دو نوع از version control توسط Visual Studio Team System پشتیبانی می شود ، Git و TFVC. حال به عنوان یک گسترش دهنده همیشه این سوال را داریم که از کدام سیستم version control باید استفاده کنیم؟

Git چیست؟ (توزیع شده)

Git یک سیستم version control است که open source و توزیع شده است و برای مدیریت سریع و کارآمد پروژه ها طراحی شده است.

در framework توزیع شده همه ی توسعه دهندگان کپی فایل های خود را در یک مخزن local دارند و زمانی که تغییرات جدیدی را اعمال می کنند ابتدا در مخزن local ذخیره می شود. در عکس زیر مشاهده می کنید که commit ابتدا به صورت local ساخته شده است و پس از بررسی می توانید تغییرات را در سرور اعمال کنید.

در اینجا هیچ مخزن مرکزی وجود ندارد که به آن وابسته باشید و همه ی سابقه ی مخزن را به صورت local داریم.

توسعه دهندگان تغییرات خود را به طور مداوم اعمال می کنند و تجمیع کنندگان می توانند تغییرات را بازبینی کنند و آن ها را به مرجع کد اصلی به صورت ناهمگام اضافه کنند.

تجمیع کنندگان می توانند با موفقیت با build کردن کد از مخزن local آن را روی مخزن سرور اعمال کنند.

TFVC چیست؟(مرکزی)

   Team Foundation Version Control یک سیستم version control مرکزی است. در اینجا اعضای تیم فقط یک فایل روی دستگاه دارند و سوابق روی سرور اصلی نگهداری می شود.

اعضای تیم کد های خود را در TFS وارد می کنند و می توانند تغییرات را در یک change-set بررسی کنند و با استفاده از مقایسه می توانند تغییرات دقیقی که ایجاد کرده اند را شناسایی کنند.

در سیستم مرکزی توسعه دهندگان تغییرات خود را مستقیما به مخزن اصلی سرور اعمال می کنند.

این به معناست که یک نقص و یا تغییر ناخواسته می تواند همه ی پروژه را از بین ببرد. Commit های از راه دور در سیستم مرکزی بسیار آهسته هستند.

Git به صورت open source و cross-platform است بنابراین همه ی platform ها، تکنولوژی ها و  frameworkها در یک solution آن را پشتیبانی می کنند. مزیت اصلی گیت این است که تقریبا تمام سیستم عامل ها از آن پشتیبانی میکنند.

Git یک backup اتوماتیک از کل مخزن دارد. هرگاه کسی چیزی از مخزن اصلی بگیرد تمام سابقه ی تغییرات آن را نیز دریافت می کند و هرگاه یکی از مخازن به هر دلیلی از دست رفت یکی از این نسخه های دردسترس در هر مرحله ی کاری را می توانید جایگزین آن کنید.

با توجه به دسترسی به منابع به صورت offline، توسعه دهندگان از هرجایی می توانند کار کنند و تمام سابقه ی پروژه و همچنین هر ورود به سیستم را می توانیم بدون راه اندازی اتصال VPN مشاهده کنیم. الگوریتم های شاخه بندی و ادغام در Git بسیار بهینه تر هستند.

کار کردن و اعمال تغییرات در شاخه ی خود به صورت local و بازبینی تغییرات در Git بسیار آسان تر است.

مکانیسم درخواست بسیار جالب است. حتی مخزن Visual Studio Online Default، مخزن Git است. بطور کلی یک تیم با TFS آشنا است بنابراین شروع کار با ابزار UI در Visual Studio آسان می شود. برای کسانی که در Git تازه کار هستند آموزش های مختصری وجود دارد و همینجا می توانند تمرین کنند.

TFS Check نسبت به Git کند تر است همچنین باید مطمئن شوید که از سرور مرکزی back up گرفته شده است و ادغام مواردی که با هم در تداخل هستند مکررا پیش می آید که باید آن ها را خودتان به صورت دستی حل کنید و همچنین شاخه بندی روندی است که در TFS معمولا زمان بر است و مساله اصلی این است که TFS نیاز به Visual Studio دارد.

موارد مختلفی وجود دارد که می تواند وقت شما را به عنوان یک تیم توسعه دهنده بگیرد نظیر رفع باگ ها، تحقیق و گسترش ابزار های جدید و اضافه کردن ویژگی های جدید. همانطور که تقاضای کاربران شما افزایش می یابد version control به تیم شما در تحویل پروژه در زمان معین با همکاری یکدیگر کمک می کند.