بسم الله الرحمن الرحیم
سلام
تو جلسه ۲۳ که گذشت در مورد Source Control Management بحث شد.
اینکه چی هست و چی نیست؟!
در حقیقت Source Control Management به برنامههای مدیریت کد گفته می شه که به عبارت سادهتر در هر پروژه ای تعدادی فایل و پوشه وجود داره که بصورت پیوسته تغییراتی در آنها اعمال می شه و برنامههای Source Control Management وظیفه ذخیره و پیگیری این تغییرات رو دارند. این برنامهها دارای مخزن ای هست واسه نگهداری تاریخچه تغییراتی که روی کدها اعمال شدن و با استفاده از آخرین فایلهای تغییر یافته که برنامه ذخیره کرده و فایلها رو در اختیار ما قرار می ده می شه تغییرات جدید اعمال کرد و همینطوری این موضوع ادامه دارد
Source Control Management ها در چندین نوع ارائه می شن که دو موردی که در جلسه هم در موردشون بحث شد، Distributed (توزیع شده) مثل Git و Centeralized (متمرکز) مثل Subversion که هر کدوم ویژگیهای خودشون رو دارن.
بطور کلی، در مدل توزیع شده، کل تاریخچه و تغییرات اعمال شده از ابتدای شروع پروژه تا جایی که هست در اختیار توسعهدهنده قرار می گیره و بخاطر این مورد توسعهدهنده یا دهندگان می تونن از تغییرات پروژه آگاه بشن. که این مورد در مدل متمرکز اینگونه نیست و همه چیز در سرور قرار می گیره و فقط آخرین تغییرات در اختیار توسعهدهنده یا دهندگان قرار می گیره.
مورد بعدی در مورد مدل متمرکز، اینه که در این مدل نیازی به دسترسی به اینترنت برای کار با مخازن این مدل نیست و بعد از اینکه تغییرات و در کل تمام کارهایی که می خواین با پروژه انجام بدین رو انجام می دین و بعد از اتمام کارهای مورد نظر، می تونین تغییرات رو در اختیار بقیه و یا به مخزن ای که در دسترسی عموم هست ارسال کنین. که این مورد در سیستم متمرکز به این نحو نیست و برای ثبت هر تغییر نیازه که به اینترنت دسترسی داشته باشین و هر تغییری که اعمال می شه و می خوایین ثبت کنین نیازه که به سرور مرکزی بره و برای این کار هم نیاز به دسترسی به اینترنت خواهد بود.
و در حقیقت در مدل توزیع شده، وقتی از مخزنی کپی (clone) میکنید، چون کل تاریخچه در اختیار خودتون هست، بنابراین به این معنی هست که خود شما، هم server هستین و هم client ! و هر کاری باهاش خواستین می تونین بکنین!
ولی در مدل متمرکز وجود server و client ضروری هست و توسعهدهنده فقط client هست و نه سرور!
البته تا جایی که اطلاع دارم در مدل های متمرکز هم می شه کل تاریخجه رو در اختیار داشت که برای این کار هم نیاز به دسترسی به سرور هست!
مورد بعدی در مورد سیستم توزیع شده که هست آینه که، ممکنه سؤالی به وجود بیاد که اگه حجم تاریخچه زیاد باشه، ممکنه نشه به راحتی مخزن رو داشته باشیم (به خصوصی بخاطر سرعت اینترنت کشور و محدودیتهایی که داره) که برای این مورد هم راههایی هست که نیاز نباشه مجبور به داشتن کل تاریخچه با حجم عظیمش داشته باشید.
که در مورد در Git توسط Submodule قابل حل هست.
مورد بعدی، در مورد دستورات و یادگیری سیستمهایی که از این مدل ها استفاده می کنن هست.
که در git بیش از ۱۳۰ دستور هست که نیازه که یادشون گرفت. البته حدودی ۲۰ دستور هست که نیازهای روزمره مون رو می تونه برآورده کنه که دونستن مابقی دستورات هم می تونه از مشکلاتی که ممکنه در طول کار با برنامه مواجه بشین، شما رو نجات بده!
و این مورد در Subversion بخار تعداد دستوراتش نسبت به git یه مزیت به حساب می یاد.
البته این موضوع مربوط به زمانی می شه که بخواهید از Command line استفاده کنین که برنامههای گرافیکی هم برای کار با این برنامهها نوشتن شدن و باگذشت زمان هم برنامههای جالبتری واسشون نوشته می شه.
البته برای انجام برخی کارها ممکنه برنامههای گرافیکی جوابگو نباشن و بهترین راه همون یادگیری دستورات و اینکه بتونیم از Command line هم استفاده کنیم و بتونیم در شرایط حساس و بحرانی خودمون رو از بلایی که سرمون نازل شده، نجات بدیم
برنامههای گرافیکی که برای Subversion نوشته شدن، نسبت به git تنوع زیادی دارن و البته این مورد هم بخاطر سن بالایی که subversion داره هست.
البته در حقیقت برنامههای جالبی هم برای git با گذشت زمان نوشته می شه که برای Mac ، هماکنون برنامههای قدرتمندی هم نوشته شدن.
و در نهایت لیست چند سایتی که می شه با سیستم Git آشنا شد و باهاش کار کرد، به شرح زیر هست:
Gitref.org
Progit.org
book.git-scm.com
http://www.ava.co.uk/support/faq/git-version-control/video-101-getting-started-with-git.aspx

آخرین نظرات