چند صباحی بود با cvs داشتم کار میکردم و کم کم باهاش خو گرفته بودم تا اینکه ندایی از جانب رییس شرکت اومد که:

"میخوایم یه پروژه واسه آموزش تو شرکت بزنیم..میتونی کد ها رو تو یه جای بهتر بذاری..بهتر از cvs"

اینجا بود که آستین ها رو بالا زدم و شروع کردم به سرچ و تحقیق درباره اینکه اصلا cvs خودش چی بوده که حالا باید دنبال بهتر از اون باشیم.اصلا آیا سیستم کنترل ورژن بهتر از cvs هست؟؟!!


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

بعدش متوجه شدم یه سایتی هم هست به نام GitHub که یجورایی هاست سورس پروژه گیت هستش با کلی امکانات بی نظیر و کاربردی..

در خلال همین کشف و شهودها بودم که باز متوجه یه نکته خیلی مهم بین گیت و cvs  شدم .اونم غیر متمرکز بودن git هستش.به عبارت دیگه تو گیت دو تا ریپوزیتوری داریم.یه ریپوی اصلی و به ازای هر کاربر یه ریپوی محلی..در مقابلش توی cvs فقط یک ریپوزیتوری داریم.به اولی اصطلاحا میگن:

DVCS-distributed version control systems

به دومی هم میگن:

CVCS-centralized version control systems

توی سی وی اس، commit کردن همانا و نشستن تغییرات رو ریپوی اصلی همانا..اما در گیت وقتی commit میکنیم تغییرات روی ریپوی لوکال(که یه آدرس دایرکتوری توی کامپیوتر خودمون هست)میشینه.

توی cvs وقتی میخوایم تغییرات رو بگیریم کافیه آپدیت کنیم سورس رو و کدمون بروزرسانی میشه اما توی گیت ابتدا تغییرات رو از ریپوی اصلی به ریپوی محلی منتقل میکنیم(که به این کار میگن:Fetch)و تو مرحله بعد از ریپوی محلی به workspace.(که به این کار میگن:Pull)

به عبارت  ساده تر:

GIT-

برای اعمال تغییرات توی ریپوزیتوری های محلی و اصلی:

first commit then push

برای دریافت تغییرات از ریپوی اصلی و محلی:

first Fetch then pull

اینم یه عکس جالب که تفاوت های cvcs و dvcs ها رو به خوبی شرح میده:

گیت در مقابل cvs