قبلا یک مقاله درباره مقایسه دو ورژن کنترل TFVC و Git نوشته بودم، در اون موقاله در نهایت به این نتیجه رسیدم که Git می تونه انتخاب بهتری باشه. الان از اون زمان شاید یک سال و چند ماهی گذشته، میشه گفت امکانات جدیدی که به Git اضافه شدن تقریبا استفاده کردن از TFVC رو غیر منطقی کرده. بارها بوده بعد از اتمام جلسات آموزشی شرکت کننده ها از اینکه چقدر فرآیندها میتونه بهتر بشه خوشحال و متعجب بودن. منم از اونها خوشحال تر چون میدیدم اونها خوشحالن.

در این مقاله میخوام یک مرور داشته باشم به اینکه چه مواردی به ورژن کنترل Git در TFS اضافه شده و سیاست مایکروسافت در این زمینه چیه.

درباره سیاست کلی شرکت مایکروسافت باید بگم که در راستای تغییراتی که بعد از حضور آقای نادلا در مایکروسافت در حال انجامه، مایکروسافت و سایت github ارتباط و همکاری خودشون درباره توسعه git رو خیلی افزایش دادن و روی امکاناتی مثل GVFS یا Git virtual file system که توسط مایکروسافت توسعه داده شد کارمی کنن.

GFVS و داستان ایجادش و اعداد و ارقامی که اعلام شده در نوع خودش جالبه.

تا حالا براتون این سوال پیش اومده که حجم سورس کد ویندوز و یا لینوکس چقدره؟ خب جواب سوالتون در تصویر زیره.

حجم سورس کد لینوکس ۶۰۰ مگابایت البته چه نسخه ایش رو نگفتن. VSTS 3 GB و حجم ویندوز برابر ۲۷۰ گیگابایت هست. حداقل در مورد ویندوز توضیح دادن که منظور از ستون آبی رنگ تمام سورس کدهای متعلق به پروژه ویندوزه.

نکته ایی که وجود داره اینه که در منطق Git تمام فایلها باید روی سیستم شما کپی بشن در واقع Clone بشن بعلاوه تمام تاریخچه و غیره، الان شما فرض کنید یک repo دارید که حجمش مثل ریپو ویندوز زیاده ۵۰ گیگه یا همین ۲۷۰ گیت، کافیه یک فرمان Clone اجرا کنید تا حالا حالاها سیستم شما مشغول کپی کردن باشه. آمار و ارقام اولیه سورس کد ویندوز جالبه.

Clone کردن این پروژه روی شبکه فوق سریع مایکروسافت ۱۲ ساعت زمان میبرده!، check out کردن برنچ ۳ ساعت زمان میبرده، اضافه کردن یک فایل جدید و commit اون ۳۰ دقیقه و یک git status گرفتن ۸ دقیقه، می بینیم که رسما کار نمی کردن سنگین تر بودن. مایکروسافت پروژه GVFS رو شروع کرد تا جلوی این حجم از کپی روی سیستم های client رو بگیره.

اعداد سبز رنگ بعد از استفاده از GVFS هستن. بعد از ایجاد GVFS این پروژه به صورت اوپن سورس منتشر شد و با همکاری github در حال توسعه های بعدی هست.

خب حالا نوبت به امکانات جدید میرسه. به بعضی از این موارد در مقالات آموزش کامل امکانات جدید TFS 2017 update 2 و بررسی Team Foundation Server 2017 Update 3 و بررسی و آموزش جزئیات Team Foundation Server 2018 final release اشاره شده و من هم در زیر به صورت کلی به موارد جدیدی که اضافه شدن اشاره می کنم ولی قبل از اون می خوام یکم درباره مهم ترین تغییری که به وجود اومده صحبت کنم.

مهم ترین تغییر به وجود اومده از نظر من ایجاد یک فرآیند کامل از زمان نوشتن کد تا تحویل در محیط واقعی یا Production هست. خب این یعنی چی. چرا ما نیاز به تست و پابلیش نرم افزار داریم؟ چون کدهای جدیدی نوشته شده یا باگ هایی بر طرف شدن. چرا ما کدهای جدیدی نوشتیم یا دیتابیس رو تغییر دادیم یا گرافیک های جدیدی خلق کردیم؟ چون نیازمندی پروژه بوده و Task های مشخصی برای پیاده سازی feature ها تعیین شده.

می بینیم که تمام فرآیند یک حالت یکپارچه داره، در تعریف ALM این موضوع تحت عنوان Visibility مطرح میشه یعنی تمام فرآیند تولید نرم افزار از اعلام نیاز تا مانیتور شدن خروجی در محیط عملیاتی رو شامل میشه. دقیقا زیبایی TFS در پیاده سازی Git همین یکپارچگی اون با تمام زیر سیستم های دیگه است. بعد از شروع اسپرینت میشه با انتخاب PBI مورد نظر و باز شدن صفحه جزئیات PBI یک برنچ مرتبط با PBI ایجاد کرد.

وقتی کار ما آماده تحویل شد باز از طریق پنل تحت وب و صفحه مشاهده جزئیات PBI می تونیم یک Pull Request ایجاد کنیم تا فرآیند تحویل PBI شروع بشه.

 

اطلاعات مرتبط با Test و Build و Release هم به صورت مجتمع چه برای PBI و چه برای هر Commit نمایش داده میشه. واقعا فکر نمی کنم بشه از این کامل تر Visibility رو ارائه داد. ویژگی های جدید اضافه شده به Git در TFS به قرار زیر هستند.

Visualize your git repository
View git tags on commits
Add tags to commits
Improved commit filtering
Import repositories from TFVC to Git
Git LFS file locking
Git commit comments use the new discussion control
New tree view control
support for Git forks.
You can manage massive Git repositories with GVFS.
You can view, filter, delete, and set the security of Git tags.
added file minimap, bracket matching, and toggle white space to web code editing.
made many improvements to pull requests.
Avoid overwrites and protect performance using repository settings(Case enforcement, Limit file sizes)
Enhanced filter capability for commits with more than 1000 files changed
Find lost commits due to a Force Push
Blame now has history
Toggle word wrap and white space in diff views
Track code pushes to a Git repo to builds and releases
Control who can contribute to pull requests
Pull request comment notifications include the thread context
Pull request status extensibility
Pull request service hooks merge events
Improved error messages for work items completing with a pull request
Mention a pull request
Help reviewers using pull request labels
Pull request comments follow renamed files
View pull request merge commit
Recently used reviewers
View remaining policy criteria for pull request auto-complete
Discuss math in pull requests
Pull request suggestions for forks
Path filters for pull request policies

خلاصه اینکه اگر دغدغه ساختن یک فرآیند کامل Continuous Integration و Continuous Deployment رو دارید در پلتفرم مایکروسافت تنها راه استفاده از Git موجود در TFS هست.