تاریخچه گیت
تاریخچه گیت، موضوعی است که قبل از آشنایی با این نرم افزار باید دانست تا بتوان بهتر این نرم افزار را در آموزش گیت آموخت و استفاده کرد. در سال 2005، لینوکس توروالدز برای توسعه هسته سیستم عامل متن باز خود، یعنی لینوکس، نیازمند یک سیستم، برای کنترل نسخههای جدیدتر و بروزتر لینوکس شد.
به همین جهت توروالدز خود دست به اقدام زد و در ظرف مدت تنها یک هفته، یک سیستم انقلابی و شگفت انگیز برای این کار خلق کرد و اقدامی بزرگ در تاریخچه گیت انجام داد. این نرم افزار بعد از حدود 17 سال پس از ساخت آن، هنوز حرفهای فراوانی برای گفتن دارد و افرادی زیادی هنوز، قبل از شروع برنامه نویسی، آموزش git را می بینند تا بتوانند از آن استفاده کنند و در توسعه نرم افزارهای خود از آن بهره ببرند.
این نرم افزار دارای کارایی بسیار عالی و مناسبی بود. تا این حد که بعد از گذشت مدت زیادی از ساخت آن، هنوز استارت آپها و شرکتهای حوزه فناوری بزرگ و کوچکی همانند گوگل و مایکروسافت از آن استفاده میکنند. در این میان شرکتهای مختلفی، خود دست به کار شده و از Git برای کنترل و توسعه نرمافزارها استفاده میکنند و بعضی نیز به شرکتهایی که ارائه دهنده خدمات Git این وظیفه را محول میکنند. شرکتهایی مانند: GitHub، Bitbucket، Gitlab از جمله این شرکتها هستند.
بزرگترین این شرکتها گیت هاب است. این شرکت اکنون دارای 40 میلیون توسعه دهنده ثبت شده است که فعالیتهای توسعه خود را توسط برنامه ارائه شده از این شرکت انجام میدهند. این شرکت در سال 2018 توسط مایکروسافت به قیمت 7.5 میلیارد دلار خریداری شد.
جذابیت گیت برای استفاده
گیت و نرمافزارهای رقیب آن، گاهی به عنوان یک سیستم کنترل نسخه(VCS) ، گاهی یک سیستم مدیریت کد منبع (SCM) و گاهی یک سیستم کنترل تجدید نظر (RCS) شناخته میشوند. اما سازنده این سیستم، یعنی توروالدز فکر میکرد زندگی برای تمایز بین تعاریف مختلف بسیار کوتاه است و اهمیت به آن نمیداد؛ ما نیز به نظر سازنده این سیستم احترام میگذاریم و تفاوتی قائل نمیشویم.
یکی از نکات مثبت و جذابیتهای Git این است که همانند لینوکس، متن باز بوده و همین موضوع آموزش کار با گیت هاب را مفیدتر و سودمندتر میکند. البته باید گفت که نرمافزارهای مشابه دیگری که متن باز هستند نیز وجود دارد؛ مانند Concurrent Versions System (CVS) ، Subversion (SVN) ، Mercurial، Monotone که متن باز بوده و هستند. اما باید گفت متن باز بودن تنها برتری برای این نرم افزار نیست.
با نگاهی به تاریخچه گیت و استفاده از این نرم افزار بین مصرف کنندگان، میتوان فهمید این نرم افزار بسیار محبوب بوده است، به طوری که در نظرسنجی از توسعه دهندگان نرم افزار که توسط Stack Overflow صورت گرفت؛ نشان داد که 88.4 % از پاسخ دهندگان به این نظر سنجی در سال 2018 از Git استفاده میکردند و به یادگیری و آموزش گیت و گیت هاب پرداخته اند که از میزان 69.3% که در سال 2015 مشخص شده بود، استفاده بالاتری را نشان میداد. نزدیکترین رقیب به گیت، Subversion بود که 16.6% درصد از پاسخ دهندگان به آن رای داده بودند که نسبت به سال 2015 (36.9%) کاهش بسیاری داشته است.
قبل از سیستمهای کنترل نسخه(vcs) توسعه دهندگان چه میکردند؟
اگر پا را از تاریخچه گیت نیز عقبتر بگذاریم، می بینیم قبل از اینکه سیستمهای کنترل نسخه(vcs) به عرصه ظهور بگذارند. توسعه دهندگان نرمافزار راه کارآمدی برای همکاری و آگاهی بقیه از کدهای خود نداشتند. ممکن بود توسعه دهندگانی که با یکدیگر بر روی یک کد کار می کردند. در صورت عدم هماهنگی قسمتها و وظایف یکسانی انجام داده و در نتیجه وقت و نیروی خود را هدر دهند. همین موضوع باعث میشد که توسعه دهندگان نرمافزار زمانی زیادی را برای آگاهی یکدیگر و هماهنگی با هم مصرف کنند.
آنها برای ارسال کدهای خود به یکدیگر و اشتراک گذاری آن از ابزارهای ذخیره سازی اطلاعات مانند فلاپی دیسکها استفاده میکردند. این کار ممکن بود در گروههای کوچک جواب دهد اما در گروههای بزرگ این راهکار به هیچ وجه مناسب نبود.
این مشکل منجر به این شد که یک سیستم کنترل نسخه(VCS) که توسعه دهندگان نرم افزار بتوانند از آن استفاده کنند و نسخهها و کدهای یک پروژه را در اختیار هم قرار دهند ایجاد شود.
گیت (Git) در آغاز
تا آوریل سال 2005 لینوکس توروالدز برای مدیریت توسعه هسته لینوکس که یونیکس نام داشت، از گروه بزرگی از داوطلبان استفاده میکرد. توروالدز برای مدیریت این موضوع از نرم افزار بیت میکر(BitKeeper) بهره میبرد. این سیستم ابزاری خصوصی و پولی بود که به توسعه دهندگان لینوکس این اجازه داده شده بود تا به صورت رایگان از آن استفاده کنند. این روند ادامه دار بود تا زمانی که تعدادی از توسعه دهندگان لینوکس با صاحبان این شرکت به مشکل خوردند. در نتیجه استفاده رایگان از این نرم افزار لغو شد.
برای یافتن یک راهحل برای این مشکل، توروالدز مدتی کار را تعطیل کرد و گروه خود را به تعطیلات فرستاد. توروالدز از این که دیگر نمیتوانست از BK استفاده کند بسیار ناراحت بود. او از کار با این سیستم بسیار راضی بود اما متاسفانه دیگر نمیتوانست از این سیستم استفاده کند. نتیجه این تعطیلی، ساخته شدن Git توسط توروالدز و شروعی بر تاریخچه گیت بود. برای نامگذاری این سیستم به گیت چند نظریه وجود دارد. اما محتملترین آنها این است که توروالدز برای نامگذاری این نرمافزار از آهنگ مورد علاقهی از بیتلز به نام Im So Tired الهام گرفته بود و نام آن را Git گذاشت.
توروالدز در این باره میگوید:« مسخره بود که همهی پروژههایم را به نام خودم نامگذاری کنم و برای همین این پروژه گیت نامیده شد. گیت یک اصطلاح عامیانه بریتانیای به معنای فرد احمق است.»
سیستم کنترل توزیع(vcs) مبتنی بر کلاینت سرور چگونه بودند؟
قبل از اینکه تاریخچه گیت و نرمافزارهای مشابه آن شروع شود، به طور سنتی، کنترل و توسعهی نسخههای یک نرمافزار، با استفاده از یک کلاینت سرور صورت میگرفت. در این صورت مخازن کد بر روی یک سرور مرکزی قرار میگرفتند. سیستم نسخههای همزمان (CVS)، برانداز و کنترل نسخه بنیاد تیم(TFVC) همگی نمونههایی از سیستمهای منشا گرفته شده از کلاینت سرور هستند.
یک VCS مبتنی بر کلاینت سرور، در محیط یک شرکت به خوبی عمل میکند. کاربران همگی در ساختمان قرار داشته و با اتصال به سرور مرکزی، کار خود را به خوبی انجام می دادند. اما زمانی که قرار باشد صدها و یا هزاران توسعه دهنده به طور همزمان در مکانهای مختلف دنیا، این کار را انجام دهند. دیگر یک سرور در یک ساختمان جوابگو نبود.
هدف از ساخت گیت چه بود؟
VCS ارائه شده توسط BitKeeper ، پاسخ و راهحلی برای مشکل VCS مبتنی بر کلاینت سرور بود. بعدها Git نیز بر پایه و اساس همین نرم افزار ساخته شد و تاریخچه گیت را شروع کرد. با استفاده از VCS توزیع شده، برخلاف نسخه سنتی، که کدها فقط روی سرور قرار داشت. یک نسخه از کدها بر روی رایانه مستقل هر توسعه دهنده قرار میگرفت و تغییرات در کدها را مشاهده کرده و کار خود را در هر جای دنیا به صورت مستقل انجام دهد.
یک اشکال دیگر در VCS کلاینت سرور به ویژه برای پروژههای منبع باز بود، مشکل این بود که هرکسی میزبانی سرور را داشته باشد مالک آن است و سایر افراد قابلیت دسترسی به آن را نخواهند داشت. اما با استفاده از VCS توزیع شده مانند گیت، هیچ مخزن یا سرور اصلی وجود ندارد، بلکه تنها تعداد زیادی کلون وجود دارد و هیچ کس نمیتواند ادعای مالکیت برای کدها را داشته باشد.
هدف دیگر از این کار، کاهش مشکلات ناشی از ادغام شاخههای جدید در کد منبع اصلی یا درخت (دایرکتوری اصلی که سلسله مراتب کد منبع اصلی را تشکیل میدهد) بود. رمز موفقیت این کار، اختصاص یک هش رمزنگاری شده( یک عدد منحصر به فرد) برای فهرست کردن هر شی بود.
استفاده از هشها تازگی نداشت اما گیت آن را به سطوح جدیدی از کاربرد ارتقا داد. گیت نه تنها این موضوع را در هر نسخه جدید محتوای فایل اعمال کرد. بلکه از آنها برای شناسایی نحوه ارتباط آنها با یکدیگر استفاده کرد. این یعنی که با استفاده از گیت میتوان به سرعت تغییرات بین نسخه جدید و قدیمی شاخهها و کد منبع را متوجه شد. حتی میتوان کل درختهای کد را به مقایسه دو فهرست هش شناسایی کرد. این موضوع که امکان مقایسه نسخه و رفع هرگونه مشکل بین کد منبع اصلی و منبع اقدام شده با کدهای جدید را مقایسه کرد، حرکتی نو و انقلابی بود.
کاربرد گیت چیست؟
گیت را میتوان یک سیستم کنترل نسخه توزیع رایگان و منبع باز دانست که برای مدیریت همه چیز، از پروژههای کوچک تا بسیار بزرگ با سرعت و کارایی بسیار بالا امکان استفاده دارد.
گیت بر اساس توسعه توزیع شده نرم افزار است که در آن بیش از یک توسعه دهنده ممکن است به کد منبع یک برنامه خاص دسترسی داشته باشد. میتوانند تغییراتی را در آن ایجاد کنند که ممکن است توسط توسعه دهندگان دیگر مشاهده شود.
هر پروژه کاری در گیت، یک مخزن کامل با تاریخچه کامل و قابل ردیابی است که به صورت مستقل از دسترسی به شبکه یا سروری مرکزی میباشد.
گیت به تیمی از افراد اجازه میدهد تا با هم همکاری کرده و همه از فایلها و کدهای یک پروژه برای توسعه آن استفاده کنند. با این کار افراد دچار سردرگمی نشده و میتواند به راحتی از کار دیگر توسعه دهندگان آگهی کسب کنند.
ویژگیهای گیت چیست؟
- پشتیبانی قوی از توسعه غیر خطی
- توسعه توزیع شده
- سازگاری با سیستم/ پروتکلهای موجود
- مدیریت کارآمد پروژههای بزرگ
- تضمین دادهها
- جمع آوری خودکار دادههای ناکارآمد
- بسته بندی اشیاء دورهای
تعیین مدیر برای Git
در بررسی تاریخچه گیت میبینم بعد از ساخته شدن Git توسط توروالدز، برای بررسی و مشارکت در توسعه آن، در اختیار جامعه برنامه نویسان قرار گرفت. در این میان یکی از توسعه دهندگان به نام جونیور هامانو (Junio Hamano) بود که به طور خاص درخشید. او آنقدر در کار خود موفق بود که که پس از چند ماه توروالدز مدیریت Git را به هامانو دارد و خود بر روی توسعه و نگهداری از لینوکس تمرکز کرد.
توروالدز درباره هومونو میگوید:« او در مورد کدها و ویژگیهایشان، سلیقه خوب، واضح و روشنی داشت، اما توصیف و توضیح این موضوع بسیار دشوار است.» در ادامه میگوید:« هومونو باید واقعا تمام اعتبار گیت را به خود اختصاص دهد. من آن را شروع کردم و اعتبار ساخت برای من است، اما به عنوان یک پروژه، هومونو شخصی است که آن را حفظ کرده و آن را به ابزاری بسیار دلپذیر برای استفاده تبدیل کرده است.»
واضح است که توروالدز انتخاب خوبی داشته است. زیرا هنوز بعد از 17 سال از گذشت آن موضوع، هامانو به عنوان یک دیکتاتور خیرخواه شناخته میشود؛ مدیریت Git را برعهده دارد و به خوبی آن را اداره میکند.
توسعه امکانات Git
بسیاری از افراد و توسعه دهندگانی که در روزهای نخستین شروع تاریخچه گیت در توسعه و نگهداری از آن کمک میکردند. کماکان به کار خود ادامه میدهد. اما اکنون بسیاری از این افراد توسط شرکتهای وابسته به Git که برای توسعه و نگهداری آن بوجود آمدهاند استخدام شدهاند.
یکی از این توسعه دهندگان که نقش بسیاری در توسعه گیت داشت، جف کینگ (Jeff King) نام دارد. او موفق شد اولین رفع خطای خود را از این سیستم، در سال 2006 انجام داد. در هنگامی که حال انتقال مخازن کد خود از CVS به Git منتقل بود، باگی را در سیستم شناسایی و رفع کرد. از سال 2011 در شرکت GitHub استخدام شده است و در توسعه Git در حال کمک به این شرکت است.
کینگ کارهای مثال زدنی دو همکار خود را در تاریخچه گیت بیان میکند که هر دو از سال 2006 کار خود را در گیت شروع کردند و به گسترش بیشتر گیت فراتر از جامعه لینوکس کمکهای شایانی کردند. شان پیرس با با انجام پروژه خود به نام JGit که گیت را به محیط سیستم جاوا و اندروید متصل کرد و شیندلین نیز با انجام پروژه خود که باعث شد. تا دروازههای گیت را بر روی ویندوز باز کند؛ باعث گسترش بیشتر گیت در بین کاربران شدند. آنها پس از انجام پروژههای خود به ترتیب در گوگل و مایکروسافت مشغول به کار شدند. شیندرلین همچنان برای ویندوز در حال کار برای گسترش و بهبود گیت برای ویندوز است.
تاسیس GitHub
با ادامه در تاریخچه گیت، میتوانیم هر چه بیشتر با گیت هاب آشنا شویم. تام پترسون ورنر(Tom Preston-Werner) در حین کار با استارت آی پی به نام پاورست، با Git آشنا شد. بعد از مشاهده گیت و بررسی آن، تام به موضوعی پی برد. او فهمید که برای گیت، هیچ گزینهی مناسبی برای میزبانی از مخازن کد وجود نداشت. همین موضوع مانع بزرگی برای سهولت کار با گیت بود. همچنین هیچ رابط وب مناسبی و مدرنی برای گیت وجود نداشت. پستام به عنوان یک توسعه دهنده وب، تصمیم گرفت که برای بهبود وضعیت، میزبانی مخازن گیت را تسهیل کرده و امکان ارتباط و همکاری با توسعه دهندگان را تقویت کند. کاری که گیت انجام داد، اما آن را تسهیل نکرد.
تام پترسون با همکاری کریس و استرس(Chris Wanstrath) ، اسکات چاکن(Scott Chacon) و پی جی هیت (P.J. Hyett to) در اواخر سال 2007 توسعه GitHub را شروع کرد. گیت هاب از طریق آسان کردن استفاده از گیت و گسترش آن کمکهای بسیار بزرگی به آن کرد و آموزش گیت و گیت هاب را برای استفاده بیشتر گسترش داد. از آنجا که بنیانگذاران گیت هاب، توسعه دهندگان زبان Ruby نیز بودند و گیت هاب توسط زبان Ruby نوشته شده بود. رفته رفته این زبان در جامعه شهرت یافت و بسیار مورد استفاده قرار گرفت و یادگیری و آموزش گیت هاب نیز گسترش پیدا کرد.
در سال 2014 به دلایل اتهاماتی که بر علیه پترسون برای استفاده از روشهای نامناسب مدیریت بر گیت هاب بود. او از سمت خود استعفا داد. امروز، طبق اطلاعات گیت هاب، حدود بیش از 40 میلیون توسعه دهنده از این نرم افزار استفاده میکنند. این موضوع موفقیت گیت هاب را در برابر رقیبان خود نشان میدهد.
برای مشاهده آموزش گیت به این بخش از سایت مراجعه کنید.
پذیرش و استفاده گیت در گوگل
بسیار از شرکتها از خدمات شرکتهایی نظیر گیت لب ، گیت هاب و بی باکت استفاده میکنند. اما بعضی شرکتها بزرگ نیز Git مخصوص به خود را دارند. این شرکتها با دادن تغییرات سفارشی بر روی گیت، آن را به صورت داخلی میزبانی میکنند؛ به همین جهت از دید عموم مردم خارج است و قابل دسترسی نیست.
با بررسی تاریخچه گیت میبینیم گه اولین شرکت بزرگی که از گیت استفاده کرد، گوگل بود. گوگل در سال 2009 برای توسعه سیستم عامل منبع باز خود یعنی اندروید، که مبتنی بر لینوکس بود، نیازمند پلتفرمی بود تا از کمک همه توسعه دهندگان در سراسر جهان استفاده کند. در آن زمان مخازن گیت آنقدر بزرگ نبود که بتوان اینکار را انجام دهد؛ پس گوگل Repo را ساخت با استفاده از Repo که یک ابر مخزن عظیم بود به زیر مخازن گیت متصل شد. گوگل اظهار میکند که ریپو جایگزین گیت نیست، بلکه کار کردن با آن را آسانتر میکند.
پشتیبانی مایکروسافت از گیت
با توجه به خصومتی که مایکروسافت با جامعه منبع بازها داشت، بعید بود که مایکروسافت حامی گیت باشد. در سال 2001، استیو بالمر، مدیرعامل وقت مایکروسافت، حتی لینوکس را سرطان خواند. در آن زمان مایکروسافت سیستم توسعه کد(VCS) خود را داشت.
شیندرلین(Schindelin) سال ها بر روی گیت برای ویندوز کار میکرد؛ بدون اینکه کسی آگاهی داشته باشد. با تلاشهای او، زمانی که در سال 2015 وارد مایکروسافت شد، تغییرات بزرگ را در مایکروسافت رقم زد. اولین نشانههای اتفاق بزرگ زمانی بود که، مایکروسافت شروع به کمک به libgit2، کتابخانه بزرگی از منابع توسعه گیت برای سرعت بخشیدن به برنامه های گیت کرد. و سپس مایکروسافت آن را در ابزارهای توسعه دهنده خود تعبیه کرد. ادوارد تامسون که در آن زمان عضوی از تیم مایکروسافت بود، همچنان نگهدارند libgit2 است.
در سال 2013، مایکروسافت با اعلام پشتیبانی از گیت، از ابزارهای توسعه محیط ویژوال استودیو و اینکه میزبانی گیت از طریق مجموعه ابزارها و خدمات خود را ارائه میدهد، تمام دنیای فناوری را شوکه کرد. مایکروسافت گیت را جایگزین HFCS خود کرد. برای اطلاعات بیشتر به سایت گیت مراجعه کنید.
حتی قابل توجه تر از آن، از سال 2014، استانداردسازی تدریجی مایکروسافت در گیت برای توسعه نرم افزارهای داخلی خودروی داد؛ که از طریق ابتکار سیستم مهندسی واحد (1ES) بود. این اتفاق تحت مدیریت ساتیا نادلا(Satya Nadella) ، مدیر عامل جدید منبع باز روی داد. این اتفاق زمانی روی داد که تیم Azure DevOps شروع به استفاده از سرویسهای گیت به عنوان مخازن کد منبع خود در سال 2015 کردند.
در سال 2017، همه تلاش شرکت برای توسعه نرم افزار ویندوز به گیتی که توسط Azure مدیریت میشد، متمرکز شده بود. با این اتفاق، بزرگترین مخزن گیت جهان به وجود آمد. این اتفاق شامل تعدیلهای قابل توجهی برای کمک به مقیاس گیت بود. به جای دانلود کل مخزن 300 گیگابایتی در هر دستگاه مشتری، Virtual File System for Git که به صورت منبع باز است. تضمین میکند که فقط فایلهای مناسب در رایانه هر مهندس دانلود شود.
فروش
زمانی که در سال 2018 اعلام شد که مایکروسافت، سهام گیت هاب را به قیمت 7.5 میلیارد خریداری میکند، غافلگیری بزرگی رخ داد. مایکروسافت از سال 2014، زمانی که پلتفرم توسعه دهندگان منبع باز بود با گیت هاب درگیر بود. با توجه به اطلاعات گیت هاب، دو فناوری با بیشترین مشارکت در گیت هاب، دو محصول مایکروسافت هستند. بزرگترین مشارکت کننده در گیت هاب نیز مایکروسافت میباشد. مایکروسافت توسعه داخلی خود را نیز بر اساس گیت استاندارد کرده بود.شما میتوانید برای آموزش گیت و سایر پکیح های آموزشی به بخش دوره های آموزشی سایت امیر رسولی مراجعه کنید.
درباره مدیریت
من عاشق برنامه نویسی و تکنولوژی هستم و 10 سال در این زمینه مشغول به فعالیت هستم و پروژه های مختلفی رو در زمینه های سایت و شبکه های کامپیوتری و امنیت اطلاعات انجام دادم و در حال حاضر مدیر و موسس شرکت انفورماتیک طراحی پایا آنوش هستم که در زمینه ی طراحی سایت و سیستم های هوشمند و برقراری امنیت اطلاعات سیستم های کامپیوتری و همچنین آموزش فعالیت دارد و میخواهم هر آنچه که در طی این 10 سال یاد گرفتم و تجربه کردم رو با شما به اشتراک بگذارم.
نوشته های بیشتر از مدیریت
دیدگاهتان را بنویسید