گفتم شاید سوال بعضی از دوستان باشه که Ckeck-Out توی سورس کنترلر TFS چیه؟ و اینکه تفاوتش با GIT چیه...
البته من اینجا خیلی زیاد و تکنیکی نمیخوام به تفاوت های این دو بپردازم اما یه چند خطی ساده درباره شون مینویسم.
خب همونطور که بیشترتون میدونید هر دوی این Source Controllerها کارآمد و قدرتمند هستن، TFS به دلیل وجود ابزار بزرگ و قدرتمندی مثل Microsoft Azure این روزها طرفدارهای زیادی داره و امکانات خوبی هم برای مدیریت پروژه های بزرگ تجاری در اختیار کارفرماها میذاره. همینطور میشه باهاش CI/CD راه انداخت(اتوماتیک سازی فرایند بیلد بعد از هر چِکین) و خلاصه کل مراحل توسعه پروژه رو باهاش کنترل و مدیریت کرد چون امکانات مدیریت پروژه هم داخل دل خودش داره. (البته کد منبعش قابل دسترس هست اما لایسنس تجاری دارد و در گروه کاملا باز نیست).
خب GIT هم که قربونش برم همه جا شناخته شده هستش و خیلی هم دوست داشتنیه خصوصا توی پروژه های مرتبط با npm یا به عبارتی Node JS (منبع باز هم که هست) و دیگه خیلی محبوبه واقعا هم قدرتمنده.
حالا توسعه دهنده های بک-اند ماکروسافتی که با ASP.Net , C#, Sql Server معمولا کار میکنن، برای مدیریت پروژه و کنترل کد منبع به طور همزمان از یک ابزار Web base خیلی قدرتمند استفاده میکنن به نام Azure که یه بخش مهمی داره (الان دیگه کاملا باهم ترکیب شده) به نام TFS: Team Foundation Server
خب حالا اینجا میرسیم به اصل داستان که این Check out لامصب چیه دقیقا؟
عملیات check out در TFS به معنای قفل کردن یک فایل برای ویرایش توسط یک کاربره. با این عمل، دیگه کاربرها نمیتونن این فایل رو ویرایش کنن تا تداخل توی ویرایشها ایجاد نشه، همینطور با check out کردن یک فایل، اون فایل به صورت خودکار در workspace شما قرار میگیره.
اما در GIT، به جای check out، از عملیات pull استفاده میکنیم که به معنای گرفتن کد منبع هست. با pull کردن یک branch(چون ممکنه شاخه های متعددی از توسعه کد وجود داشته باشه البته در بیشتر موارد توی پروژه های ایرانی فقط همون برَنچ مَستر رو داریم)، آخرین تغییرات اعمال شده در آن branch را به دست میآورید و با merge کردن در کد خودمون، تغییرات رو ترکیب میکنیم.
نکته: در GIT نباید فایلها را قفل کرد؛ بلکه همه کاربران مجوز ویرایش همزمان روی یک فایل را دارند و تغییرات بصورت merge شده در branch اصلی قابل دسترس هستند.