Git LFS چیست؟ راهنمای کامل Git large file storage
Git LFS مخفف عبارت Git large file storage است. این ابزار، برای ذخیره و مدیریت فایلهای بزرگ (large file) کاربرد دارد. در این مطلب قصد داریم تا همهچیز را در رابطه با Lfs files در گیت شرح دهیم. پس اگر میخواهید بدانید که Git LFS چیست، چه کاربردی دارد و چه زمانی باید از آن استفاده کنیم؛ مطلب زیر کمککننده خواهد بود.
Git LFS چیست؟
پیش از هر چیز، خوب است تا تعریف دقیقی از Git LFS ارائه دهیم. همانطور که در مقدمهی مطلب اشاره شد، این اصطلاح برگرفته از سرواژهی عبارت Git large file storage به معنای «مدیریت ذخیرهسازی فایلهای بزرگ در گیت» است.
بهطور کلی، در گیت دادههای باینری در پروژه ابتدا فشردهسازی شده و سپس ذخیره میشود. اگر تعداد این دادهها حجیم و زیاد باشد، این روش جوابگو نیست. به عبارت دیگر، دادههای باینری عظیم را نمیتوان با تکنیک فشردهسازی و ذخیره کردن، نگهداری کرد. اینجاست که Git LFS کمک کننده است.
در حقیقت Git LFS به صورت یک افزونه، کاربرد دارد. به این شکل که وقتی یک فایل بزرگ دارید، میتوانید آن را در یک سرور راه دور و مجزا از Repository گیت ذخیره کرده و تنها اشارهگرهای این فایل را در Repository گیت قرار دهید.
این موضوع را زمانی احساس میکنید که فایلهایی با اندازهی بیشتر از ۱۰۰ مگابایت داشته باشید. شما برای فایلهای تا اندازهی ۵۰ مگا بایت میتوانید از دستور Git push برای قرار دادن آن در ریپازیتوری استفاده کنید.
* نکته: پیش از آموزش Git LFS، ضروری است تا بدانید Git در برنامه نویسی چیست، گیت هاب چیست و با دستورهای آن آشنایی لازم را داشته باشید.
پیشنهاد مطالعه: نکات و ترفندهای گیت – بررسی 31 ترفند کابردی Git
Git LFS چگونه کار میکند؟
همانطور که در بخش «Git LFS چیست» بیان کردیم، در این افزونه، بهجای آنکه دادههای باینری را در مخزن ذخیره کنیم، از ذخیرهسازی اشارهگرها استفاده میکنیم. اشارهگرها تنها به موقعیت فایلها ارجاع میکنند و فایل بزرگ را در خود قرار نمیدهند.
پس بهجای آنکه Large files را مستقیماً در مخزن گیت قرار بدهیم، تنها از یک فایل اشارهگر (که بسیار سبکتر و کمحجمتر است) استفاده میکنیم. توجه داشته باشید که در این وضعیت، خودِ فایلهای حجیم روی یک سرور مجزا نگهداری میشود که به آن lfs store گفته میشود.
مزایای Git LFS چیست؟
با توجه به تعریف Git LFS و چگونگی کارکرد آن،دو مزیت واضح را میتوانیم برای این افزونه برشماریم. مزیت اول این است که فضای کار با git برای فایلهای حجیم، بسیار سبکتر میشود. چون همانطور که بیان شد، تنها اشارهگرها در Git repository ذخیره خواهند شد.
مزیت دوم Git LFS این است که امکان نسخهسازی برای فایلهای بزرگ فراهم میشود. اگر مطالعه کرده باشید که گیت چیست و چه کاربردی دارد، متوجه خواهید شد که نسخهسازی نرم افزار از مهمترین کاربردها و اهداف سیستم گیت است. Git LFS این هدف را برای فایلهای حجیم و بزرگ امکانپذیر میکند.
ضرورت استفاده از Git LFS چیست؟
توجه داشته باشید که مدیریت پروژه با گیت براساس نسخههای مختلف برنامه انجام میشود. یعنی اینکه شما تاریخچهای از تمام تغییرات لحاظ شده در پروژه (نرم افزار) را روی رایانهی خود خواهید داشت. از جنبهی دیگر قضیه، این بدان معناست که کوچکترین تغییر در فایل پروژه، آن را به عنوان یک نسخهی جدید نگهداری میکند.
حال اگر پروژه عظیم باشد، چه خواهد شد؟ آیا میتوانید تصور کنید با ذخیرهسازی نسخههای مختلف از نرم افزار، مخازن به چه ظرفیتی میرسند؟ باید گفت که علاوه بر حجم بالای پروژه در نسخههای متعدد، سبب میشود تا دریافت فایل از مخزن یا کلون کردن یک مخزن نیز زمان زیادی را بگیرد.
این است که اگر در هنگام کار با git، سروکارتان به فایلهای حجیم میرسد، برای مدیریت آن باید از Git LFS استفاده کنید. حتی اگر تمایلی به استفاده از Lfs GitHub ندارید، باید جایگزینهای دیگر آن را بیابید.
معایب و مشکلات Git LFS
تا بهاینجا با مزایا و محاسن Git LFS آشنا شدید. اما باید بدانید این ابزار در عین خوبیهایی که ارائه میدهد، مشکلاتی نیز دارد که کاربران را ناچار به یافتن راههای جایگزین مشابه خواهد کرد. در این بخش، با معایب Git LFS آشنا میشوید.
راهاندازی Git LFS زمانبر است
اگر روند کار Lfs objects را بدانید، متوجه خواهید شد که کار با این ابزار زمانبر است. شما میبایست این افزونه را روی سرور و ایستگاه کاری خود نصب داشته باشید. این روند نصب، زمانبر است. همچنین بعد از نصب Lfs objects، شما کنترل کمی روی آن افزونه خواهید داشت.
Git LFS نیاز به نگهداری دارد
وقتی تصمیم میگیرید تا از Git LFS استفاده کنید، باید آن را برای هر ریپازیتوری به کار بگیرید. سپس میبایست به LFS بگویید تا یک نوع فایل را ردیابی کند. اطلاعات این ردیابی باید در مخزن نگهداری شود. این فرآیند، بهخصوص برای افرادی که آشنایی کمی با دستورات git دارند، سردرگمکننده و دشوار خواهد بود.
افزونه Git LFS برای کارهای هنری و طراحی، ایدهآل نیست
توجه داشته باشید که Git LFS برای توسعهدهندگان نرم افزار، بسیار کاربردی و مهم است. اما برای کارهای هنری، کارایی لازم را ندارد. دلایل این موضوع، در فهرست زیر نشان داده شده است.
- Git LFS را نمیتوان با نرم افزارهای محبوب در زمینهی طراحی بهکار برد.
- Git LFS ابزار خط فرمان است. پس برای کار با آن، باید دستورات را یاد بگیرید. این در حالی است که بسیاری از افرادی که با طراحی سروکار دارند، میانهای با دستورات خط فرمان ندارند.
* نکته: گرچه برای کار با Git LFS ابزارهای گرافیکی نیز ایجاد شدهاند. اما باز هم به دلیل عدم ادغام با ابزارهای طراحی، در این زمینه چندان کاربردی نیستند.
- مبتنی بر خط فرمان بودن ابزار Git LFS، سبب میشود تا پیدا کردن نسخهی مناسب برای یک فایل کمی سختتر باشد.
این شرایط سبب میشوند تا Git LFS برای کاربردهای طراحی مانند توسعهی یک بازی نرم افزاری، ابزار مناسبی نباشد. بنابراین حتی رایگان بودن Git LFS نیز در این شرایط سبب میشود تا هزینههای بیشتری برایتان تراشیده شود.
پیشنهاد مطالعه: آموزش گیت در اندروید: تسلط بر گیت برای توسعه دهندگان و کاربران اندروید
معرفی چند ابزار مشابه با Git LFS
در ادامه، فهرستی از ابزارهای مشابه Git LFS را ملاحظه میکنید. تمام این ابزارها برای مدیریت فایلهای حجیم و بزرگ در گیت کاربرد دارند.
- git-annex
- git-bigfiles
- git-fat
- git-media
- git-bigstore
- git-sym
ناگفته نماند که ابزارهای معرفی شده نیز مشکلاتی دارند. به عنوان مثال تمام آنها مبتنی بر خط فرمان هستند و قابلیت ادغام با نرم افزارهای گرافیکی را ندارند. در بخش بعد، با ابزار مناسب برای رفع این مشکل آشنا خواهید شد.
Helix Core
از بهترین ابزارهایی که برای مدیریت فایلهای حجیم میتوانید استفاده کنید، Helix Core است. در واقع Helix Core از Git LFS عملکرد بسیار قویتر و قدرتمندتری دارد. دلایل این امر، در ادامه نشان داده شدهاند.
مدیریت فایلهای حجیم
Helix Core به خوبی از پس مدیریت فایلهای حجیم و بزرگ برمیآید. Helix Core افزونه نیست و یک قابلیت محسوب میشود. با کمک Helix Core شما میتوانید فایلهای حجیم خود را در کنار کد منبع ذخیره کنید.
Helix Core برای ذخیرهسازی آیتمهای مختلف (فایل، کد، تصویر، ویدیو، کتابخانه و غیره) از یک مخزن استفاده میکند. بنابراین تمام آیتمها در یک مخزن بوده و دسترسی بدان بسیار سریعتر خواهد بود.
مقیاسپذیری
ویژگی دیگر Helix Core مقیاس پذیری آن است. معماری Helix Core بهگونهای نوشته شده است که هرکاربر برای دسترسی به فایلها، به نزدیکترین سرور متصل خواهد شد. در نتیجه دسترسی به فایلها بسیار سریعتر اتفاق میافتد.
ناگفته نماند که معماری git اینطور نیست. برای دسترسی به گیت، کاربر باید به سراسر شبکه دسترسی داشته باشد تا بتواند فایلهای مورد نیاز خود را دریافت کند. این مشکل در Helix Core به خوبی برطرف شده است.
امنیت
در Helix Core شما میتوانید امنیت یک فایل را با تعریف مجوزهای دسترسی به آن و تنظیم آی پی، تعریف کنید. به عبارت دیگر، شما میتوانید تنها برای اعضای تیم و افراد محدود، امکان دسترسی به فایلها را قرار دهید.
این در حالی است که در گیت، چنین چیزی فراهم نیست. حتی اگر از مدیریت استفاده کنید، باز هم مجوزها برای کل ریپازیتوری و مخزن قابل تعریف هستند و شما نمیتوانید برای هر فایل، دسترسی مجزا تعریف کنید.
همکاری
برای آن دسته از تیمهایی که در زمینهی دیجیتال فعال هستند، Helix Core کارایی بهتری به نسبت گیت lfs دارد. وقتی که در Git LFS یک فایل را قفل میکنید، تمام فایلهای موجود در ریپازیتوری قفل میشود. بنابراین شما نمیتوانید تغییرات خود را به آن مخزن push کنید. اما در Helix Core شما تنها فایل قفل شده را تغییر نمیدهید و امکان ارسال دیگر فایلها و تغییرات وجود دارد.
چطور Git LFS را یاد بگیریم؟
برای کار با Git LFS میبایست ابتدا آموزشهای آن را دنبال کنید. شما میتوانید این آموزشها را از وبسایتهای معتبر مانند مکتب خونه دنبال کنید. در این آموزشها از صفر تا صد کار با Git LFS از نصب آن گرفته تا دستورات مهم Git LFS، پوششدهی شدهاند.
پیشنهاد مطالعه: آموزش کار با گیت فلو و همه چیز در رابطه با آن
جمعبندی
در این مطلب بیان کردیم که Git LFS چیست،چه کاربردی دارد و چطور کار میکند. چنانچه اشاره شد، شما برای مدیریت فایلهای حجیم خود در گیت، به این ابزار نیاز خواهید داشت. البته در متن مطلب، مشکلات Git LFS را برشمرده و ابزار جایگزین به منظور پوششدهی معایب Git LFS را معرفی کردیم. اگر شما نیز از کاربران حوزهی گیت و گیت هاب هستید، ضروری است تا کار با Git LFS و ابزارهای مشابه آن را بدانید.
آموزش گیت در مکتب خونه
آموزش گیت جزو آموزشهای ضروری برای توسعه دهندگان و برنامه نویسان است. این ابزار فوقالعاده، امکانات بینظیری را در خود نهاده است که برای توسعهی برنامههای نرم افزاری بسیار اهمیت دارد. برای دنبال کردن این آموزشها، شما میتوانید از دورههای آموزش گیت در آکادمی مکتب خونه استفاده کنید. مکتب خونه شما را با صفر تا صد گیت و جریان توسعهی آن، دستورات و افزونههای مهم و غیره آشنا میکند.