سورس کنترل یا ورژن کنترل ها یک مکانیزمی است که این امکان را فراهم میکند که سورس پروژه بر روی آن قرار گیرد و تغییرات در آن مدیریت شود، همچنین تغییرات در فایل ها در آن تحت یک رکورد ذخیره شده و اعمال می گردد و همچنین امکان قرار دادن کامنت و توضیحات را برای افراد تیم فراهم میکند تا هر کس متوجه شود بر روی چه فایل هایی تغییرات اعمال کرده است.سورس کنترل ها به شما این اطمینان را می دهند که آخرین ورژن برنامه در دسترس می باشد و اگر هر یک از افراد تیم تغییراتی را در برنامه اعمال کرده باشند به صورت اتوماتیک در آخرین ورژن برنامه وجود دارد و نیازی به انتقال دستی آن نمی باشد.
انواع سورس کنترل ها
Source control های متمرکز (Centralized Version Control Systems)
Source control های توزیع شده (Distributed Version Control Systems)
عملیات قابل انجام بر روی TFS
این عمل را هنگامی باید انجام داد که شما برای بار اول می خواهید پروژه را بر روی سیستم خود کپی کنید. با مپ کردن یک محل برای ذخیره سازی فایل های پروژه مشخص می شود و آن مسیر به عنوان مسیر پروژه ذخیره می شود. دقت داشته باشید که هنگام مپ کردن فایلی کپی نمی شود و فقط محل ذخیره سازی فایل ها مشخص می شود.
Get Latest Version
با این عمل فایل هایی که بر روی سیستم شما موجود است بررسی می شود. و فایل هایی که وجود ندارد و یا این که ورژن فایل ها قدیمی است آن فایل ها را بر روی سیستم شما کپی می کند. شما بعد از عمل مپ کردن نیز باید عمل Get Latest Version را انجام دهید تا کل فایل های پروژه بر روی سیستم شما دانلود شود.
Undo pending changes
check in
اگر شما بخواهید ببینید که فایل شما در مقایسه با یکی از فایل های سرور چه تغییراتی داشته است از دستور compare استفاده می کنید. در این حالت تغییرات و حذف و اضافه ها را با رنگ های مختلف یه شما نشان می دهد.
Get Specific Version
shelve pending changes
عملیات های پایه ای گیت
بر روی سورس کنترل Git اعمال متنوعی برای کار با سورس انجام می شود که در ادامه آمده است. شما برای استفاده از گیت می توانید هم از خط فرمان آن استفاده کنید و یا هم میتوانید از ابزارهای ویژوالی که تعداد آنها هم بسیار است استفاده کنید. ما در این مطلب به معنی و مفهوم هرکدام از عملیات میپردازیم.
عملیات clone
حالتی را در نظر بگیرید که شما در یک تیم عضو شدهاید و یا میخواهید از سایت گیت هاب یک سورس را بگیرید در حالی که هیچ فایلی از سورس مورد نظر را ندارید. در این حالت شما باید پروژه را clone کنید. به عبارت دیگر عملی که برای اولین بار انجام میشود و کل پروژه را به همراه repository های آن دریافت میکند را clone می گوییم. با clone کردن یک پروژه کل فایلهای پروژه مورد نظر به سیستم شما کپی میشود و در محلی که مشخص کردهاید ریخته می شود. کل فایلها و تنظیمات و تاریخچه تغییر فایلها به سیستم شما کپی خواهد شد. دوستان دقت کنند که تاریخچه پروژه معمولاً در سیستم گیت در یک پوشه git نگهداری می شود.که معمولاً این پوشه مخفی می باشد.در ضمن اینطور نیست که بگوییم چون این پوشه تاریخچه و اطلاعات را نگهداری میکند حجم بسیار زیادی دارد شما اگر این پوشه را ببینید میفهمید که حجم کمی را به خود اختصاص داده است.
عملیات commit
گفتیم که همه ی اعضای تیم پروژه را دریافت میکنند و کار های و وظایف خود را بر روی آن انجام میدهند. حال اگر بخواهند که تغییرات خود را دسته بندی نمایند ولی فعلاً آن را بر روی سرور ارسال نکنند از کامیت استفاده می کنند. یعنی کامیت برای تغییرات یک رکورد ثبت میکند و فایلهایی که تغییر کردهاند را نیز ثبت می نماید. همچنین هنگام کامیت باید یک سری توضیحات در مورد تغییرات انجام شده به عنوان کامنت برای کامیت قرار دهید. سپس این تغییرات بر روی سیستم شما ذخیره میشود دقت کنید که فقط بر روی سیستم شما ذخیره خواهد شد و هنوز بر روی سرور اصلی اعمال نشده است.
عملیات Revert
اگر شما کامیت انجام داده باشید و از انجام آن پشیمان شده باشید شما میتوانید آن کامیت را revert کنید. این کار باعث میشود که در رکوردهای کامیت یک کامیت جدید اضافه شود که تغییرات کامیت قبلی را ندارد. به عبارت دیگر revert کردن undo کردن تغییراتی است که انجام داده ایم. البته در سیستم گیت عملیات دیگری نیز برای undo کردن وجود دارند مانند reset و یا checkout که پیشنهاد میشود خود شما در مورد آنها مطالعه کنید.
عملیات push
وقتی که یک سری تغییرات انجام شد و شما نیز آنها را کامیت کردید تغییرات بر روی سیستم شما انجام شده است و هنوز بر روی سرور آپلود نشده است. پس بقیه اعضای تیم نمیتوانند از تغییرات شما خبردار شوند. برای اینکه تغییرات شما بر روی سرور آپلود شود شما باید کامیت های انجام شده را push کنید. دقت کنید که اول باید کامیت کنید سپس کامیت ها را push نمایید. با این کار فایلهای تغییر داده شده شما به سرور انتقال می یابند و بقیه نیز میتوانند تغییرات شما را با جزئیات مشاهده کنند.
عمل pull
اگر شما بخواهید تغییرات انجام شده توسط دیگر اعضای تیم را بر روی کامپیوتر خود لود کنید باید این از سرور عمل pull را انجام دهید. با این کار بررسی میشود که کدام یک از فایلهایی که دست شما است تغییر کرده است. سپس آخرین نسخه از آن فایلها از سرور گرفته و بر روی سیستم شما قرار داده می شوند. همچنین repository شما نیز آپدیت خواهد شد.
عمل merge
حالتی را در نظر بگیریدکه شما بر روی یک فایل کار میکنید و یکی دیگر از اعضای تیم نیز بر روی همان فایل کار می کند. حال کار شما با فایل تمام شده و آن را کامیت کرده و بر روی سرور push میکنید. حال هم تیمی شما تغییراتی که شما انجام دادهاید را ندارد. چون او هنوز pull نکرده است وهمچنین او نیز فایل مورد نظر را تغییر داده است. وقتی که هم تیمی شما می خواهد فایل را push کند سیستم گیت تشخیص میدهد که فایل قبلاً هم تغییر کرده است. بنابراین پیام میدهد که شما باید فایل را merge کنید. یعنی تغییرات شما وخودش را در یک فایل قرار دهد و جاهایی را که با هم تداخل دارند را تشخیص بدهد و مشکل را برطرف کند. برای merge کردن باید دو فایل را مقایسه یا compare کند. ابزار های بسیاری هستند که دو صفحه کد را با هم مقایسه میکنند و جاهایی که بین دو فایل متفاوت است را به رنگ دیگری نشان میدهند و این قابلیت را دارند که هر قسمت از تغییرات را که خواستید از فایلی به فایل دیگر اعمال کنید.