گاهی اوقات ایجاد یک فایل آرشیو از یک مخزن Git میتواند مفید باشد. یک فایل آرشیو چندین فایل را در یک فایل واحد قرار میدهد. سپس آن را میتوان برای باز تولید فایلهای جداگانه استخراج کرد. Git در حفظ تاریخچه و همکاری تیمی فوق العاده قدرتمند است. با این حال فایل های آرشیو، سربار metadata های Git را حذف میکنند و توزیع آنها به کاربران دیگر سادهتر است.
Git archive چه کاری انجام میدهد؟
git archive
یک دستور خط فرمان Git است که یک فایل آرشیو از قسمتهای مختلف Git مانند commit ها، شاخه ها یا درخت ها ایجاد میکند. دستور git archive
ورودیهایی می پذیرد که نوع خروجی را تغییر میدهد.
مثالهایی برای خروجی گرفتن از Git
یکی از مثالهای بسیار ساده git archive به شرح زیر است:
git archive --format=tar HEAD
این دستور پس از اجرا، آرشیوی از HEAD مخزن ایجاد میکند. به طور پیشفرض، git archive
خروجی آرشیو را به stdout
موقت منتقل میکند که باید این خروجی را در یک فایل دائمی ذخیره کنیم. با استفاده از گزینه output در git archive
میتوان یک فایل دائمی تعیین کرد یا این که با استفاده از سیستمعامل مسیر stdout را تغییر داد.
git archive --output=./example_repo_archive.tar --format=tar HEAD
مثال بالا یک آرشیو جدید ایجاد کرده و آن را در فایل example_repo_archive.tar
ذخیره میکند. مثالهای قبلی هر دو خروجی آرشیو فشرده نشده را ایجاد کردهاند. این با گزینه format=tar--
مشخص میشود. گزینه ی format قالب های محبوب فایل فشرده zip
و tar.gz
را می پذیرد. با انتخاب یکی از گزینههای format
، یک آرشیو فشرده تولید میشود. اگر یک مقدار format
تعیین نشود، از هر قالبی که در گزینه output--
مشخص شده استفاده میشود.
git archive --output=./example_repo_archive.tar.gz –-format=tar HEAD ./build
برای ایجاد آرشیو از یک بخش مخزن باید مسیر آن بخش را در انتهای دستور اضافه کرد. در مثال بالا build/.
مقدار یک آرگومان از نوع مسیر برای دستور archive است. این دستور، یک آرشیو شامل فایلهای ذخیره شده در داخل پوشه ی build/. را ایجاد خواهد کرد.
Options
مثالهای قبلی، برخی از متداولترین موارد استفاده از آرشیو Git را نشان دادند. موارد زیر گزینههای گسترده تری هستند که میتوانید از آنها برای آرشیو Git استفاده کنید.
--prefix=<prefix>/
گزینه ی prefix
یک مسیر برای هر فایل در یک آرشیو را تنظیم میکند. این میتواند برای اطمینان از استخراج محتویات آرشیو در یک فضای نام منحصربهفرد مفید باشد.
--remote=<repo>
گزینه ی remote
آدرس یک مخزن remote را می پذیرد. اگر از گزینه ی remote
استفاده شود، git-archive
، مخزن آدرس داده شده در remote
را میگیرد و اگر روی remote
موجود باشد، یک آرشیو از منبع مشخص در remote
اصلی ایجاد میکند.
پیکربندی
چند مقدار کلی پیکربندی Git وجود دارد که به آنها خواهیم پرداخت. این مقادیر را میتوان با استفاده از دستور.<
git config <link to git config
تنظیم کرد.
tar.<format>.command
این گزینه پیکربندی، اجازه تعیین shell command سفارشی را میدهد، که خروجی git-archive از طریق آن اجرا خواهد شد. این شبیه به حذف گزینه ی output--
و لوله کشی خروجی از آرشیو Git به یک ابزار سفارشی است. این امر آرشیو ثابت سفارشی را پس از پردازش فعال میکند.
tar.<format>.command
این دستور به مشتریان remote اجازه میدهد تا آرشیوهایی با فرمت دلخواه خود را به دست آورند.
نتیجه
آرشیو Git ابزاری مفید، برای ایجاد بسته های قابل توزیع مخازن Git است. آرشیو Git میتواند بخشهای خاصی از مخزن را هدف قرار دهد و تنها محتوای آن بخش را آرشیو کند. آرشیو Git دارای چندین قالب خروجی است که میتوان از آنها برای فشردهسازی استفاده کرد.