
تا پیش از وجود جیت، بسیاری از توسعهدهندگان هسته لینوکس از نرمافزار بیتکیپر3استفاده میکردند که با تجاری شدن این نرمافزار، هیچکدام از کنترلکنندههای کد منبع، ویژگیهای بیتکیپر را نداشتند. بههمین دلیل، در نامهای که هفتم آوریل 2005 در گروه خبری هسته لینوکس منتشر کرد، توسعه آن را اعلام کرد.
از میان نرمافزارهای مشهوری که از جیت استفاده میکنند، میتوان به هسته سیستم عامل لینوکس، زبان برنامهنویسی پرل4، نرمافزار سامبا برای تبادل اطلاعات میان شبکههای مایکروسافتی و لینوکسی، ابزار کیوت5 و سیستمعامل تلفن همراه آندروید نام برد. در حال حاضر، توسعه نرمافزاری جیت را جونیوهامانو بر عهده دارد.
لینوس معتقد است که ریشه نام جیت، در اصطلاح عامیانه انگلیسی بریتانیایی به انسان کودن یا ناخوشایند اشاره دارد و بههمین دلیل آن را انتخاب کرده است. البته در ویکی همین پروژه، معادلهای دیگری برای آن پیشنهاد دادهاند و آن را مخفف سرنام «رهیاب اطلاعات جهانی6» معرفی کردهاند.
ویژگیها
تروالدز در توسعه نرمافزارهای توزیعشده تجربهای طولانی داشت. دانش زیاد او از سیستمهای فایل، و نیازی که برای تولید سیستم کاری در زمان کوتاه وجود داشت، منجر به تولید جیت گشت. از میان ویژگیهای جیت، میتوان به موارد زیر اشاره کرد:
کتابخانه منعطف: هر دایرکتوری که جیت در آن تعریف شده باشد، بهکتابخانهمنعطفی تبدیل میشود که قابلیت تولید تاریخچه برای هر فایل و رهگیری توسعه را داراست و اصلا به دسترسیهای تحت شبکه یا سرور مرکزی وابسته نیست.
توسعه غیرخطی: بهکمک جیت میتوان نسبت به ایجاد شاخههای جدید، یا ادغام آنها اقدام کرد و ابزارهای خاصی برای پیمایش در تاریخ هر فایل وجود دارد.
توسعه توزیعشده: درست همانند نرمافزارهای مشهور کنترل نسخه، جیت نیز به هر توسعه دهنده، یک کپی محلی از دادهها میدهد و تغییرات از یک کتابخانه به کتابخانه دیگر اعمال میشود.
انتشار کتابخانه به فرمتهای مختلف: کتابخانهها را میتوان با کمک پروتکلهای http، ftp، rsync و یا پروتکل اختصاصی جیت برمبنای ssh منتقل کرد. جیت همچنین دارای شبیهساز سرور CVS است و مشتریان CVS و بسیاری از نرمافزارهای توسعه7 میتوانند به آن وصل شوند.
تاریخچه معتبر: سیستم تاریخچه جیت از الگوریتمی استفاده میکند که در آن، تنها تغییر آخرین نسخه فایل مجاز است و پس از آنکه یک نسخه نهایی شد، دیگر امکان تغییر نسخههای قبلی وجود ندارد و سیستم آن را اعلام میکند.
پیادهسازی
جیت درست همانند بیتکیپر، از سرور متمرکز استفاده نمیکند. تروالدز در این مورد میگوید: «جیت از بسیاری جهات شبیه به یک سیستم فایل عمل میکند، محتوای آن قابل آدرسدهی است و قابلیت نسخهبندی را هم دارد، اما من نمیخواستم فقط یک سیستم مدیریت کد منبع، بهروش سنتی بسازم.» (هرچند که هماکنون جیت تمام ویژگیهای سیستم مدیریت کد منبع را در خود دارد.)
جیت همچنین دو ساختمان داده دارد، نخست، اندیسی ناپایدار است که اطلاعاتی در مورد دایرکتوری جاری و بازبینی بعدی فایل را در خود نگهمیدارد و دوم، اندیسی پایدار است که چهار شیء را در پایگاه خود نگاه میدارد:
– شیء بلاب9 که محتویات فایل در آن است. فایلهای بلاب، نه اسم دارند، نه تاریخ و نه هیچ فراداده دیگری.
– شیء درخت که برابر با همان دایرکتوری است و لیستی از اسامی فایلها، و اسم بلاب یا درختی که در آن فایلها است، را شامل میشود.
– شیء انجام9 که شیءهای درخت را بههمدیگر در تاریخچه پیوند میدهد و شامل اسم شیء درخت، زمان ثبت و گزارش و بهتعداد صفر یا بیشتر نامهای درختهای بالاتر را در خود ذخیره میکند.
– شیء توصیفگر که شامل مرجعی به شیای دیگر است که فرادادهها را در خود نگهمیدارد. اخیرا برای ذخیره امضای دیجیتال هر فایل از آن استفاده میشود.
تمام این اشیا با کمک الگوریتم 1SHA- رمزبندی میشوند و نتیجه حاصل را بهعنوان اسم فایل درنظر میگیرند. هر نسخه از فایل در یک شیء بلاب مجزا ذخیره میشود و ارتباط بین بلابها از طریق شیء درختها انجام میشود. این اقدام باعث میشود که رشد فضای مصرفی دیسک سخت نرخ سریعتری بهخود بگیرد و بههمین دلیل، تمام اشیای بلاب با کمک الگوریتم zlib فشرده میشوند.
قابلیت حمل
جیت در ابتدا برای لینوکس نوشتهشد، اما میتواند روی سیستمهای دیگر یونیکسی، چون بیاسدی، سولاریس و داروین هم نصب شود. جیت روی سیستمهای مبتنی بر پوزیکس10 بسیار سریع است. همچنین، میتوان جیت را روی ویندوز نصب کرد.
منابع:
http://en.wikipedia.org/wiki/Git_(software)
پینوشتها
Git.1
Linus Torvalds.2
BitKeeper.3
Perl.4
Qt.5
Global Information Tracker.6
IDE.7
BLOB.8
Commit.9
POSIX.10
در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
عضو دفتر حفظ و نشر آثار رهبر انقلاب در گفتگو با جام جم آنلاین مطرح کرد