-a
بهجای
بستهبندی
افزایشی
اشیاء
بستهبندینشده،
همه موارد
ارجاعشده
را در یک
بسته واحد
بستهبندی
میکند.
بهویژه
هنگام
بستهبندی
مخزنی که
برای توسعه
خصوصی
استفاده
میشود
بسیار مفید
است. همراه
با
-d
استفاده
شود. این کار
اشیائی را
که
git prune جا
میگذارد،
اما
git fsck --ll --angling
بهصورت
معلق نشان
میدهد،
پاکسازی
میکند.
توجه
داشته
باشید
کاربرانی
که از
پروتکلهای
ساده (dumb protocols)
واکشی
میکنند،
برای
دریافت هر
شیء موجود
در آن، باید
کل بسته
جدید را
دریافت
کنند،
صرفنظر از
اینکه چه
تعداد
اشیاء دیگر
آن بسته را
از قبل
بهصورت
محلی داشته
باشند.
فایلهای
بسته promisor
بهصورت
جداگانه
بازبستهبندی
میشوند:
اگر
فایلهای
بستهای
وجود داشته
باشند که یک
فایل ".promisor"
مرتبط
دارند، این
فایلهای
بسته در یک
بسته
جداگانه
دیگر
بازبستهبندی
میشوند، و
یک فایل ".promisor"
خالی مربوط
به بسته
جداگانه
جدید نوشته
خواهد شد.
-A
مشابه
-a
است، مگر
اینکه
-d
استفاده
شود. در این
صورت، هر
شیء
غیرقابل
دسترس در
بسته قبلی
بهجای
باقی ماندن
در بسته
قدیمی، به
اشیاء سست و
بستهبندینشده
تبدیل
میشود.
اشیاء
غیرقابل
دسترس هرگز
بهطور
عمدی به یک
بسته اضافه
نمیشوند،
حتی هنگام
بازبستهبندی.
این گزینه
مانع از حذف
فوری اشیاء
غیرقابل
دسترس از
طریق رها
شدن در بسته
قدیمی و سپس
حذف آن
میشود. در
عوض، اشیاء
سست
غیرقابل
دسترس طبق
قوانین
انقضای
معمولی در
فراخوانی
بعدی
git gc
پاکسازی
خواهند شد.
به
git-gc(1)
مراجعه
کنید.
-d
پس از
بستهبندی،
اگر
بستههای
تازهتولیدشده
باعث
تکراری و
زائد شدن
برخی از
بستههای
موجود
شوند،
بستههای
زائد را حذف
میکند.
همچنین
دستور git prune-packed
را برای حذف
فایلهای
اشیاء سستِ
زائد اجرا
میکند.
--ruft
مشابه
-a
است، مگر
اینکه
-d
استفاده
شود. در این
صورت،
هرگونه شیء
غیرقابل
دسترس در یک
بسته باطله
(cruft pack) جداگانه
بستهبندی
میشود.
اشیاء
غیرقابل
دسترس را
میتوان با
استفاده از
قوانین
انقضای
معمولی در
فراخوانی
بعدی
git gc
پاکسازی
کرد (به
git-gc(1)
مراجعه
کنید).
ناسازگار
با
-k.
--ruft-expiration=<approxidate>
منقضی
کردن فوری
اشیاء
غیرقابل
دسترس
قدیمیتر
از <approxidate>
بهجای
انتظار
برای
فراخوانی
بعدی git gc.
تنها همراه
با --ruft -d مفید
است.
--x-cruft-size=<n>
بازنویسی
--x-pack-size برای
بستههای
باطله (cruft).
بهطور
پیشفرض
مقدار --x-pack-size
(در صورت
وجود) را به
ارث میبرد.
برای
جزئیات
بیشتر به
مستندات --x-pack-size
مراجعه
کنید.
--ombine-cruft-below-size=<n>
هنگام
تولید
بستههای
باطله بدون
هرس کردن،
فقط
بستههای
باطله
موجود را که
اندازه
آنها
اکیداً
کمتر از <n>
بایت است (که
میتوان
اختیاری
پسوند "k"، "m"
یا "g" به آن
اضافه کرد)
بازبستهبندی
میکند.
بستههای
باطلهای
که اندازه
آنها
بزرگتر یا
مساوی <n>
است
دستنخورده
باقی مانده
و
بازبستهبندی
نمیشوند.
زمانی مفید
است که
میخواهید
از
بازبستهبندی
بستههای
باطله بزرگ
در مخازنی
که اشیاء
غیرقابل
دسترس زیاد
یا بزرگی
دارند
اجتناب
کنید.
--\xpire-to=<dir>
نوشتن یک
بسته باطله
حاوی اشیاء
هرسشده (در
صورت وجود)
در پوشه <dir>.
این گزینه
برای
نگهداری یک
نسخه
پشتیبان از
هر شیء
هرسشده در
یک پوشه
جداگانه
مفید است.
تنها همراه
با --ruft -d
کاربرد
دارد.
-l
-f
-F
-q, --quiet
عدم
نمایش
پیشرفت در
جریان خطای
استاندارد
و انتقال
گزینه
-q به
git
pack-objects. به
git-pack-objects(1)
مراجعه
کنید.
-n
اطلاعات
سرور را با git
update-server-info
بهروزرسانی
نکنید. این
گزینه
بهروزرسانی
فایلهای
کاتالوگ
محلی مورد
نیاز برای
انتشار این
مخزن (یا یک
نسخه
مستقیم از
آن) روی HTTP یا FTP
را نادیده
میگیرد. به
git-update-server-info?R(1)
مراجعه
کنید.
--480
این دو
گزینه بر
نحوه
ذخیرهسازی
اشیاء
موجود در
بسته با
استفاده از
فشردهسازی
دلتا تأثیر
میگذارند.
اشیاء
ابتدا بر
اساس نوع،
اندازه و
اختیاری
نامها در
داخل مرتب
شده و با
سایر اشیاء
در محدوده
--96
مقایسه
میشوند تا
مشخص شود
آیا
استفاده از
فشردهسازی
دلتا فضا را
ذخیره
میکند یا
خیر. --epth
حداکثر عمق
دلتا را
محدود
میکند؛
عمیق بودن
بیش از حد آن
بر عملکرد
سمت
بازکننده
بسته تأثیر
میگذارد،
زیرا
دادههای
دلتا برای
رسیدن به
شیء مورد
نظر باید
چندین بار
اعمال شوند.
مقدار
پیشفرض
برای --1632
--hreads=<n>
این
گزینه
مستقیماً
به git pack-objects
منتقل
میشود.
--360
این
گزینه
محدودیت
اضافی
دیگری
علاوه بر
--96
فراهم
میکند؛
اندازه
پنجره
بهطور
پویا کاهش
مییابد تا
بیش از <n>
بایت در
حافظه
اشغال نکند.
این در
مخازنی با
ترکیبی از
اشیاء بزرگ
و کوچک مفید
است تا در
پنجره بزرگ
با کمبود
حافظه
مواجه
نشوند، اما
همچنان
بتوانند از
پنجره بزرگ
برای اشیاء
کوچکتر
استفاده
کنند.
اندازه
میتواند
دارای
پسوند "k"، "m"
یا "g" باشد.
--312
مصرف حافظه
را نامحدود
میکند.
مقدار
پیشفرض از
متغیر
پیکربندی
pack.windowMemory گرفته
میشود.
توجه داشته
باشید که
مصرف واقعی
حافظه
برابر با
این حد ضرب
در تعداد
رشتههای (threads)
استفادهشده
توسط
git-pack-objects(1)
خواهد بود.
--x-pack-size=<n>
حداکثر
اندازه هر
فایل بسته
خروجی.
اندازه
میتواند
دارای
پسوند "k"، "m"
یا "g" باشد.
حداقل
اندازه
مجاز به 1
مگابایت
محدود شده
است. در صورت
تعیین،
ممکن است
چندین فایل
بسته ایجاد
شوند که این
امر همچنین
مانع از
ایجاد شاخص
بیتمپ (bitmap index)
نیز
میگردد.
مقدار
پیشفرض
نامحدود
است، مگر
اینکه
متغیر
پیکربندی
pack.packSizeLimit تنظیم
شده باشد.
توجه داشته
باشید که
این گزینه
ممکن است
منجر به
مخزنی
بزرگتر و
کندتر شود؛
بحث مربوطه
را در pack.packSizeLimit
مشاهده
کنید.
--lter=<filter-spec>
اشیاء
منطبق با
مشخصات
فیلتر را از
فایل بسته
حاصل حذف
کرده و در یک
فایل بسته
جداگانه
قرار
میدهد.
توجه داشته
باشید که
اشیاء
استفادهشده
در پوشه
کاری فیلتر
نمیشوند.
بنابراین
برای اینکه
این تفکیک
به طور کامل
کار کند،
بهتر است آن
را در یک
مخزن bare اجرا
کرده و از
گزینههای
-a و
-d همراه
با این
گزینه
استفاده
کنید.
همچنین
باید از
--0-write-bitmap-index (یا
تنظیم
گزینه
پیکربندی
repack.writebitmaps روی
false)
استفاده
شود، زیرا
در غیر این
صورت نوشتن
شاخص
بیتمپ
شکست خواهد
خورد، چرا
که وجود یک
فایل بسته
واحد شامل
همه اشیاء
را فرض
میکند. به
git-rev-list(1) برای
انواع
معتبر
<filter-spec>
مراجعه
کنید.
--lter-to=<dir>
نوشتن
بسته حاوی
اشیاء
فیلترشده
در پوشه
<dir>.
تنها همراه
با
--lter
کاربرد
دارد.
میتوان از
این گزینه
برای قرار
دادن بسته
در یک پوشه
شیء
جداگانه که
از طریق
مکانیزم
جایگزینهای
(alternates) گیت قابل
دسترسی
است،
استفاده
کرد.
هشدار:
اگر فایل
بسته حاوی
اشیاء
فیلترشده
قابل
دسترسی
نباشد،
مخزن ممکن
است دچار
خرابی شود
زیرا
دسترسی به
اشیاء درون
آن بسته
ممکن
نخواهد بود.
بخشهای
objects
و
objects/info/alternates از
gitrepository-layout(5) را
مشاهده
کنید.
-b, --384
نوشتن
شاخص
بیتمپ
دسترسیپذیری
به عنوان
بخشی از
بازبستهبندی.
این گزینه
فقط زمانی
معنا دارد
که همراه با
-a، -A یا -m
استفاده
شود، زیرا
بیتمپها
باید
بتوانند به
تمام اشیاء
قابل
دسترسی
ارجاع دهند.
این گزینه
تنظیمات
repack.writeBitmaps را
نادیده
میگیرد. در
صورتی که
چندین فایل
بسته ایجاد
شوند، این
گزینه اثری
ندارد، مگر
اینکه یک MIDX
نوشته شود
(که در آن
صورت یک
بیتمپ
چندبستهای
ایجاد
میشود).
--ack-kept-objects
گنجاندن
اشیاء
موجود در
فایلهای .keep
هنگام
بازبستهبندی.
توجه داشته
باشید که ما
همچنان
بستههای .keep
را پس از
پایان pack-objects
حذف
نمیکنیم.
این بدان
معناست که
ممکن است
اشیاء
تکراری
داشته
باشیم، اما
این ویژگی
استفاده از
گزینه را در
هنگام
ارسالها
یا
دریافتهای
همزمان
ایمن
میسازد.
این گزینه
بهطور کلی
فقط زمانی
مفید است که
با -b یا repack.writeBitmaps
در حال
نوشتن
بیتمپ
هستید،
زیرا تضمین
میکند که
فایل بسته
دارای
بیتمپ،
اشیاء لازم
را در خود
دارد.
--ep-pack=<pack-name>
مستثنی
کردن بسته
دادهشده
از
بازبستهبندی.
این معادل
داشتن یک
فایل .keep روی
آن بسته است.
<pack-name> نام
فایل بسته
بدون پوشه
ابتدایی آن
است (مانند
pack-123.pack). این
گزینه را
میتوان
چندین بار
برای
نگهداشتن
چندین بسته
مشخص کرد.
--npack-unreachable=<when>
هنگام
تبدیل
اشیاء
غیرقابل
دسترس به
اشیاء سست،
از سست کردن
اشیاء
قدیمیتر
از <when>
صرفنظر
میکند.
میتوان از
این ویژگی
برای
بهینهسازی
و جلوگیری
از نوشتن
اشیائی که
بلافاصله
توسط یک git prune
متعاقب هرس
میشوند
استفاده
کرد.
-k, --ep-unreachable
هنگام
استفاده با
-ad، هر شیء
غیرقابل
دسترس از
بستههای
موجود
بهجای حذف
شدن، به
انتهای
فایل بسته
الحاق
میشود.
علاوه بر
این،
هرگونه شیء
سست
غیرقابل
دسترس
بستهبندی
خواهد شد (و
همتایان
سست آنها
حذف
میشوند).
-i, --elta-islands
-g<factor>, --ometric=<factor>
ترتیب
ساختار
بسته حاصل
بهگونهای
که هر بسته
متوالی
حداقل شامل
<factor> برابر
تعداد
اشیاءِ
بسته
بزرگتر
بعدی باشد.
git repack این
امر را با
تعیین یک
"برش" از
فایلهای
بستهای که
برای تضمین
یک تصاعد
هندسی باید
در یک بسته
ادغام شوند
تضمین
میکند. این
دستور
کوچکترین
مجموعه از
فایلهای
بسته را
انتخاب
میکند تا
حد امکان
بستههای
بزرگتر (از
نظر تعداد
اشیاء درون
آن بسته)
دستنخورده
باقی
بمانند.
برخلاف
سایر
حالتهای
بازبستهبندی،
مجموعه
اشیاء برای
بستهبندی
منحصراً بر
اساس
مجموعه
بستههای
"جمعآوریشده"
(rolled-up) تعیین
میشود؛ به
عبارت
دیگر،
بستههایی
که برای
بازگرداندن
تصاعد
هندسی
ترکیب
آنها
ضروری
تشخیص داده
شده است.
اشیاء سست
بهطور
ضمنی و بدون
توجه به
دسترسیپذیری
آنها در
این فرآیند
گنجانده
میشوند.
این رفتار
ممکن است در
آینده
تغییر کند.
هنگام
نوشتن
بیتمپ
چندبستهای،
git repack
بزرگترین
بسته حاصل
را به عنوان
بسته
ترجیحی
برای
انتخاب شیء
توسط MIDX
انتخاب
میکند (به
git-multi-pack-index(1)
مراجعه
کنید).
-m, --408
نوشتن یک
شاخص
چندبستهای
(به
git-multi-pack-index(1)
مراجعه
کنید) حاوی
بستههای
غیر زائد.
حالتهای
زیر در
دسترس
هستند:
default
نوشتن یک
MIDX واحد که
تمام
بستهها را
پوشش
میدهد. این
حالت
پیشفرض
است زمانی
که --192 بدون
حالت صریح
داده شود.
incremental
نوشتن یک
زنجیره MIDX
افزایشی
بهجای یک MIDX
تخت و واحد.
بدون --ometric،
یک لایه MIDX
جدید به
زنجیره
موجود
اضافه
میشود (یا
یک زنجیره
جدید شروع
میشود) که
شامل هر
بستهای
است که توسط
بازبستهبندی
نوشته شده
است.
لایههای
موجود
همانگونه
که هستند
حفظ
میشوند.
هنگام
ترکیب با
--ometric، حالت
افزایشی
زنجیرهای
از
لایههای MIDX
را حفظ
میکند که
در طول زمان
با استفاده
از
استراتژی
ادغام
هندسی
فشرده
میشوند. هر
بازبستهبندی
یک لایه
بالایی
جدید حاوی
بسته(های)
تازهنوشتهشده
ایجاد
میکند. سپس
لایههای
مجاور هر
زمان که
تعداد
اشیاء لایه
جدیدتر از
1/repack.midxSplitFactor تعداد
اشیاء لایه
عمیقتر
بعدی فراتر
رود، ادغام
میشوند.
لایههایی
که این شرط
را برآورده
نمیکنند
همانگونه
که هستند
نگهداری
میشوند.
نتیجه این
است که
لایههای
جدیدتر (نوک)
تمایل
دارند شامل
بستههای
کوچک زیادی
با اشیاء
نسبتاً کم
باشند، در
حالی که
لایههای
قدیمیتر
(عمیقتر)
شامل
بستههای
کمتر و
بزرگتری
هستند که
اشیاء
بیشتری را
پوشش
میدهند. از
آنجا که
فشردهسازی
توسط نوک
زنجیره
هدایت
میشود،
لایههای
جدیدتر نیز
بیشتر از
لایههای
قدیمیتر
بازنویسی
میشوند؛
لایههای
قدیمیتر
تنها زمانی
دستکاری
میشوند که
اشیاء کافی
برای توجیه
ادغام در
آنها
انباشته
شده باشد.
این کار
تعداد کل
لایهها را
نسبت به
تعداد کل
اشیاء در حد
لگاریتمی
نگه
میدارد.
فقط
بستههای
موجود در
لایه
بالایی MIDX به
عنوان
گزینههای
بازبستهبندی
هندسی در
نظر گرفته
میشوند؛
بستههای
موجود در
لایههای
عمیقتر
دستنخورده
باقی
میمانند.
اگر لایه
بالایی
شامل
بستههای
کمتری نسبت
به repack.midxNewLayerThreshold
باشد، آن
بستهها
بهطور
کامل از
هندسه
مستثنی شده
و یک لایه
جدید برای
بسته(های)
جدید بدون
برهم زدن
زنجیره
موجود
ایجاد
میشود.
--0me-hash-version=<n>
ارائه
این
آرگومان به
فرآیند
زیرین
git pack-objects.
برای
جزئیات
کامل به
git-pack-objects(1)
مراجعه
کنید.
--ath-walk
انتقال
گزینه
--ath-walk به
فرآیند
زیرین
git pack-objects.
برای
جزئیات
کامل به
git-pack-objects(1)
مراجعه
کنید.