ویژوال استودیو Online با Git (قسمت اول)

شنبه 31 مرداد 1394

در این مقاله تلاش ما بر این است مفهوم Git را که با استفاده از( Visual Studio Online (VSO ، TFS پیاده سازی شده است

 TFSو ویژوال استودیو آنلاین گیت را به عنوان یکی از گزینه های پیش فرض برای کنترل نسخه همزمان با ایجاد یک پروژه تیمی جدید در بر می گیرد.

جهت یادگیری گیت میتوانید آموزش git از صفر را در سایت تاپ لرن مشاهده کنید .

Git توزیع کنترل نسخه سیستم است در ابتدا به عنوان بخشی از طرح توسعه لینوکس و بعد از آن به عنوان پروژه آزاد و متن باز مستقل توسعه داده شد. تیم سرور اصی مایکروسافت گیت ، از نسخه آن TFS 2012.2 را در برگرفت. در حالی که یک پروژه تیمی  روی  'on-premise' TFS یا ویژوال استودیو آنلاین ایجاد می کنید گیت یکی از گزینه های موجود همراه Team Foundation Version Control (TFVC)

TFVC یک سیستم کنترل نسخه مرکزی می باشد. همه ی نسخه های نرم افزار را در یک مخزن مرکزی ذخیره می کند. هر زمان که یک درخواست داده می شود اخرین نسخه یا یک نسخه خاص  از فایل ها به کاربر از TFS با انتقال بر روی شبکه داده می شود. تنها تمام نسخه های دیگر روی مخزن مرکزی باقی می مانند. رفتار گیت کمی متفاوت از TFVC است. هر زمان که کاربر می خواهد روی یک نرم افزار کار کندand has permission to do so گیت مجبور به کلون کردن کاربر به مخزن سرور روی دستگاه کاربر می باشد. به این ترتیب، کاربر تمام نسخه های همه ی فایل های نرم افزار را در یک مخزن locall دارد. اکنون کاربر می تواند بر روی همه ی نسخه های نرم افزار به طور locall کار کند. که بسیار سریعتر از کار کردن با نسخه های موجود روی یک نرم افزار سرور مرکزی در شبکه یا اینترنت است. از آنجا که توسعه فردی مورد نظر است ین مدل بسیار عالی است. اما نرم افزار کوچک اما با اهمیت مدرن برای توسعه کار تیمی است. چطوربرنامه نویس کارخود را با اعضای تیم خود در این مدل تبادل می کند.  این جایی است که TFS یا ویژوال استودیو آنلاین مطرح می شود. زمانی که یک پروژه تیمی با گزینه انتخاب شده از Git ایجاد می شود، یک مخزن Git خالی سمت سرور ایجاد می شود. به برنامه نویسان پیشنهاد می شود تا یک کپی از نسخه اصلی در مخزن خالی با استفاده از ویژوال استودیو یا یک ابزار خط فرمان(ابزارهای Third party برای دانلود رایگان می باشند ) داشته باشند. زمانی که کاربر روی منوی CODE دررابط وب TFS کلیک می کند تصویر زیر را مشاهده خواهد کرد.

هر زمان که برنامه نویس بخواهد اطلاعاتی را با دیگران به اشتراک بگذارد. آن بخشی از نرم افزار( فایل) را روی مخزن مرکزی Git قرار می دهد که روی TFSیا VSO نگه داشته شده است. برای این کار، همه ی کسانی که  اعضای تیم هستن باید گروه همکاران Team Project عضوشوند.

اگر یک کاربر جدید به تیم اضافه شود. او توسط clone، مخزن از راه دور که در VSO برای پروژه وجود دارد به تیم اضافه خواهد شد. فایل های به اشتراک گذاشته شده توسط برنامه نویسان قدیمی با همه ی نسخه های این فایل ها برای برنامه نویس در مخزن محلی در دسترس است.

قبل از اینکه در عمق مفاهیم Git فرو برویم و آن راروی TFS / VSO پیاده سازی کنیم بهتر کمی درباره ی VSO بدانیم. VSO یک پیاده سازی از TFS  که روی ابر توسط مایکروسافت نگه داری می شود.The benefits of VSO that I can think comparing it to on premise TFS, are numerous

1.نیاز به پیاده سازی و نگه خود TFS ندارید.آن توسط مایکروسافت نگه داری می شود با این کار هزینه زیر ساخت کم می شود و همچنین از پایگاه داده فایل پشتیبان  برای غلبه  با خرابی ها گرفته می شود.

2. آخرین ویژگی های TFS همیشه روی VSO موجود هستند. بسیار زوتراز  on VSO much earlier than same features being made available on on premise TFS

3.VSO محل شفاف است از آن جا که آن در یک ابر است. جایی که اعضای تیم به به سرویس VSO دسترسی دارن اهمیت ندارد.

برای تست رایگان VSO، مایکروسافت یک حساب کاربری رایگان  ارائه می دهد می توانید یک تیم تا 5 تا کاربری که اشتراک MSDN ندارند داشته باشید. هر عضو تیم که اشتراک MSDN دارد علاوه بر این 5 تا حساب در نظر گرفته می شود.

زمانی که مخزن cloned می شود آن یک پوشه روی ماشین کااربر که 

شامل فابل ها و یک پوشه مخفی به نام git. ایجاد می کند.

این پوشه git. شامل همه ی تنظیمات، logs، hook و شی های منبع و در مسیری که شما به طورمحلی کار می کنید قرار دارد. 

در  git. یک فولدری با نام  "refs" وجود دارد که نام ارجاعات به branches در یک زیر پوشه head و ارجاعات به remote که  branches that you have "fetched" in the subfolder "remotes".

حال به معرفی fetch می پردازیمfetch آخرین به روزرسانی از  شاخه ی remote کهthat you are tracking. فراهم میکند.

این شاخه ی remote ،توسط برنامه نویسان دیگر روی VSO به اشتراک گذاشته می شود. واکش یک شاخه از remote به این معنی نیست که شما هنوز روی آن کار می کنید و کد آن را ویرایش می کنید. اگر شما می خواهید شرکت کنید در همین شاخهIf you too want to participate in contributing in the same branch  اگر شما نیاز دارید تا یک شاخه محلی ایجاد کنید که شاخه remote را شبیه سازی کند . یک بار که branch محلی clone ایجاد شده است. شما می توانید روی branch کار کنید. کد جدیدی در آن بنویسید یا کد موجود را ویرایش کنید.بعد از ویرایش کد، می توانید آن ها را commit کنید. عمل commit ،  خیلی شبیه به عمل Check-in در TFVC است اما چون عمل Check-in در TFVC انجام می شود کد ارسال شده به سرور نمی رسد. آن تنها در مخزن محلی در branch کی شما در حال حاضر کار می کنید باقی می ماند. آخرین branch که ارسال می شود HEAD نامیده می شود.

دقت داشته باشید که این HEAD با head تفاوت دارد.

head نام ارجاع از هر branch می باشد درحالی که HEADمتغیری است که آخرین comit از branch که فعال است را ذخیره می کند. 

قبل از اینکه کد ویرایش شده را commit کنید بهتر که شما remote commits را در کد خود fetch و Merge کنید.Merge عملگری است که کد را از یک شاخه به شاخه دیگر ادغام می کند.

VSO یک گزینه دیگر به نام pull برای ترکیب کردن عمل merge و fetch فراهم می کندعمل push بعد از عمل fetch روی شاخه remote به طور اتوماتیک عمل merge کردن را انجام می دهد. برخی از کارشناسان هنوز هم ترجیح می دهند تا دو عملیات جداگانه را به صورت دستی انجام دهندsince it provides a degree of control on what is merged and how the conflicts are resolved. It is the same as TFVC which can do automated conflict resolution but does also provide a manual option to do so.اگر عجله دارید توصیه می کنیم I do also recommend doing manual merge unless you are in too much hurry and there are too many changes to merge (and you have a nature that accepts inherent risks of automated conflict resolution!).

شما می توانیدکد را چندین بار commit کنید. هر بار که با آخرین commit آن به راس branch حرکت می کند بنابراین آن HEAD برای the time being.  پس از اینکه کد که شما ویرایش میکند و مطمئنید که 

 After you have committed the code that you are editing and are sure that you may now share the code with others, you can "push" the code to the VSO server repository that is shared by the entire team.

دکمه Sync که در تصویر می بینید یک عملیات خاص VSO و TFS است که  ترکیبی از push که البته شامل عمل fetch با merge و push می باشد. آن branch محلی را با branch مربوطه remote همگام سازی می کند.

بعد از عمل push، VSO will reflect that on the CODE option of the team project and will also show the details of that operation - like when was the last change (commit) made, what was the comment given by developer while committing that and the name of the developer who committed.

زمانی که مخزن Git به وسیله ی VSO  برای یک  team project ایجاد می شود وتیم شروع به کارکردن روی آن می کند تنها یک branch وجود دارد که به وسیله ی vso ایجتد می شود. به طور پیش فرض  آن master نامیده می شود. هر زمان که روی برخی از کد ها می خواهید کار کنید نیاز به دقت بیشتری دارید .در آن زمان شما می توانید branch دیگری از master ایجاد کنید. زمانی که branch, وجود دارد همچنین می توانید branch را از تیم خارج کنید. برای مثال، یک عضو تیم می خواهد a team member wants to try out some code before it can become part of the release او یک branch به نام SimpleCode برای این هدف ایجاد می کند.

 check-box برای Checkout branch که شما در تصویر می بینید عمل Checkout نیست  که معمولا برای برنامه نویس هایی که از TFVC استفاده می کنند شناخته شده است . در git، عمل checkout برای این است تا branch مانند active branch ایجاد کند. بنابراین HEAD راس Branch قرار می گیرد.

بعد از اینکه branch ایجاد می شود، VSO آن را به  عنوان یه نوع branch خصوصی نگه می دارد. و آن به اعضای تیم منتشر نمی شود. برای اشتراک گذاری branch با اعضای تیم دیگر نیاز است تا branch را با استفاده ازcontext menu (right click) of the unpublished branch

branch روی VSO زیر گزینه Branches در زیر بخش CODE از team project نشان داده می شود.آن همچنین Commits در branch را نشان می دهد.

آموزش سی شارپ

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 1k بازدید
  • 1 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید