توجه
داشته
باشید که
این فهرست
جامع نیست و
لزوماً
کامل
نمیباشد.
برای
متغیرهای
مخصوص هر
دستور،
توضیحات
دقیقتر را
در صفحه
راهنمای
مربوطه
خواهید
یافت.
سایر
ابزارهای
مرتبط با
گیت نیز
ممکن است از
متغیرهای
اختصاصی
خود
استفاده
کنند و این
کار را
انجام
میدهند.
هنگام
تعریف
متغیرهای
جدید برای
استفاده در
ابزار خود،
اطمینان
حاصل کنید
که نام
آنها با
متغیرهای
مورد
استفاده
توسط خود Git و
سایر
ابزارهای
پرکاربرد
تداخل
نداشته
باشد، و
آنها را در
مستندات
خود شرح
دهید.
نسبت
کامیتهای
بدون
نگاشتبیتی
(در میان
نوکهای
مرجع) را که
برای
گنجاندن در
یک
نگاشتبیتی
شبهادغام
ناپایدار
انتخاب
میشوند
تعیین
میکند.
باید
بزرگتر از
0 و کوچکتر
یا مساوی با
1 باشد.
مقدار
پیشفرض 1
است.
حداقل سن
کامیتهای
بدون
نگاشتبیتی
(در میان
نوکهای
مرجع،
مانند بالا)
را که نامزد
گنجاندن در
یک
نگاشتبیتی
شبهادغام
ناپایدار
هستند
تعیین
میکند.
مقدار
پیشفرض 1.week.ago
است.
اندازه
(بر حسب
تعداد
کامیتها)
یک
نگاشتبیتی
شبهادغام
پایدار را
تعیین
میکند.
مقدار
پیشفرض 512
است.
این
متغیر طرح
رنگآمیزی
اعمالشده
بر خروجی blame
را تعیین
میکند.
میتواند
repeatedLines، highlightRecent یا
none باشد که
پیشفرض
است.
این
مقدار عدد
صحیح نسخه
قالب فهرست
بسته مورد
استفاده
توسط فهرست
بسته را
اعلان
میکند. در
حال حاضر،
تنها مقدار
پذیرفتهشده
1 است.
اگر این
کلید با
مقدار
رشتهای
وجود داشته
باشد،
فهرست بسته
به گونهای
طراحی شده
است که با
دستورات
افزایشی git
fetch به خوبی
کار کند. این
اکتشاف (heuristic)
نشان
میدهد که
کلیدهای
اضافی برای
هر بسته در
دسترس
هستند که به
تعیین
زیرمجموعهای
از بستهها
که کلاینت
باید
دانلود کند
کمک
مینمایند.
تنها
مقداری که
در حال حاضر
قابل درک
است creationToken
میباشد.
این
مقدار
رشتهای،
نشانی URI را
مشخص
میکند که Git
از طریق آن
میتواند
به محتویات
این <id>
دسترسی
پیدا کند.
این URI ممکن
است یک فایل
بسته یا یک
فهرست بسته
دیگر باشد.
هنگام
اجرای
چکاوت
موازی با
تعداد
اندکی
فایل،
هزینه
ایجاد
زیرفرآیند
و ارتباط
بینفرآیندی
ممکن است بر
مزایای
موازیسازی
بچربد. این
تنظیم به
شما اجازه
میدهد
حداقل
تعداد
فایلهایی
را که
چکاوت
موازی باید
برای آنها
امتحان شود
تعیین کنید.
مقدار
پیشفرض 100
است.
یک مقدار
بولی برای
اینکه git-clean از
حذف
فایلها
خودداری
کند مگر
آنکه گزینه -f
مشخص شده
باشد.
بهطور
پیشفرض true
است.
یک مقدار
بولی برای
فعال/غیرفعال
کردن رنگ در
پیامهای
راهنما
(مثلاً
هنگامی که
یک push ناموفق
بود، برای
مشاهده
فهرست به advice.*
مراجعه
کنید). ممکن
است روی always،
false (یا never) یا auto
(یا true) تنظیم
شود، که در
این حالت
رنگها
تنها زمانی
استفاده
میشوند که
خروجی خطا
به یک
ترمینال
ارسال شود.
اگر تنظیم
نشده باشد،
مقدار color.ui
استفاده
میشود
(بهطور
پیشفرض auto).
استفاده
از رنگ
سفارشی
برای
پیامهای
راهنما.
استفاده
از رنگ
سفارشی
برای
رنگآمیزی
شاخه. <slot> یکی
از موارد
زیر است: current
(شاخه فعلی)،
local (یک شاخه
محلی)، remote (یک
شاخه
ردیابی از
راه دور در
refs/remotes/)، upstream (شاخه
ردیابی
بالادست)، plain
(سایر
ارجاعها).
یک مقدار
بولی برای
فعال/غیرفعال
کردن رنگ در
خطاهای push.
ممکن است
روی always، false (یا
never) یا auto (یا true)
تنظیم شود،
که در این
حالت
رنگها
تنها زمانی
استفاده
میشوند که
خروجی خطا
به یک
ترمینال
ارسال شود.
در صورت
تنظیم
نشدن،
مقدار color.ui
استفاده
میشود
(بهطور
پیشفرض auto).
استفاده
از رنگ
سفارشی
برای
خطاهای push.
در صورت
تنظیم،
کلمات
کلیدی در
ابتدای خط
برجسته
میشوند.
این کلمات
کلیدی شامل
"error" ،"warning" ،"hint"
و "success" هستند و
بدون
حساسیت به
بزرگی و
کوچکی حروف
تطبیق داده
میشوند.
ممکن است
روی always، false (یا
never) یا auto (یا true)
تنظیم شود.
در صورت
تنظیم
نشدن،
مقدار color.ui
استفاده
میشود
(بهطور
پیشفرض auto).
استفاده
از رنگ
سفارشی
برای هر
کلمه کلیدی
ریموت. <slot>
میتواند
hint، warning، success یا
error باشد که
با کلمه
کلیدی
متناظر
تطبیق
مییابد.
استفاده
از رنگ
سفارشی
برای
رنگآمیزی
وضعیت. <slot>
یکی از
موارد زیر
است: header (متن
هدر پیام
وضعیت)، added
یا updated
(فایلهایی
که اضافه
شدهاند
اما هنوز
کامیت
نشدهاند)،
changed
(فایلهایی
که تغییر
یافتهاند
اما در
ایندکس
اضافه
نشدهاند)،
untracked
(فایلهایی
که توسط Git
ردیابی
نمیشوند)،
branch (شاخه
فعلی)، nobranch
(رنگی که
هشدار no branch با
آن نشان
داده
میشود، با
پیشفرض
قرمز)، localBranch یا
remoteBranch (به ترتیب
نام شاخه
محلی و
ریموت،
زمانی که
اطلاعات
شاخه و
ردیابی در
قالب کوتاه
وضعیت
نمایش داده
میشود)، یا
unmerged
(فایلهایی
که تغییرات
ادغامنشده
دارند).
یک مقدار
بولی برای
فعال/غیرفعال
کردن رنگ
هنگام رد
شدن pushها.
ممکن است
روی always، false (یا
never) یا auto (یا true)
تنظیم شود،
که در این
حالت
رنگها فقط
زمانی که
خروجی خطا
به یک
ترمینال
ارسال
میشود
استفاده
میگردند.
در صورت
تنظیم
نشدن،
مقدار color.ui
استفاده
میشود
(بهطور
پیشفرض auto).
استفاده
از رنگ
سفارشی
هنگامی که
یک push رد شده
باشد.
یک مقدار
بولی برای
مشخص کردن
اینکه آیا
تمام
کامیتها
باید با GPG
امضا شوند
یا خیر.
استفاده از
این گزینه
هنگام
انجام
عملیاتی
مانند rebase
میتواند
به امضا شدن
تعداد
زیادی
کامیت منجر
شود. برای
جلوگیری از
تایپ
چندباره
عبارت عبور
GPG، ممکن است
استفاده از
یک agent مناسب
باشد.
یک مقدار
بولی برای
فعال/غیرفعال
کردن درج
اطلاعات
وضعیت در
الگوی پیام
کامیت
هنگام
استفاده از
ویرایشگر
برای
آمادهسازی
پیام کامیت.
بهطور
پیشفرض true
است.
مسیر
فایلی را
مشخص
میکند که
به عنوان
الگو برای
پیامهای
کامیت جدید
استفاده
شود.
نوع نسخه
شماره نسل
را برای
استفاده
هنگام
نوشتن یا
خواندن
فایل commit-graph مشخص
میکند. اگر
نسخه 1 مشخص
شود،
تاریخهای
تصحیحشده
کامیت
نوشته یا
خوانده
نخواهند شد.
بهطور
پیشفرض 2
است.
منسوخ
شده است.
معادل commitGraph.changedPathsVersion=-1
در صورت true
بودن، و
commitGraph.changedPathsVersion=0 در
صورت false بودن
است. (اگر
commitGraph.changedPathVersion نیز
تنظیم شده
باشد، commitGraph.changedPathsVersion
اولویت
دارد.)
این
متغیر تنها
توسط git-completion.bash
برای
افزودن یا
حذف
دستورات از
فهرست
دستورات
تکمیل
خودکار
استفاده
میشود.
معمولاً
فقط
دستورات
سطوح بالا (porcelain)
و تعداد
معدودی
دستور
منتخب دیگر
تکمیل
میشوند.
میتوانید
دستورات
بیشتری را
که با فاصله
از هم جدا
شدهاند به
این متغیر
اضافه کنید.
قرار دادن
پیشوند -
پیش از
دستور، آن
را از فهرست
موجود حذف
میکند.
(فقط
ویندوز) اگر
true باشد،
پوشهها و
فایلهای
تازهایجادشده
را که نام
آنها با
نقطه آغاز
میشود به
عنوان
پنهان
علامتگذاری
میکند. اگر
dotGitOnly باشد،
تنها پوشه .git/
پنهان
میشود،
اما
فایلهای
دیگر که با
نقطه شروع
میشوند
پنهان
نخواهند شد.
حالت
پیشفرض dotGitOnly
است.
این
گزینه تنها
توسط
پیادهسازی
Mac OS از Git
استفاده
میشود.
هنگامی که
core.precomposeUnicode=true باشد، Git
تجزیه
یونیکد (unicode decomposition)
نام
فایلها را
که توسط Mac OS
انجام شده
به حالت
اولیه
بازمیگرداند.
این قابلیت
هنگام
اشتراکگذاری
یک مخزن
میان Mac OS و
لینوکس یا
ویندوز
مفید است. (Git for Windows
نسخه 1.7.10 یا
بالاتر
مورد نیاز
است، یا Git تحت
cygwin 1.7). هنگامی که
false باشد، نام
فایلها
توسط Git به
صورت
کاملاً
شفاف
پردازش
میشوند که
با
نسخههای
قدیمیتر Git
سازگار
است.
اگر روی true
تنظیم شود،
اجازه
چکاوت
مسیرهایی
را که در
سیستم فایل HFS+
معادل .git
محسوب
میشوند
نمیدهد.
بهطور
پیشفرض
روی Mac OS برابر
true و در سایر
جاها false است.
اگر روی true
تنظیم شود،
اجازه
چکاوت
مسیرهایی
را که ممکن
است در
سیستم فایل NTFS
مشکلاتی
ایجاد کنند
(مانند
تداخل با
نامهای
"کوتاه" 8.3)
نمیدهد.
بهطور
پیشفرض در
ویندوز
برابر true و در
سایر جاها false
است.
اگر روی true
تنظیم شود،
چنانچه نام ref
ارسالی شما
مبهم باشد و
ممکن باشد
با چندین ref در
مخزن
مطابقت
داشته
باشد، Git به
شما هشدار
خواهد داد.
به طور
پیشفرض True
است.
به برخی
از دستورات
(مانند
رابطهای svn و
http) که به صورت
تعاملی
گذرواژه
درخواست
میکنند
میتوان
اعلام کرد
از یک
برنامه
خارجی که از
طریق مقدار
این متغیر
مشخص شده
است
استفاده
کنند. این
مقدار
میتواند
توسط متغیر
محیطی GIT_ASKPASS
بازنویسی
شود. در صورت
عدم تنظیم،
به مقدار
متغیر
محیطی SSH_ASKPASS یا
در صورت
نبود آن، به
یک اعلان
ساده
گذرواژه
برمیگردد.
به برنامه
خارجی باید
یک اعلان
مناسب به
عنوان
آرگومان خط
فرمان داده
شود و
گذرواژه را
در STDOUT خود
بنویسد.
مدت زمان
به
میلیثانیه
برای تلاش
مجدد هنگام
تلاش برای
قفل کردن یک
ارجاع (ref)
منفرد.
مقدار 0 به
معنای
اصلاً تلاش
مجدد نکردن
است؛ -1 به
معنای تلاش
نامحدود
است.
پیشفرض 100
است (یعنی
تلاش مجدد
برای 100
میلیثانیه).
مدت زمان
به
میلیثانیه
برای تلاش
مجدد هنگام
تلاش برای
قفل کردن
فایل packed-refs.
مقدار 0 به
معنای
اصلاً تلاش
مجدد نکردن
است؛ -1 به
معنای تلاش
نامحدود
است.
پیشفرض 1000
است (یعنی
تلاش مجدد
برای 1
ثانیه).
فقط
ویندوز:
فهرستی
جداشده با
کاما از
نامهای
متغیرهای
محیطی که
باید پیش از
ایجاد هر
فرآیند
دیگری لغو (unset)
شوند. به طور
پیشفرض
روی PERL5LIB
تنظیم شده
است تا این
واقعیت را
در نظر
بگیرد که Git for Windows
بر استفاده
از مفسر پرل
اختصاصی
خود اصرار
دارد.
طولی را
که نام
اشیاء به آن
کوتاه
میشوند
تعیین
میکند. اگر
مشخص نشود
یا روی "auto"
تنظیم شود،
مقداری
مناسب بر
اساس تعداد
تقریبی
اشیاء
بستهبندیشده
در مخزن شما
محاسبه
میشود، که
امیدواریم
کافی باشد
تا نامهای
کوتاه
اشیاء برای
مدتی یکتا
باقی
بمانند. اگر
روی "no"
تنظیم شود،
هیچ
اختصاری
صورت
نمیگیرد و
نام اشیاء
با طول کامل
نمایش داده
میشوند.
حداقل طول 4
است.
حداکثر
عمقی که Git
مایل است
هنگام
پیمایش یک
درخت وارد
بازگشت (recurse)
شود (برای
نمونه، "a/b/cde/f"
دارای عمق 4
است). این یک
تدبیر
ایمنی است
تا به Git اجازه
دهد به طور
پاک متوقف
شود، و
عموماً
نیازی به
تغییر آن
نیست.
هنگامی که Git
با MSVC کامپایل
شده باشد،
مقدار
پیشفرض 512
است. در غیر
این صورت،
مقدار
پیشفرض 2048
است.
به طور
پیشفرض، Git و
هر دستیار
کمکی
اعتبارنامه
پیکربندیشده،
در زمان
نیاز به
اطلاعات
هویتی
جدید، از
کاربر
درخواست
ورودی
میکنند.
بسیاری از
این
دستیاران
در صورتی که
اطلاعات
هویتی
ذخیرهشده
هنوز معتبر
باشند، بر
اساس آنها
کار را با
موفقیت
انجام
میدهند.
برای
جلوگیری از
امکان
تعامل با
کاربر از
سوی Git، مقدار
credential.interactive=false را
تنظیم کنید.
برخی
دستیاران
کمکی
اعتبارنامه
نیز این
گزینه را
رعایت
میکنند.
به طور
پیشفرض،
نامهای
کاربری و
میزبانهایی
که به عنوان
بخشی از
اعلان
گذرواژه
نمایش داده
میشوند
مجاز به
داشتن
نویسههای
کنترلی
نیستند
(آنها به
طور
پیشفرض با
کدگذاری URL
نمایش
مییابند).
این تنظیم
را روی false
پیکربندی
کنید تا این
رفتار لغو
شود.
به طور
پیشفرض،
نویسههای
Carriage Return در
پروتکلی که
هنگام
ارتباط Git با
یک دستیار
کمکی
اعتبارنامه
استفاده
میشود
مجاز
نیستند. این
تنظیم به
کاربران
امکان
میدهد این
مقدار
پیشفرض را
لغو کنند.
به git-credential-cache—daemon
اعلام
میکند که
سیگنال SIGHUP را
به جای خروج
نادیده
بگیرد.
مدت زمان
به
میلیثانیه
برای تلاش
مجدد git-credential-store
هنگام تلاش
برای قفل
کردن فایل
اطلاعات
هویتی.
مقدار 0 به
معنای
اصلاً تلاش
مجدد نکردن
است؛ -1 به
معنای تلاش
نامحدود
است.
پیشفرض 1000
است (یعنی
تلاش مجدد
برای 1
ثانیه).
زمینه
میان
تکههای
دیف (hunks) را تا
تعداد خطوط
مشخصشده
نمایش
میدهد، و
بدین ترتیب
تکههایی
را که نزدیک
یکدیگر
هستند به هم
پیوند
میدهد. این
مقدار به
عنوان
پیشفرض
برای گزینه
خط فرمان
--inter-hunk-context عمل
میکند.
فایلی که
نحوه
مرتبسازی
فایلها در
یک دیف را
مشخص
میکند.
برای
جزئیات به
گزینه
-O در
git-diff(1) مراجعه
کنید. اگر
diff.orderFile یک مسیر
نسبی باشد،
به عنوان
مسیر نسبی
نسبت به
ریشه درخت
کاری تلقی
میشود.
diff.renameLimit
تعداد
فایلهایی
که در بخش
جامع تشخیص
کپی/تغییر
نام در نظر
گرفته
میشوند؛
معادل
گزینه -l در git
diff. اگر تنظیم
نشود،
مقدار
پیشفرض در
حال حاضر 1000
است. اگر
تشخیص
تغییر نام
غیرفعال
باشد، این
تنظیم هیچ
اثری
ندارد.
diff.renames
آیا و
چگونه Git
تغییر
نامها را
تشخیص
میدهد. اگر
بر روی
false
تنظیم شود،
تشخیص
تغییر نام
غیرفعال
میشود. اگر
بر روی
true
تنظیم شود،
تشخیص پایه
تغییر نام
فعال
میگردد.
اگر بر روی
copies یا
copy
تنظیم شود، Git
کپیها را
نیز تشخیص
خواهد داد.
پیشفرض
true
است. توجه
داشته
باشید که
این مورد
تنها بر
دستورات
سطح بالا (Porcelain)
git diff مانند
git-diff(1) و
git-log(1)
تأثیر
میگذارد و
بر دستورات
سطح
پایینتر
مانند
git-diff-files(1)
اثری
ندارد.
diff.suppressBlankEmpty
یک مقدار
بولی برای
بازداری از
رفتار
استاندارد
چاپ فاصله (space)
پیش از هر خط
خروجی خالی.
پیشفرض false
است.
diff.submodule
قالبی را
مشخص
میکند که
تفاوتها
در
زیرماژولها
در آن قالب
نمایش داده
میشوند.
قالب
short فقط
نام
کامیتها
را در ابتدا
و انتهای
بازه نشان
میدهد.
قالب
log
کامیتهای
موجود در
بازه را
مانند آنچه
git-submodule(1) summary
انجام
میدهد
فهرست
میکند.
قالب
diff یک diff
درونخطی
از محتویات
تغییریافته
زیرماژول
را نشان
میدهد.
پیشفرض
short
است.
diff.wordRegex
یک عبارت
باقاعده
گسترده POSIX که
برای تعیین
اینکه
هنگام
انجام
محاسبات
تفاوت
کلمهبهکلمه
چه چیزی
«کلمه»
محسوب
میشود،
استفاده
میگردد.
دنبالههای
نویسهای
که با عبارت
باقاعده
مطابقت
دارند
«کلمه»
هستند،
تمام
نویسههای
دیگر فضای
خالی ignorable
(قابل
چشمپوشی)
در نظر
گرفته
میشوند.
diff.<driver>.command
diff.<driver>.trustExitCode
اگر این
مقدار بولی
روی
true تنظیم
شود، آنگاه
انتظار
میرود
دستور
diff.<driver>.command در
صورتی که
فایلهای
ورودی را
برابر
بداند کد
خروج 0 و در
صورتی که
آنها را
متفاوت
بداند کد
خروج 1 را
برگرداند،
مانند
diff(1).
اگر روی
false
تنظیم شود
که مقدار
پیشفرض
است، آنگاه
انتظار
میرود
دستور
صرفنظر از
برابری، کد
خروج 0
برگرداند.
هر کد خروج
دیگری باعث
میشود Git یک
خطای مهلک
گزارش کند.
diff.<driver>.xfuncname
عبارت
باقاعدهای
که درایور diff
باید برای
تشخیص
سرآیند
قطعه (hunk header)
استفاده
کند. همچنین
میتوان از
یک الگوی
توکار
استفاده
کرد. برای
جزئیات به
gitattributes(5) مراجعه
کنید.
diff.<driver>.binary
این
گزینه را
روی
true تنظیم
کنید تا
درایور diff
فایلها را
به عنوان
باینری در
نظر بگیرد.
برای
جزئیات به
gitattributes(5) مراجعه
کنید.
diff.<driver>.textconv
دستوری
که درایور diff
باید برای
تولید نسخه
تبدیلشده
به متنِ یک
فایل
فراخوانی
کند. نتیجه
تبدیل برای
تولید یک diff
خوانا برای
انسان
استفاده
میشود.
برای
جزئیات به
gitattributes(5) مراجعه
کنید.
diff.<driver>.wordRegex
عبارت
باقاعدهای
که درایور diff
باید برای
تفکیک
کلمات در یک
خط استفاده
کند. برای
جزئیات به
gitattributes(5) مراجعه
کنید.
diff.<driver>.cachetextconv
این
گزینه را
روی
true تنظیم
کنید تا
درایور diff
خروجیهای
تبدیل متن
را کِش کند.
برای
جزئیات به
gitattributes(5) مراجعه
کنید.
diff.indentHeuristic
این
گزینه را
روی false تنظیم
کنید تا
روشهای
اکتشافی
پیشفرضی
که مرزهای
قطعه diff را
تغییر
میدهند تا
وصلهها
آسانتر
خوانده
شوند،
غیرفعال
گردند.
diff.algorithm
یک
الگوریتم diff
انتخاب
کنید.
گونهها به
شرح زیر
هستند:
default, myers
الگوریتم
پایهای
حریصانه diff.
در حال
حاضر، این
پیشفرض
است.
minimal
زمان
بیشتری صرف
میکند تا
مطمئن شود
کوچکترین diff
ممکن تولید
میشود.
patience
استفاده
از
الگوریتم
«patience diff» هنگام
ایجاد
وصلهها.
histogram
این
الگوریتم،
الگوریتم patience
را برای
«پشتیبانی
از عناصر
مشترک با
تکرار کم»
گسترش
میدهد.
diff.wsErrorHighlight
خطاهای
فضای خالی
را در خطوط
context، old یا new در
diff برجسته
کنید.
مقادیر
چندگانه با
کاما جدا
میشوند، none
مقادیر
قبلی را
بازنشانی
میکند، default
فهرست را به
new بازنشانی
مینماید و
all
کوتاهشدهای
برای old,new,context
است. خطاهای
فضای خالی
با color.diff.whitespace
رنگآمیزی
میشوند.
گزینه خط
فرمان
--ws-error-highlight=<kind> این
تنظیم را
لغو
میکند.
diff.colorMoved
اگر روی
یک
<mode> معتبر
یا یک مقدار
true تنظیم
شود، خطوط
جابجا شده
در یک diff با
رنگ
متفاوتی
نمایش داده
میشوند.
برای
جزئیات
حالتهای
معتبر،
--color-moved
در
git-diff(1) را
ببینید. اگر
صرفاً روی
true
تنظیم شود،
حالت رنگ
پیشفرض
استفاده
خواهد شد.
هنگامی که
روی
false تنظیم
گردد، خطوط
جابجا شده
رنگآمیزی
نمیشوند.
diff.colorMovedWS
هنگامی
که خطوط
جابجا شده
مثلاً با
استفاده از
تنظیم
diff.colorMoved
رنگآمیزی
میشوند،
این گزینه
نحوه
برخورد با
فاصلهها
را کنترل
میکند.
برای
جزئیات
حالتهای
معتبر،
--color-moved-ws
در
git-diff(1) را
ببینید.
diff.tool
کنترل
میکند که
کدام ابزار diff
توسط
git-difftool(1)
استفاده
شود. این
متغیر
مقدار
پیکربندیشده
در
merge.tool را لغو
میکند.
فهرست زیر
مقادیر
توکار
معتبر را
نشان
میدهد. هر
مقدار
دیگری به
عنوان یک
ابزار diff
سفارشی در
نظر گرفته
میشود و
مستلزم آن
است که
متغیر
متناظر
difftool.<tool>.cmd
تعریف شده
باشد.
diff.guitool
کنترل
میکند که
هنگام مشخص
شدن فلگ
-g/
--gui، کدام
ابزار diff توسط
git-difftool(1)
استفاده
شود. این
متغیر
مقدار
پیکربندیشده
در
merge.guitool را
لغو میکند.
فهرست زیر
مقادیر
توکار
معتبر را
نشان
میدهد. هر
مقدار
دیگری به
عنوان یک
ابزار diff
سفارشی در
نظر گرفته
میشود و
مستلزم آن
است که
متغیر
متناظر
difftool.<guitool>.cmd
تعریف شده
باشد.
araxis
استفاده
از Araxis Merge
(نیازمند
نشست
گرافیکی)
bc
استفاده
از Beyond Compare
(نیازمند
نشست
گرافیکی)
bc3
استفاده
از Beyond Compare
(نیازمند
نشست
گرافیکی)
bc4
استفاده
از Beyond Compare
(نیازمند
نشست
گرافیکی)
codecompare
استفاده
از Code Compare
(نیازمند
نشست
گرافیکی)
deltawalker
استفاده
از DeltaWalker
(نیازمند
نشست
گرافیکی)
diffmerge
استفاده
از DiffMerge
(نیازمند
نشست
گرافیکی)
diffuse
استفاده
از Diffuse
(نیازمند
نشست
گرافیکی)
ecmerge
استفاده
از ECMerge
(نیازمند
نشست
گرافیکی)
emerge
استفاده
از Emacs' Emerge
examdiff
استفاده
از ExamDiff Pro
(نیازمند
نشست
گرافیکی)
guiffy
استفاده
از Guiffy’s Diff Tool
(نیازمند
نشست
گرافیکی)
gvimdiff
استفاده
از gVim
(نیازمند
نشست
گرافیکی)
kdiff3
استفاده
از KDiff3
(نیازمند
نشست
گرافیکی)
kompare
استفاده
از Kompare
(نیازمند
نشست
گرافیکی)
meld
استفاده
از Meld
(نیازمند
نشست
گرافیکی)
nvimdiff
استفاده
از Neovim
opendiff
استفاده
از FileMerge
(نیازمند
نشست
گرافیکی)
p4merge
استفاده
از HelixCore P4Merge
(نیازمند
نشست
گرافیکی)
smerge
استفاده
از Sublime Merge
(نیازمند
نشست
گرافیکی)
tkdiff
استفاده
از TkDiff
(نیازمند
نشست
گرافیکی)
vimdiff
استفاده
از Vim
vscode
استفاده
از Visual Studio Code
(نیازمند
نشست
گرافیکی)
winmerge
استفاده
از WinMerge
(نیازمند
نشست
گرافیکی)
xxdiff
استفاده
از xxdiff
(نیازمند
نشست
گرافیکی)
difftool.<tool>.cmd
دستور
لازم برای
فراخوانی
ابزار diff
مشخصشده
را معین
میکند.
دستور
مشخصشده
در شل با در
دسترس بودن
متغیرهای
زیر
ارزیابی
میشود:
LOCAL
روی نام
فایل موقت
حاوی
محتویات
پیشتصویر diff
(pre-image) تنظیم
میشود و
REMOTE
روی نام
فایل موقت
حاوی
محتویات
پستصویر diff
(post-image) تنظیم
میگردد.
برای
جزئیات
بیشتر به
گزینه --tool=<tool>
در git-difftool(1)
مراجعه
کنید.
difftool.<tool>.path
مسیر
ابزار
دادهشده
را لغو
میکند. این
در مواردی
مفید است که
ابزار شما
در PATH قرار
ندارد.
difftool.trustExitCode
اگر
ابزار diff
فراخوانیشده
وضعیت خروج
غیرصفر
برگرداند،
از difftool خارج
شود.
برای
جزئیات
بیشتر به
گزینه --trust-exit-code
در git-difftool(1)
مراجعه
کنید.
difftool.prompt
قبل از
هر بار
فراخوانی
ابزار diff
اعلان
تأیید
نمایش داده
شود.
difftool.guiDefault
روی true
تنظیم کنید
تا به صورت
پیشفرض از
diff.guitool استفاده
شود (معادل
با مشخص
کردن
آرگومان --gui)،
یا auto برای
انتخاب diff.guitool
یا diff.tool بسته
به وجود
مقدار
متغیر
محیطی DISPLAY.
پیشفرض false
است، که در
آن آرگومان
--gui باید
صراحتاً
ارائه شود
تا diff.guitool
استفاده
گردد.
extensions.*
مگر در
مواردی که
خلاف آن ذکر
شده باشد،
اگر
core.repositoryFormatVersion
برابر
1
نباشد،
مشخص کردن
یک افزونه
خطا است. به
gitrepository-layout(5)
مراجعه
کنید.
compatObjectFormat
یک
الگوریتم
هش سازگاری
را برای
استفاده
مشخص
میکند.
مقادیر
قابل قبول
sha1
و
sha256 هستند.
مقدار
مشخصشده
باید با
مقدار
extensions.objectFormat
متفاوت
باشد. این
امر امکان
تعاملپذیری
در سطح
کلاینت را
بین مخازن
گیت که objectFormat
آنها با
این compatObjectFormat
مطابقت
دارد فراهم
میآورد.
بهویژه
هنگامی که
به طور کامل
پیادهسازی
شود،
پوشها و
پولها از
مخزنی که objectFormat
آن با compatObjectFormat
مطابقت
دارد انجام
میشود، و
همچنین
امکان
استفاده از
oidهای
کدگذاریشده
در compatObjectFormat علاوه
بر oidهای
کدگذاریشده
با objectFormat برای
مشخص کردن
اشیاء به
صورت محلی
وجود خواهد
داشت.
توجه
داشته
باشید
عملکردی که
توسط این
افزونه
فعال
میشود
ناقص بوده و
در معرض
تغییر است.
این قابلیت
در حال حاضر
تنها برای
امکان
توسعه و
آزمایش
ویژگی
زیربنایی
وجود دارد و
برای
فعالسازی
توسط
کاربران
نهایی
طراحی نشده
است.
noop
این
افزونه
رفتار گیت
را به هیچ
وجه تغییر
نمیدهد.
این افزونه
تنها برای
آزمایش
سازگاری با
فرمت ۱ مفید
است.
به دلایل
تاریخی،
این افزونه
صرفنظر از
تنظیم core.repositoryFormatVersion
رعایت
میشود.
noop-v1
این
افزونه
رفتار گیت
را به هیچ
وجه تغییر
نمیدهد.
این افزونه
تنها برای
آزمایش
سازگاری با
فرمت ۱ مفید
است.
objectFormat
الگوریتم
هش مورد
استفاده را
مشخص
میکند.
مقادیر
قابل قبول
sha1
و
sha256 هستند.
در صورت عدم
مشخص شدن،
sha1
فرض میشود.
توجه
داشته
باشید که
این تنظیم
تنها باید
توسط git-init(1) یا
git-clone(1) تنظیم
شود. تلاش
برای تغییر
آن پس از
مقداردهی
اولیه کار
نخواهد کرد
و مشکلاتی
به وجود
میآورد که
عیبیابی
آنها
دشوار است.
partialClone
هنگام
فعال بودن،
نشان
میدهد که
مخزن با یک
کلون جزئی
ایجاد شده
است (یا
بعداً
واکشی جزئی
انجام داده
است) و اینکه
ریموت ممکن
است از
ارسال
اشیاء
ناخواسته
خاصی
صرفنظر
کرده باشد.
چنین
ریموتی «promisor
remote» (ریموت
متعهد)
نامیده
میشود و
قول میدهد
که تمام
اشیاء
حذفشده
اینچنینی
را میتوان
در آینده از
آن واکشی
کرد.
مقدار این
کلید، نام
ریموت
متعهد است.
به دلایل
تاریخی،
این افزونه
صرفنظر از
تنظیم core.repositoryFormatVersion
رعایت
میشود.
preciousObjects
در صورت
فعال بودن،
نشان
میدهد که
اشیاء
موجود در
مخزن نباید
حذف شوند
(مثلاً توسط
git-prune یا
git repack -d).
به دلایل
تاریخی،
این افزونه
صرفنظر از
تنظیم core.repositoryFormatVersion
رعایت
میشود.
refStorage
فرمت
ذخیرهسازی
مراجع و
محموله (payload)
متناظر آن
را مشخص
میکند.
مقدار
میتواند
یک نام فرمت
یا یک URI باشد:
•تنها یک
نام فرمت
(مثلاً reftable یا
files).
•یک فرمت
URI <format>://<payload> که
صراحتاً هم
فرمت و هم
محموله را
مشخص
میکند
(مثلاً reftable:///foo/bar).
نامهای
فرمت
پشتیبانیشده
عبارتند
از:
files
برای
فایلهای
مستقل
همراه با packed-refs.
این حالت
پیشفرض
است.
reftable
برای
فرمت reftable.
محموله
مستقیماً
به بکاند
مراجع
ارسال
میشود.
برای
بکاندهای
files و reftable، این
باید یک
مسیر
سیستمفایل
باشد که
مراجع در آن
ذخیره
میشوند. در
صورتی که
محمولهای
ارائه
نشود، به
طور
پیشفرض commondir
در نظر
گرفته
میشود.
مسیرهای
نسبی نسبت
به $GIT_DIR حل
میشوند.
بکاندهای
آینده ممکن
است از
طرحهای
محموله
دیگری
پشتیبانی
کنند،
مثلاً
postgres://127.0.0.1:5432?database=myrepo.
توجه
داشته
باشید که
این تنظیم
تنها باید
توسط git-init(1) یا
git-clone(1) تنظیم
شود. تلاش
برای تغییر
آن پس از
مقداردهی
اولیه کار
نخواهد کرد
و مشکلاتی
به وجود
میآورد که
عیبیابی
آنها
دشوار است.
relativeWorktrees
در صورت
فعال بودن،
نشان
میدهد
حداقل یک
درخت کاری
با مسیرهای
نسبی پیوند
داده شده
است. اگر یک
درخت کاری
با گزینه
--relative-paths یا با
تنظیم
پیکربندی
worktree.useRelativePaths روی true
ایجاد یا
تعمیر شده
باشد، به
طور خودکار
تنظیم
میگردد.
submodulePathConfig
این
افزونه
برای
اقلیتی از
کاربران
است که:
•به
دلایل
مختلف،
مانند
تداخلهای
سیستمفایل
غیرحساس به
حروف کوچک و
بزرگ هنگام
ایجاد
ماژولهایی
با نامهای
foo و Foo، با
خطاهایی
مانند refusing to
create ... in another submodule's
git dir مواجه
میشوند.
•به
ساختاربندیهای
انعطافپذیرتری
برای
زیرماژولها
نیاز
دارند،
برای مثال
به دلیل
نامهای تو
در تو مانند
foo، foo/bar و foo/baz که
توسط
سازوکار
پیشفرض gitdir
که از
مکانهای
.git/modules/<plain-name>
استفاده
میکند
پشتیبانی
نمیشوند،
و باعث
تداخلهای
بیشتری
میگردند.
هنگامی که
extensions.submodulePathConfig فعال
باشد،
پیکربندی
submodule.<name>.gitdir به
تنها مرجع
واحد حقیقت
برای تمام
مسیرهای gitdir
زیرماژولها
تبدیل
میشود و
برای تمام
زیرماژولهای
جدید هم در
طول عملیات
clone و هم init به
صورت
خودکار
تنظیم
میگردد.
اگر یک
ماژول
تنظیم
متناظر
submodule.<name>.gitdir را
نداشته
باشد، Git با
خطا مواجه
خواهد شد.
زیرماژولهای
موجود (پیش
از
فعالسازی
افزونه)
باید با
افزودن
ورودیهای
پیکربندی
ناموجود
مهاجرت
داده شوند.
این کار
میتواند
به صورت
دستی انجام
شود، مثلاً
برای هر
زیرماژول: git
config submodule.<name>.gitdir
.git/modules/<name>، یا
از طریق
دستور git submodule--helper
migrate-gitdir-configs که روی
تمام
زیرماژولها
پیمایش
کرده و تلاش
میکند
آنها را
مهاجرت
دهد.
این
افزونه
میتواند
با تنظیم
init.defaultSubmodulePathConfig روی
true، به طور
خودکار
برای مخازن
جدید فعال
شود، برای
مثال با
اجرای git config
--global init.defaultSubmodulePathConfig true.
worktreeConfig
در صورت
فعال بودن،
درختهای
کاری
تنظیمات
پیکربندی
را علاوه بر
فایل
$GIT_COMMON_DIR/config
از فایل
$GIT_DIR/config.worktree نیز
بارگذاری
خواهند کرد.
توجه داشته
باشید که
$GIT_COMMON_DIR و
$GIT_DIR
برای درخت
کاری اصلی
یکسان
هستند، در
حالی که
سایر
درختهای
کاری دارای
$GIT_DIR برابر با
$GIT_COMMON_DIR/worktrees/<id>/
میباشند.
تنظیمات
موجود در
فایل
config.worktree
تنظیمات هر
فایل
پیکربندی
دیگری را
لغو خواهند
کرد.
هنگام
فعالسازی
این
افزونه،
باید مراقب
باشید که در
صورت وجود،
مقادیر
خاصی را از
فایل
پیکربندی
مشترک به
فایل config.worktree
درخت کاری
اصلی منتقل
کنید:
•core.worktree
باید از
$GIT_COMMON_DIR/config به
$GIT_COMMON_DIR/config.worktree
منتقل شود.
•اگر core.bare
برابر true
باشد،
آنگاه باید
از $GIT_COMMON_DIR/config به
$GIT_COMMON_DIR/config.worktree
منتقل شود.
همچنین
ممکن است
بسته به
تمایل شما
برای
تنظیمات
سفارشیسازیپذیر
sparse-checkout برای هر
درخت کاری،
تنظیم
مکانهای
core.sparseCheckout و core.sparseCheckoutCone
مفید باشد.
به طور
پیشفرض،
دستور
توکار git sparse-checkout
این افزونه
را فعال
میکند،
این مقادیر
پیکربندی
را بر مبنای
هر درخت
کاری
اختصاص
میدهد، و
از فایل
$GIT_DIR/info/sparse-checkout برای
تعیین
میزان
پراکندگی
برای هر
درخت کاری
به طور
مستقل
استفاده
میکند.
برای
جزئیات
بیشتر به
git-sparse-checkout(1)
مراجعه
کنید.
به دلایل
تاریخی،
این افزونه
صرفنظر از
تنظیم core.repositoryFormatVersion
رعایت
میشود.
fastimport.unpackLimit
اگر
تعداد
اشیاء
واردشده
توسط
git-fast-import(1)
کمتر از این
حد باشد،
اشیاء به
صورت
فایلهای
شیء مستقل
از
بستهبندی
خارج
میشوند.
اما اگر
تعداد
اشیاء
واردشده
برابر یا
بیشتر از
این حد
باشد، بسته
به صورت یک
فایل بسته (pack)
ذخیره
خواهد شد.
ذخیره بسته
حاصل از fast-import
میتواند
باعث شود
عملیات
ورود
سریعتر
انجام شود،
بهویژه
روی
سیستمهای
فایلی کند.
در صورت عدم
تنظیم،
مقدار
transfer.unpackLimit
به جای آن
استفاده
میشود.
feature.*
تنظیمات
پیکربندی
که با feature.
شروع
میشوند،
مقادیر
پیشفرض
گروهی از
تنظیمات
پیکربندی
دیگر را
تغییر
میدهند.
این
گروهها
توسط جامعه
توسعهدهندگان
Git به عنوان
پیشفرضهای
توصیهشده
ایجاد
شدهاند و
در معرض
تغییر
هستند.
بهویژه،
ممکن است
گزینههای
پیکربندی
جدیدی با
پیشفرضهای
متفاوت
اضافه
شوند.
feature.experimental
گزینههای
پیکربندی
را که در Git
جدید هستند
و برای
پیشفرضهای
آینده در
نظر گرفته
شدهاند
فعال کنید.
تنظیمات
پیکربندی
گنجاندهشده
در اینجا
ممکن است با
هر انتشار،
از جمله
بهروزرسانیهای
نگارشهای
فرعی،
اضافه یا
حذف شوند.
این
تنظیمات
ممکن است به
دلیل جدید
بودن،
اثرات
متقابل
ناخواستهای
داشته
باشند.
لطفاً اگر
علاقهمند
به ارائه
بازخورد در
مورد
ویژگیهای
آزمایشی
هستید، این
تنظیم را
فعال کنید.
مقادیر
پیشفرض
جدید
عبارتند از:
•fetch.negotiationAlgorithm=skipping
ممکن است با
پرش از روی
کامیتهای
بیشتر در هر
مرحله،
زمان
مذاکره
واکشی را
بهبود بخشد
و تعداد
رفتوبرگشتها
را کاهش
دهد.
•pack.useBitmapBoundaryTraversal=true
ممکن است با
پیمایش
اشیاء
کمتر، زمان
پیمایش
نگاشت بیتی
را بهبود
بخشد.
•pack.allowPackReuse=multi
ممکن است
زمان لازم
برای ایجاد
یک بسته را
با استفاده
مجدد از
اشیاءِ چند
بسته به جای
تنها یک
بسته بهبود
بخشد.
•pack.usePathWalk
ممکن است
ایجاد فایل
بسته را
سرعت بخشد و
اندازه
فایلهای
بسته را در
حضور
تداخلهای
خاص نام
فایل با هش
پیشفرض
نام در Git به
طور
چشمگیری
کوچکتر
کند.
•init.defaultRefFormat=reftable
باعث
میشود
مخازن تازه
مقداردهیشده
از فرمت reftable
برای
ذخیرهسازی
مراجع
استفاده
کنند. این
فرمت جدید
مشکلات
مربوط به
سیستمهای
فایلی
غیرحساس به
حروف کوچک و
بزرگ را
برطرف
میکند،
فشردهسازی
بهتری دارد
و در بسیاری
از موارد
کاربرد
عملکرد
بسیار
بهتری
ارائه
میدهد.
برای
اطلاعات
بیشتر در
مورد این
فرمت
ذخیرهسازی
جدید به
Documentation/technical/reftable.adoc
مراجعه
کنید.
feature.manyFiles
گزینههای
پیکربندی
را فعال
میکند که
برای
مخازنی با
تعداد
فایلهای
بسیار در
دایرکتوری
کاری
بهینهسازی
شدهاند. با
وجود
فایلهای
بسیار،
دستوراتی
مانند
git status و
git checkout ممکن
است کند
باشند و این
پیشفرضهای
جدید
عملکرد را
بهبود
میبخشند:
•index.skipHash=true با
محاسبه
نکردن جمع
کنترلی
پایانی،
نوشتن در
ایندکس را
سرعت
میبخشد.
توجه داشته
باشید که
این امر
باعث
میشود
نگارشهای Git
قدیمیتر
از 2.13.0 از
تجزیه
ایندکس
خودداری
کنند و
نگارشهای Git
قدیمیتر
از 2.40.0 در حین
اجرای git fsck
یک ایندکس
خراب را
گزارش
دهند.
•index.version=4
فشردهسازی
پیشوند
مسیر را در
ایندکس
فعال
میکند.
•core.untrackedCache=true
کِش
فایلهای
ردگیرینشده
را فعال
میکند. این
تنظیم فرض
میکند که mtime
روی سیستم
شما کار
میکند.
fetch.recurseSubmodules
این
گزینه
کنترل
میکند که
آیا git fetch (و
واکشی
زیربنایی
در git pull) به
صورت
بازگشتی در
زیرماژولهای
پرشده
واکشی
انجام دهد
یا خیر. این
گزینه
میتواند
روی یک
مقدار بولی
یا روی on-demand
تنظیم شود.
تنظیم آن
روی یک
مقدار بولی
رفتار fetch و pull را
تغییر
میدهد تا
در صورت
تنظیم روی true
بدون قید و
شرط به صورت
بازگشتی
وارد
زیرماژولها
شوند، یا در
صورت تنظیم
روی false اصلاً
بازگشتی
عمل نکنند.
هنگامی که
روی on-demand
تنظیم شود،
fetch و pull تنها
زمانی به
صورت
بازگشتی
وارد یک
زیرماژول
پرشده
میشوند که
ابرپروژه
آن کامیتی
را دریافت
کند که مرجع
زیرماژول
را
بهروزرسانی
نماید.
پیشفرض on-demand
است، یا
مقدار submodule.recurse
در صورت
تنظیم
بودن.
fetch.fsckObjects
اگر روی true
تنظیم شود،
git-fetch-pack تمام
اشیاء
واکشیشده
را بررسی
خواهد کرد.
برای آنچه
بررسی
میشود به
transfer.fsckObjects مراجعه
کنید.
پیشفرض false
است. در صورت
عدم تنظیم،
مقدار transfer.fsckObjects
به جای آن
استفاده
میشود.
fetch.fsck.<msg-id>
مانند
fsck.<msg-id> عمل
میکند،
اما به جای
git-fsck(1) توسط
git-fetch-pack(1)
استفاده
میشود.
برای
جزئیات به
مستندات
fsck.<msg-id>
مراجعه
کنید.
fetch.fsck.skipList
مانند
fsck.skipList عمل
میکند،
اما به جای
git-fsck(1) توسط
git-fetch-pack(1)
استفاده
میشود.
برای
جزئیات به
مستندات
fsck.skipList
مراجعه
کنید.
fetch.unpackLimit
اگر
تعداد
اشیاء
واکشیشده
از طریق
انتقال
بومی Git کمتر
از این حد
باشد،
اشیاء به
صورت
فایلهای
شیء مستقل
از
بستهبندی
خارج
میشوند.
اما اگر
تعداد
اشیاء
دریافتشده
برابر یا
بیشتر از
این حد
باشد، بسته
دریافتشده
پس از
افزودن
هرگونه
پایههای
دلتای
ناموجود،
به عنوان یک
بسته ذخیره
خواهد شد.
ذخیره بسته
حاصل از
ارسال
میتواند
باعث شود
عملیات
ارسال
سریعتر
انجام شود،
بهویژه
روی
سیستمهای
فایلی کند.
در صورت عدم
تنظیم،
مقدار transfer.unpackLimit
به جای آن
استفاده
میشود.
fetch.prune
اگر true
باشد، fetch به
طور خودکار
به گونهای
عمل میکند
که گویی
گزینه
--prune در
خط فرمان
داده شده
است. همچنین
به
remote.<name>.prune و
بخش PRUNING در
git-fetch(1)
مراجعه
کنید.
fetch.pruneTags
اگر true
باشد، fetch در
هنگام هرس
به طور
خودکار به
گونهای
عمل میکند
که گویی
مشخصه مرجع
refs/tags/*:refs/tags/* ارائه
شده است،
البته اگر
قبلاً
تنظیم نشده
باشد. این
امر امکان
تنظیم هر
دوی این
گزینه و
fetch.prune
را برای حفظ
نگاشت ۱ به ۱
با مراجع
بالادست
فراهم
میکند.
همچنین به
remote.<name>.pruneTags و
بخش PRUNING در
git-fetch(1)
مراجعه
کنید.
fetch.all
اگر true
باشد، fetch
تلاش
میکند
تمام
ریموتهای
موجود را
بهروزرسانی
کند. این
رفتار را
میتوان با
فرستادن --no-all
یا با مشخص
کردن صریح
یک یا چند
ریموت برای
واکشی لغو
کرد.
پیشفرض false
است.
fetch.output
نحوه چاپ
وضعیت
بهروزرسانی
مراجع را
کنترل
میکند.
مقادیر
معتبر
عبارتند از
full و
compact. مقدار
پیشفرض
full
است. برای
جزئیات به
بخش OUTPUT در
git-fetch(1)
مراجعه
کنید.
fetch.negotiationAlgorithm
نحوه
ارسال
اطلاعات
مربوط به
کامیتها
در مخزن
محلی را
هنگام
مذاکره بر
سر محتویات
فایل بسته
ارسالی
توسط سرور
کنترل
میکند. روی
consecutive تنظیم
کنید تا از
الگوریتمی
استفاده
شود که
کامیتهای
متوالی را
پیمایش
کرده و
تکتک
آنها را
بررسی
میکند. روی
skipping تنظیم
کنید تا از
الگوریتمی
استفاده
شود که
کامیتها
را با هدف
همگرایی
سریعتر
نادیده
میگیرد،
اما ممکن
است منجر به
فایل
بستهای
بزرگتر از
حد نیاز
شود؛ یا روی
noop تنظیم
کنید تا
اصلاً هیچ
اطلاعاتی
ارسال
نشود، که
تقریباً به
طور قطع
منجر به
فایل
بستهای
بزرگتر از
حد نیاز
خواهد شد،
اما مرحله
مذاکره را
دور میزند.
روی
default
تنظیم کنید
تا تنظیمات
اعمالشده
قبلی لغو
شده و از
رفتار
پیشفرض
استفاده
گردد.
پیشفرض
معمولاً
consecutive
است، اما
اگر
feature.experimental
برابر
true
باشد،
آنگاه
پیشفرض
skipping
خواهد بود.
مقادیر
ناشناخته
باعث خطای
git
fetch میشوند.
همچنین
گزینههای
--negotiate-only و --negotiation-restrict
در git-fetch(1) را
ببینید.
fetch.showForcedUpdates
fetch.parallel
حداکثر
تعداد
عملیات
واکشی را که
میتوانند
به طور
همزمان و
موازی اجرا
شوند مشخص
میکند
(زیرماژولها،
یا
ریموتها
هنگامی که
گزینه
--multiple در
git-fetch(1) اعمال
شده باشد).
مقدار 0 یک
پیشفرض
معقول
تعیین
میکند. اگر
تنظیم
نشود،
پیشفرض 1
است.
برای
زیرماژولها،
این تنظیم
را میتوان
با استفاده
از تنظیم
پیکربندی
submodule.fetchJobs لغو
کرد.
fetch.writeCommitGraph
روی true
تنظیم کنید
تا پس از هر
دستور git fetch
که یک فایل
بسته را از
ریموت
دانلود
میکند، یک
commit-graph نوشته
شود. با
استفاده از
گزینه --split،
بیشتر
اجراها یک
فایل commit-graph
بسیار کوچک
روی
فایل(های) commit-graph
موجود
ایجاد
میکنند.
گاهی اوقات
این
فایلها
ادغام
میشوند و
نوشتن ممکن
است
طولانیتر
شود. داشتن
یک فایل commit-graph
بهروز به
عملکرد
بسیاری از
دستورات Git
کمک
میکند، از
جمله git merge-base،
git push -f، و git log
--graph. پیشفرض
false است.
fetch.bundleURI
این
مقدار یک URI را
برای
دانلود
دادههای
شیء Git از یک bundle URI
قبل از
انجام
واکشی
افزایشی از
سرور اصلی Git
ذخیره
میکند. این
شبیه به
نحوه رفتار
گزینه
--bundle-uri در
git-clone(1) است.
دستور
git clone
--bundle-uri در صورتی
که bundle URI
ارائهشده
شامل فهرست
بستهای
باشد که
برای
واکشیهای
افزایشی
سازمانیافته
است، مقدار
fetch.bundleURI را
تنظیم
میکند.
اگر این
مقدار را
تغییر دهید
و مخزن شما
دارای
مقدار fetch.bundleCreationToken
باشد، پیش
از واکشی از
bundle URI جدید، آن
مقدار fetch.bundleCreationToken
را حذف
کنید.
fetch.bundleCreationToken
هنگام
استفاده از
fetch.bundleURI برای
واکشی
افزایشی از
یک فهرست
بسته که از
روش
اکتشافی
«
creationToken»
استفاده
میکند،
این مقدار
پیکربندی
حداکثر
مقدار
creationToken
بستههای
دانلودشده
را ذخیره
میکند. این
مقدار برای
جلوگیری از
دانلود
بستهها در
آینده
استفاده
میشود اگر
creationToken
اعلامشده
اکیداً
بزرگتر از
این مقدار
نباشد.
مقادیر
توکن ایجاد
توسط
ارائهدهندهای
که bundle URI خاص را
ارائه
میدهد
انتخاب
میشوند.
اگر URI را در
fetch.bundleURI تغییر
دادید،
حتماً پیش
از واکشی
مقدار fetch.bundleCreationToken
را حذف
کنید.
filter.<driver>.clean
دستوری
که برای
تبدیل
محتوای یک
فایل درخت
کاری به یک blob
در هنگام
ثبت (checkin)
استفاده
میشود.
برای
جزئیات به
gitattributes(5) مراجعه
کنید.
filter.<driver>.smudge
دستوری
که برای
تبدیل
محتوای یک
شیء blob به یک
فایل درخت
کاری در
هنگام
وارسی (checkout)
استفاده
میشود.
برای
جزئیات به
gitattributes(5) مراجعه
کنید.
format.attach
پیوستهای
multipart/mixed را به
عنوان
پیشفرض
برای
format-patch
فعال
میکند.
مقدار
همچنین
میتواند
یک رشته
درون گیومه
باشد که
پیوستها
را به عنوان
پیشفرض
فعال کرده و
آن مقدار را
به عنوان
مرز (boundary) تنظیم
کند. گزینه
--attach
را در
git-format-patch(1)
ببینید.
برای باطل
کردن یک
مقدار
قبلی، آن را
روی رشته
خالی تنظیم
کنید.
format.from
مقدار
پیشفرض را
برای گزینه
--from در format-patch
فراهم
میکند. یک
مقدار
بولی، یا یک
نام و نشانی
ایمیل را
میپذیرد.
اگر false باشد،
format-patch به صورت
پیشفرض
روی --no-from قرار
میگیرد و
از
نویسندگان
کامیت
مستقیماً
در فیلد «From:»
ایمیلهای
وصله
استفاده
میکند. اگر
true باشد، format-patch به
صورت
پیشفرض
روی --from قرار
میگیرد و
از هویت
کامیتکننده
شما در فیلد
«From:»
ایمیلهای
وصله
استفاده
مینماید و
در صورت
تفاوت، یک
فیلد «From:» در
بدنه ایمیل
وصله درج
میکند. اگر
روی یک
مقدار
غیربولی
تنظیم شود،
format-patch از آن
مقدار به
جای هویت
کامیتکننده
شما
استفاده
میکند.
پیشفرض false
است.
format.forceInBodyFrom
مقدار
پیشفرض را
برای گزینه
--[no-]force-in-body-from در format-patch
فراهم
میکند.
پیشفرض false
است.
format.numbered
یک مقدار
بولی که
میتواند
شمارههای
ترتیبی را
در موضوعات
وصله فعال
یا غیرفعال
کند.
پیشفرض آن
«auto» است که
فقط در صورت
وجود بیش از
یک وصله آن
را فعال
میکند. با
تنظیم آن
روی «true» یا
«false» میتوان
آن را برای
همه
پیامها
فعال یا
غیرفعال
کرد. گزینه
--numbered
در
git-format-patch(1) را
ببینید.
format.headers
سرآیندهای
ایمیل
اضافی برای
گنجاندن در
وصلهای که
قرار است با
ایمیل
ارسال شود.
به
git-format-patch(1)
مراجعه
کنید.
format.to, format.cc
گیرندگان
اضافی برای
گنجاندن در
وصلهای که
قرار است با
ایمیل
ارسال شود.
گزینههای
--to
و
--cc را در
git-format-patch(1)
ببینید.
format.subjectPrefix
پیشفرض
برای format-patch
خروجی دادن
فایلها با
پیشوند
موضوع [PATCH]
است. از این
متغیر برای
تغییر آن
پیشوند
استفاده
کنید.
format.coverFromDescription
حالت
پیشفرض
برای format-patch جهت
تعیین
اینکه کدام
بخشهای
نامه پوششی
با استفاده
از توضیحات
شاخه پر
میشوند.
گزینه
--cover-from-description
در
git-format-patch(1) را
ببینید.
format.signature
پیشفرض
برای format-patch
خروجی دادن
امضایی
حاوی شماره
نسخه Git است.
از این
متغیر برای
تغییر آن
پیشفرض
استفاده
کنید. این
متغیر را
روی رشته
خالی ("")
تنظیم کنید
تا از تولید
امضا
جلوگیری
شود.
format.signatureFile
دقیقاً
مانند format.signature
کار میکند
مگر آنکه
محتویات
فایل
مشخصشده
توسط این
متغیر به
عنوان امضا
استفاده
خواهد شد.
format.suffix
پیشفرض
برای format-patch
خروجی دادن
فایلها با
پسوند .patch
است. از این
متغیر برای
تغییر آن
پسوند
استفاده
کنید (در
صورت تمایل
به داشتن
نقطه،
حتماً آن را
بگنجانید).
format.encodeEmailHeaders
سرآیندهای
ایمیل
دارای
نویسههای
غیر ASCII را با
«Q-encoding»
(توصیفشده
در RFC 2047) برای
ارسال از
طریق ایمیل
کدگذاری
میکند.
پیشفرض true
است.
format.pretty
format.thread
سبک
پیشفرض
رشتهبندی
(threading) برای git format-patch.
میتواند
یک مقدار
بولی، یا shallow
یا deep باشد.
رشتهبندی
shallow کاری
میکند که
هر ایمیل
پاسخی به
سرِ مجموعه
(head of the series) باشد، که
در آن سرِ
مجموعه به
ترتیب از
نامه روی
جلد (cover letter)، --in-reply-to و
اولین
ایمیل وصله
انتخاب
میشود.
رشتهبندی
deep هر ایمیل
را به پاسخی
برای ایمیل
قبلی تبدیل
میکند.
مقدار بولی
درست (true)
معادل shallow
است و مقدار
نادرست (false)
رشتهبندی
را غیرفعال
میکند.
format.signOff
یک مقدار
بولی که به
شما امکان
میدهد
گزینه -s/--signoff در
format-patch را بهطور
پیشفرض
فعال کنید.
توجه:
افزودن
دنباله (trailer)
Signed-off-by به یک
وصله باید
اقدامی
آگاهانه
باشد و بدین
معناست که
شما گواهی
میدهید حق
ارسال این
اثر را تحت
همان مجوز
متنباز
دارید.
لطفاً برای
توضیحات
بیشتر به
سند SubmittingPatches
مراجعه
کنید.
format.coverLetter
یک مقدار
بولی که
کنترل
میکند آیا
هنگام
فراخوانی format-patch
نامه روی
جلد (cover-letter)
ایجاد شود
یا خیر؛
علاوه بر
این
میتواند
روی "auto"
تنظیم شود
تا تنها
زمانی که
بیش از یک
وصله وجود
دارد نامه
روی جلد
ایجاد گردد.
پیشفرض false
است.
format.commitListFormat
هنگامی
که گزینه
--commit-list-format داده
نشده باشد،
format-patch از مقدار
این متغیر
برای
تصمیمگیری
در مورد
نحوه
قالببندی
مدخل هر
کامیت
استفاده
میکند.
پیشفرض shortlog
است.
format.outputDirectory
یک پوشه
سفارشی را
برای ذخیره
فایلهای
خروجی به
جای پوشه
کاری فعلی
تنظیم
میکند.
تمام
بخشهای
مسیر پوشه
در صورت
نیاز ایجاد
خواهند شد.
format.filenameMaxLength
حداکثر
طول نام
فایلهای
خروجی
تولیدشده
توسط دستور
format-patch؛
پیشفرض 64
است.
میتواند
با گزینه خط
فرمان
--filename-max-length=<n>
بازنویسی (override)
شود.
format.useAutoBase
یک مقدار
بولی که به
شما امکان
میدهد
گزینه --base=auto در
format-patch را بهطور
پیشفرض
فعال کنید.
همچنین
میتواند
روی "whenAble"
تنظیم شود
تا در صورت
در دسترس
بودن یک
پایه (base)
مناسب، --base=auto
فعال گردد،
اما در غیر
این صورت
بدون متوقف
شدن و خطای
فرآیند، از
افزودن
اطلاعات
پایه
صرفنظر
شود.
format.notes
مقدار
پیشفرض
گزینه
--notes را
برای format-patch
فراهم
میکند. یک
مقدار بولی
یا یک مرجع (ref)
را
میپذیرد
که مشخص
میکند
یادداشتها
از کجا
دریافت
شوند. اگر false
باشد، format-patch
بهطور
پیشفرض از
--no-notes استفاده
میکند. اگر
true باشد، format-patch
بهطور
پیشفرض از
--notes استفاده
میکند. اگر
روی یک
مقدار
غیربولی
تنظیم شود،
format-patch بهطور
پیشفرض از
--notes=<ref>
استفاده
میکند، که
در آن
ref همان
مقدار
غیربولی
است.
پیشفرض false
است.
اگر کسی
بخواهد از
مرجع refs/notes/true
استفاده
کند، لطفاً
در عوض از
همان عبارت
دقیق
استفاده
کند.
این
پیکربندی
میتواند
چندین بار
مشخص شود تا
امکان
گنجاندن
چند مرجع
یادداشت
وجود داشته
باشد. در این
حالت،
رفتاری
مشابه
ارسال
چندین
گزینه
--[no-]notes[=]
خواهد داشت.
به این معنا
که مقدار true
یادداشتهای
پیشفرض را
نشان
میدهد،
مقدار <ref>
همچنین
یادداشتهای
حاصل از آن
مرجع
یادداشت را
نشان
میدهد و
مقدار false
پیکربندیهای
قبلی را لغو
کرده و
یادداشتی
نشان
نمیدهد.
برای
مثال،
[format]
notes = true
notes = foo
notes = false
notes = bar
تنها
یادداشتهای
مربوط به
refs/notes/bar را نشان
خواهد داد.
format.mboxrd
یک مقدار
بولی که
فرمت مطمئن
"mboxrd" را هنگام
استفاده از
--stdout برای
اسکیپ کردن
خطوط "^>+From "
فعال
میکند.
format.noprefix
در صورت
تنظیم، هیچ
پیشوند
مبدأ یا
مقصدی در
وصلهها
نشان داده
نمیشود.
این معادل
گزینه diff.noprefix
است که توسط
git diff
استفاده
میشود (اما
توسط format-patch
رعایت
نمیگردد).
توجه داشته
باشید که با
تنظیم این
متغیر،
دریافتکننده
وصلههای
تولیدی شما
باید آنها
را با
استفاده از
گزینه -p0
اعمال کند.
fsck.<msg-id>
در طول fsck،
ممکن است git
مشکلاتی را
در
دادههای
قدیمی (legacy)
پیدا کند که
توسط
نسخههای
فعلی git تولید
نمیشوند و
در صورت
تنظیم بودن
transfer.fsckObjects روی
شبکه ارسال
نمیشدند.
این ویژگی
برای
پشتیبانی
از کار با
مخازن
قدیمی حاوی
چنین
دادههایی
در نظر
گرفته شده
است.
تنظیم
fsck.<msg-id> توسط
git-fsck(1) خوانده
میشود،
اما برای
پذیرش
پوشهای
حاوی چنین
دادههایی
به جای آن
receive.fsck.<msg-id> را
تنظیم
کنید، یا
برای
شبیهسازی
(clone) یا واکشی (fetch)
آن، fetch.fsck.<msg-id>
را تنظیم
نمایید.
بقیه
مستندات
برای
اختصار در
مورد fsck.* بحث
میکند،
اما همین
موضوع در
مورد
متغیرهای
متناظر receive.fsck.*
و fetch.fsck.* نیز
صدق
میکند.
برخلاف
متغیرهایی
مانند color.ui و
core.editor،
متغیرهای
receive.fsck.<msg-id> و
fetch.fsck.<msg-id> در
صورت عدم
تنظیم، به
پیکربندی
fsck.<msg-id> رجوع
نخواهند
کرد (fall back
نمیکنند).
برای
پیکربندی
یکنواخت
تنظیمات fsck
در شرایط
مختلف، هر
سه آنها
باید روی
مقادیر
یکسان
تنظیم
شوند.
هنگامی که
fsck.<msg-id> تنظیم
شود،
میتوان با
پیکربندی
تنظیم fsck.<msg-id>
خطاها را به
هشدار و
برعکس
تبدیل کرد،
جایی که <msg-id>
همان شناسه
پیام fsck است و
مقدار یکی
از error، warn یا
ignore میباشد.
برای
راحتی، fsck
پیشوند
خطا/هشدار
را با شناسه
پیام مشخص
میکند، به
عنوان مثال
"missingEmail: invalid author/committer line - missing email"
به این معنی
است که
تنظیم fsck.missingEmail =
ignore آن مشکل
را پنهان
خواهد کرد.
بهطور
کلی، بهتر
است اشیاء
مشکلدار
موجود را با
fsck.skipList فهرست
کنید، به
جای آنکه
نوع
خرابیهای
مشترک این
اشیاء را
برای
نادیده
گرفته شدن
فهرست
نمایید؛
چرا که
انجام مورد
دوم اجازه
میدهد
نمونههای
جدید همان
خرابیها
ناشناخته
باقی
بمانند.
تنظیم
مقدار
ناشناخته
برای fsck.<msg-id>
باعث متوقف
شدن و خروج
غیرعادی fsck
میشود،
اما انجام
همین کار
برای receive.fsck.<msg-id>
و fetch.fsck.<msg-id>
تنها باعث
صدور هشدار
توسط git
خواهد شد.
برای
مقادیر
پشتیبانیشده
<msg-id>، بخش Fsck
Messages در git-fsck(1) را
ببینید.
fsck.skipList
مسیر یک
فهرست از
نامهای
اشیاء (یعنی
یک SHA-1 کامل و
بدون
اختصار در
هر خط) که
مشخص شده
بهگونهای
غیرمهلک
خراب هستند
و باید
نادیده
گرفته شوند.
در
نسخههای Git
2.20
و جدیدتر،
توضیحات (
#)،
خطوط خالی،
و هرگونه
فاصله خالی
ابتدایی و
انتهایی
نادیده
گرفته
میشوند. در
نسخههای
قدیمیتر،
هر چیزی جز
یک SHA-1 در هر خط
با خطا
مواجه
خواهد شد.
این ویژگی
زمانی مفید
است که یک
پروژه
جاافتاده
علیرغم
کامیتهای
اولیهای
که حاوی
خطاهای
قابل
چشمپوشی
هستند
(مانند
آدرسهای
ایمیل
نامعتبر
ثبتکننده
کامیت)،
باید
پذیرفته
شود. توجه:
اشیاء فاسد
و
آسیبدیده
(corrupt objects) را
نمیتوان
با این
تنظیم
نادیده
گرفت.
مشابه
fsck.<msg-id>، این
متغیر
دارای
انواع
متناظر
receive.fsck.skipList و fetch.fsck.skipList
است.
برخلاف
متغیرهایی
مانند color.ui و
core.editor،
متغیرهای
receive.fsck.skipList و fetch.fsck.skipList
در صورت عدم
تنظیم، به
پیکربندی
fsck.skipList رجوع
نمیکنند.
برای
پیکربندی
یکنواخت
تنظیمات fsck
در شرایط
مختلف، هر
سه آنها
باید روی
مقادیر
یکسان
تنظیم
شوند.
نسخههای
قدیمیتر Git
(قبل از 2.20)
مستند کرده
بودند که
فهرست
نامهای
اشیاء باید
مرتب شده
باشد. این
موضوع هرگز
یک الزام
نبود؛
نامهای
اشیاء
میتوانستند
به هر
ترتیبی
ظاهر شوند،
اما هنگام
خواندن
فهرست،
برای اهداف
پیادهسازی
جستجوی
دودویی
داخلی که
میتوانست
با فهرست از
قبل
مرتبشده
کار کمتری
انجام دهد،
مرتب بودن
فهرست
ردیابی
میشد. مگر
اینکه
فهرستی
بسیار عظیم
داشتید،
دلیلی برای
مرتبسازی
اولیه
فهرست وجود
نداشت. پس از
نسخه Git 2.20
پیادهسازی
درهمسازی
(hash) در عوض
استفاده
میشود،
بنابراین
اکنون
دلیلی برای
مرتبسازی
اولیه
فهرست وجود
ندارد.
fsmonitor.allowRemote
بهطور
پیشفرض،
دیمن fsmonitor از
کار با
مخازن
متصلشده
از طریق
شبکه (network-mounted)
خودداری
میکند.
تنظیم fsmonitor.allowRemote
روی true این
رفتار را
بازنویسی
میکند.
تنها زمانی
رعایت
میشود که
core.fsmonitor روی true
تنظیم شده
باشد.
fsmonitor.socketDir
این
گزینه
مخصوص Mac OS و Linux
در صورت
تنظیم،
پوشهای را
مشخص
میکند که
سوکت دامنه
یونیکس (Unix domain socket)
مورد
استفاده
برای
ارتباط بین
دیمن fsmonitor و
دستورات
مختلف Git در آن
ایجاد شود.
این پوشه
باید روی یک
سیستمفایل
بومی (native) قرار
داشته باشد.
تنها زمانی
رعایت
میشود که
core.fsmonitor روی true
تنظیم شده
باشد.
gc.aggressiveDepth
پارامتر
عمق (depth) مورد
استفاده در
الگوریتم
فشردهسازی
دلتا که
توسط
git gc --aggressive به
کار میرود.
مقدار
پیشفرض آن 50
است، که
پیشفرض
گزینه
--depth در
زمان عدم
استفاده از
--aggressive میباشد.
برای
جزئیات
بیشتر
مستندات
مربوط به
گزینه --depth در
git-repack(1) را
ببینید.
gc.aggressiveWindow
پارامتر
اندازه
پنجره مورد
استفاده در
الگوریتم
فشردهسازی
دلتا که
توسط
git gc --aggressive به
کار میرود.
مقدار
پیشفرض آن 250
است، که
اندازه
پنجرهای
بسیار
تهاجمیتر
از مقدار
پیشفرض 10
برای
--window است.
برای
جزئیات
بیشتر
مستندات
مربوط به
گزینه --window در
git-repack(1) را
ببینید.
gc.auto
هنگامی
که تقریباً
بیش از این
تعداد شیء
مجزا (loose objects) در
مخزن وجود
داشته
باشد،
git gc --auto
آنها را
بستهبندی
(pack) میکند.
برخی
دستورات
سطح بالا (Porcelain)
از این
دستور برای
انجام
گهگاه
جمعآوری
زباله سبک
استفاده
میکنند.
مقدار
پیشفرض 6700
است.
تنظیم این
مقدار روی 0
نه تنها
بستهبندی
خودکار بر
اساس تعداد
اشیاء مجزا
را غیرفعال
میکند،
بلکه هر روش
شهودی
دیگری را
نیز که git gc --auto
در غیر این
صورت برای
تشخیص وجود
کار
انجامدادنی
استفاده
میکرد
(مانند gc.autoPackLimit)،
غیرفعال
میسازد.
gc.autoPackLimit
هنگامی
که بیش از
این تعداد
بسته وجود
داشته باشد
که با فایل
*.keep در مخزن
علامتگذاری
نشدهاند،
git gc --auto آنها
را در یک
بسته
بزرگتر
تجمیع
میکند.
مقدار
پیشفرض 50
است. تنظیم
آن روی 0 این
قابلیت را
غیرفعال
میکند.
تنظیم
gc.auto
روی 0 نیز این
را غیرفعال
خواهد کرد.
متغیر
پیکربندی
gc.bigPackThreshold در زیر
را ببینید.
در صورت
استفاده،
بر نحوه
عملکرد
محدودیت
بستهبندی
خودکار
تأثیر
میگذارد.
gc.autoDetach
کاری
میکند که git
gc --auto در صورت
پشتیبانی
سیستم،
بلافاصله
بازگردد و
در
پسزمینه
اجرا شود.
پیشفرض true
است. این
متغیر
پیکربندی
به عنوان
جایگزین
پشتیبان در
صورت تنظیم
نبودن maintenance.autoDetach
عمل
میکند.
gc.bigPackThreshold
اگر
غیرصفر
باشد،
هنگام
اجرای
git gc
تمام
بستههای
غیرکرافتی
(non-cruft) بزرگتر
از این حد
نگهداشته
میشوند.
این بسیار
شبیه به
--keep-largest-pack
است با این
تفاوت که
تمام
بستههای
غیرکرافتی
که به این حد
آستانه
میرسند
نگهداشته
میشوند،
نه فقط
بزرگترین
بسته.
پیشفرض
صفر است.
پسوندهای
رایج واحد
k،
m یا
g
پشتیبانی
میشوند.
توجه
داشته
باشید که
اگر تعداد
بستههای
نگهداشتهشده
بیش از gc.autoPackLimit
باشد، این
متغیر
پیکربندی
نادیده
گرفته
میشود و
تمام
بستهها به
جز بسته
پایه
دوباره
بستهبندی
(repack) خواهند شد.
پس از این،
تعداد
بستهها
باید به زیر
gc.autoPackLimit برسد و
gc.bigPackThreshold دوباره
رعایت شود.
اگر مقدار
حافظه
تخمینی
برای اجرای
روان git repack در
دسترس
نباشد و gc.bigPackThreshold
تنظیم نشده
باشد،
بزرگترین
بسته نیز
مستثنی
خواهد شد
(این معادل
اجرای git gc
با --keep-largest-pack است).
gc.writeCommitGraph
اگر true
باشد،
هنگام
اجرای
git-gc(1)
فرآیند gc
فایل commit-graph را
بازنویسی
خواهد کرد.
هنگام
استفاده از
git gc --auto، در
صورت نیاز
به
خانهتکانی
و نگهداری
(housekeeping)، نمودار
کامیت
بهروزرسانی
خواهد شد.
پیشفرض true
است. برای
جزئیات به
git-commit-graph(1) مراجعه
کنید.
gc.logExpiry
اگر فایل
gc.log وجود
داشته
باشد، git gc --auto
به جای
اجرا،
محتوای آن
را چاپ کرده
و با وضعیت
صفر خارج
میشود،
مگر اینکه
عمر آن فایل
بیشتر از gc.logExpiry
باشد.
پیشفرض "1.day"
است. برای
روشهای
بیشتر
تعیین
مقدار آن،
به gc.pruneExpire
مراجعه
کنید.
gc.packRefs
اجرای git
pack-refs در یک
مخزن، آن را
برای
نسخههای Git
قبل از 1.5.1.2 روی
پروتکلهای
انتقال
ساده (dumb transports)
مانند HTTP
غیرقابل
کلون
میکند. این
متغیر
تعیین
میکند که
آیا git gc
دستور git pack-refs
را اجرا کند
یا خیر.
میتواند
روی notbare
تنظیم شود
تا در تمام
مخازن
غیرلخت (non-bare)
فعال گردد
یا
میتواند
روی یک
مقدار بولی
تنظیم شود.
پیشفرض true
است.
gc.cruftPacks
ذخیره
اشیاء
غیرقابلدسترس
در یک بسته
کرافت (cruft pack؛
نگاه کنید
به
git-repack(1)) به
جای اشیاء
مجزا (loose objects).
پیشفرض
true
است.
gc.maxCruftSize
محدود
کردن
اندازه
بستههای
کرافت جدید
هنگام
بستهبندی
مجدد. در
صورت تعیین
همزمان با
--max-cruft-size، گزینه
خط فرمان
اولویت
دارد. گزینه
--max-cruft-size در
git-repack(1) را
ببینید.
gc.pruneExpire
هنگامی
که
git gc اجرا
میشود،
دستور
prune --expire 2.weeks.ago
(و در صورت
استفاده از
بستههای
کرافت از
طریق
gc.cruftPacks یا
--cruft، دستور
repack
--cruft --cruft-expiration 2.weeks.ago) را
فراخوانی
میکند.
مهلت مقرر (grace
period) را با این
متغیر
پیکربندی
تغییر دهید.
مقدار "now"
میتواند
برای
غیرفعال
کردن این
مهلت و
پاکسازی
فوری اشیاء
غیرقابلدسترس
استفاده
شود، یا "never"
میتواند
برای متوقف
کردن کامل
پاکسازی
استفاده
گردد. این
ویژگی به
جلوگیری از
خرابی
دادهها در
زمانی که
git gc
همزمان با
فرآیند
دیگری در
حال نوشتن
روی مخزن
اجرا
میشود کمک
میکند؛
بخش "NOTES" در
git-gc(1)
را ببینید.
gc.worktreePruneExpire
هنگامی
که git gc اجرا
میشود،
دستور git worktree prune --expire
3.months.ago را
فراخوانی
میکند. این
متغیر
پیکربندی
میتواند
برای تعیین
مهلت مقرر
متفاوتی
استفاده
شود. مقدار
"now" ممکن است
برای
غیرفعال
کردن مهلت
مقرر و هرس
فوری $GIT_DIR/worktrees
استفاده
شود، یا "never"
برای متوقف
کردن
پاکسازی
به کار رود.
gc.reflogExpire, gc.<pattern>.reflogExpire
دستور git reflog
expire مدخلهای
رفلاگ (reflog)
قدیمیتر
از این زمان
را حذف
میکند؛
پیشفرض 90
روز است.
مقدار "now"
تمام
مدخلها را
فوراً
منقضی
میکند، و
"never" انقضا را
بهطور
کامل متوقف
میسازد. با
قرار دادن
"<pattern>" (مثلاً
"refs/stash") در وسط،
این تنظیم
تنها بر
مراجعی که
با <pattern>
مطابقت
دارند
اعمال
میشود.
gc.reflogExpireUnreachable,
gc.<pattern>.reflogExpireUnreachable
دستور
git reflog
expire مدخلهای
رفلاگ
قدیمیتر
از این زمان
را که از نوک
(tip) فعلی قابل
دسترس
نیستند حذف
میکند؛
پیشفرض 30
روز است.
مقدار "now"
تمام
مدخلها را
فوراً
منقضی
میکند، و
"never" انقضا را
بهطور
کامل متوقف
میسازد. با
قرار دادن
"<pattern>" (مثلاً
"refs/stash") در وسط،
تنظیم تنها
بر مراجعی
که با <pattern>
مطابقت
دارند
اعمال
میشود.
این نوع
مدخلها
معمولاً در
نتیجه
استفاده از
git commit --amend یا git
rebase ایجاد
میشوند و
کامیتهای
قبل از رخ
دادن اصلاح
(amend) یا ریبیس
هستند. از
آنجا که این
تغییرات
بخشی از
پروژه فعلی
نیستند،
بیشتر
کاربران
تمایل
دارند
آنها را
زودتر
منقضی
کنند، به
همین دلیل
پیشفرض
تهاجمیتر
از gc.reflogExpire است.
gc.recentObjectsHook
هنگام
بررسی
اینکه آیا
یک شیء حذف
شود یا خیر
(چه هنگام
تولید یک
بسته کرافت
یا ذخیره
اشیاء
غیرقابلدسترس
بهصورت
مجزا)، از شل
برای اجرای
دستور(های)
مشخصشده
استفاده
میکند.
خروجی
آنها به
عنوان
شناسههای
اشیائی
تفسیر
میشود که Git
صرفنظر از
سن
واقعیشان،
آنها را به
عنوان
"اخیر" (recent) در
نظر
میگیرد. با
در نظر
گرفتن mtime
آنها به
عنوان
"اکنون"، هر
شیء (و
نوادگان آن)
ذکرشده در
خروجی،
صرفنظر از
سن
واقعیشان
نگهداشته
خواهند شد.
خروجی
باید
دقیقاً
شامل یک
شناسه
هگزادسیمال
شیء در هر خط
باشد و نه
چیز دیگر.
اشیائی که
در مخزن
یافت نشوند
نادیده
گرفته
میشوند.
چندین قلاب
(hook) پشتیبانی
میشوند،
اما همگی
باید با
موفقیت
خارج شوند،
در غیر این
صورت
عملیات
(تولید بسته
کرافت یا
باز کردن
بستههای
اشیاء
غیرقابلدسترس)
متوقف
خواهد شد.
gc.repackFilter
هنگام
بستهبندی
مجدد (repack)، از
فیلتر
مشخصشده
برای
انتقال
اشیاء خاص
به یک فایل
بسته
جداگانه
استفاده
میکند.
گزینه
--filter=<filter-spec> در
git-repack(1) را
ببینید.
gc.repackFilterTo
هنگام
بستهبندی
مجدد و
استفاده از
یک فیلتر
(نگاه کنید
به
gc.repackFilter)،
مکان
مشخصشده
برای ایجاد
فایل
بستهای که
شامل اشیاء
فیلترشده
است
استفاده
خواهد شد.
هشدار:
مکان
مشخصشده
باید قابل
دسترس
باشد، برای
مثال با
استفاده از
مکانیزم Git
alternates، در غیر
این صورت
ممکن است
مخزن توسط Git
فاسد در نظر
گرفته شود
چرا که ممکن
است نتواند
به اشیاء
موجود در آن
فایل بسته
دسترسی
پیدا کند.
گزینه
--filter-to=<dir>
در
git-repack(1) و بخش
objects/info/alternates از
gitrepository-layout(5)
را ببینید.
gc.rerereResolved
ثبتهای
ادغام با
تعارضی که
قبلاً حل
کردهاید،
هنگام
اجرای
git rerere gc
برای این
تعداد روز
نگهداری
میشوند.
همچنین
میتوانید
از عبارات
خواناتر
برای انسان
مانند "1.month.ago" و
غیره
استفاده
کنید.
پیشفرض 60
روز است. به
git-rerere(1) مراجعه
کنید.
gc.rerereUnresolved
ثبتهای
ادغام با
تعارضی که
حل
نکردهاید،
هنگام
اجرای
git rerere gc
برای این
تعداد روز
نگهداری
میشوند.
همچنین
میتوانید
از عبارات
خواناتر
برای انسان
مانند "1.month.ago" و
غیره
استفاده
کنید.
پیشفرض 15
روز است. به
git-rerere(1) مراجعه
کنید.
gitcvs.commitMsgAnnotation
این رشته
را به
انتهای هر
پیام کامیت
پیوست
میکند.
برای
غیرفعال
کردن این
ویژگی، آن
را روی رشته
خالی تنظیم
کنید.
پیشفرض "via git-CVS
emulator" است.
gitcvs.enabled
مشخص
میکند که
آیا رابط
سرور CVS برای
این مخزن
فعال است یا
خیر. به
git-cvsserver(1)
مراجعه
کنید.
gitcvs.logFile
مسیر
فایل لاگی
که رابط
کاربری
سرور CVS در آن
خب... موارد
مختلف را
لاگ میکند.
به
git-cvsserver(1)
مراجعه
کنید.
gitcvs.usecrlfattr
اگر true
باشد، سرور
ویژگیهای
تبدیل
پایان خط را
برای
فایلها
جستجو
میکند تا
حالتهای
-k
مورد
استفاده را
تعیین کند.
اگر این
مشخصهها Git
را وادار
کنند فایلی
را به عنوان
متنی در نظر
بگیرد،
حالت
-k خالی
رها میشود
تا
کلاینتهای
CVS با آن به
عنوان متن
رفتار کنند.
اگر آنها
تبدیل متن
را سرکوب
کنند، فایل
با حالت
-kb
تنظیم
میشود که
هرگونه
دستکاری
خطوط جدید
را که
کلاینت
ممکن است در
غیر این
صورت انجام
دهد، سرکوب
میکند. اگر
مشخصهها
اجازه
تعیین نوع
فایل را
ندهند،
gitcvs.allBinary
استفاده
میشود. به
gitattributes(5) مراجعه
کنید.
gitcvs.allBinary
اگر gitcvs.usecrlfattr
حالت صحیح -kb
را تعیین
نکند، این
متغیر به
کار میرود.
اگر true باشد،
تمام
فایلهای
تعیینتکلیفنشده
در حالت -kb به
کلاینت
ارسال
میشوند.
این کار
باعث
میشود
کلاینت با
آنها به
عنوان
فایلهای
باینری
رفتار کند،
که هرگونه
دستکاری
خطوط جدید
را سرکوب
میکند. از
طرف دیگر،
اگر روی "guess"
تنظیم شود،
محتویات
فایل برای
تصمیمگیری
در مورد
باینری
بودن آن
بررسی
میشود،
مشابه core.autocrlf.
gitcvs.dbName
پایگاه
دادهای که
توسط git-cvsserver
برای کش
کردن
اطلاعات
بازبینی
برگرفته از
مخزن Git
استفاده
میشود.
معنی دقیق
به درایور
پایگاه
داده
استفادهشده
بستگی
دارد؛ برای
SQLite (که درایور
پیشفرض
است) این یک
نام فایل
است. از
جایگزینی
متغیرها
پشتیبانی
میکند
(برای
جزئیات به
git-cvsserver(1) مراجعه
کنید). نباید
شامل
نقطهویرگول
(;) باشد.
پیشفرض:
%Ggitcvs.%m.sqlite
gitcvs.dbDriver
درایور Perl DBI
استفادهشده.
در اینجا
میتوانید
هر درایور
موجود را
برای این
منظور مشخص
کنید، اما
ممکن است
کار نکند.
نرمافزار
git-cvsserver با
DBD::SQLite
آزمایش
شده، گزارش
شده که با
DBD::Pg
کار
میکند، و
گزارش شده
که با
DBD::mysql کار
نمیکند.
ویژگی
آزمایشی.
نباید شامل
دو دونقطه (
:)
باشد.
پیشفرض:
SQLite.
به
git-cvsserver(1)
مراجعه
کنید.
gitcvs.dbUser, gitcvs.dbPass
کاربر و
رمز عبور
پایگاه
داده. تنها
در صورتی
مفید است که
gitcvs.dbDriver تنظیم
شده باشد،
زیرا SQLite
مفهومی از
کاربران
و/یا رمزهای
عبور
پایگاه
داده ندارد.
gitcvs.dbUser از
جایگزینی
متغیرها
پشتیبانی
میکند
(برای
جزئیات به
git-cvsserver(1) مراجعه
کنید).
gitcvs.dbTableNamePrefix
پیشوند
نام جداول
پایگاه
داده. به نام
تمام جداول
پایگاه
داده مورد
استفاده
اضافه
میشود و
امکان
استفاده از
یک پایگاه
داده واحد
برای چندین
مخزن را
فراهم
میکند. از
جایگزینی
متغیر
پشتیبانی
میکند
(برای
جزئیات به
git-cvsserver(1) مراجعه
کنید). هر
کاراکتر
غیرالفبایی
با زیرخط (underscore)
جایگزین
خواهد شد.
تمام
متغیرهای gitcvs
به جز gitcvs.usecrlfattr و
gitcvs.allBinary را
میتوان به
عنوان
gitcvs.<access_method>.<varname> نیز
مشخص کرد (که
در آن access_method
یکی از
مقادیر "ext" و
"pserver" است) تا
فقط برای
روش دسترسی
مشخصشده
اعمال
شوند.
gitweb.category, gitweb.description, gitweb.owner, gitweb.url
gitweb.avatar, gitweb.blame, gitweb.grep, gitweb.highlight,
gitweb.patches, gitweb.pickaxe, gitweb.remote_heads, gitweb.showSizes,
gitweb.snapshot
gpg.program
مسیر
برنامهای
که باید
هنگام
ایجاد یا
اعتبارسنجی
امضای PGP به
جای "gpg"
استفاده
شود. این
برنامه
باید از
همان رابط
خط فرمان GPG
پشتیبانی
کند، به این
صورت که
برای
اعتبارسنجی
یک امضای
مجزا (detached signature)،
دستور "gpg --verify
$signature - <$file" اجرا
میشود، و
انتظار
میرود
برنامه با
خروج با کد 0
امضای
معتبر را
اعلام کند.
برای تولید
یک امضای
مجزای
محافظتشده
با زره اسکی
(ASCII-armored)، ورودی
استاندارد
"gpg -bsau $key" با
محتوایی که
باید امضا
شود تغذیه
میگردد و
انتظار
میرود
برنامه
نتیجه را به
خروجی
استاندارد
خود
بفرستد.
gpg.format
فرمت
کلید مورد
استفاده
هنگام امضا
با
--gpg-sign را
مشخص
میکند.
پیشفرض "openpgp"
است. سایر
مقادیر
مجاز
عبارتند از
"x509" و "ssh".
برای فرمت
امضا که بر
اساس gpg.format
انتخابشده
متفاوت
است، به
gitformat-signature(5)
مراجعه
کنید.
gpg.<format>.program
از این
برای
سفارشیسازی
برنامه
استفادهشده
برای فرمت
امضایی که
انتخاب
کردهاید
استفاده
کنید (نگاه
کنید به gpg.program و
gpg.format). gpg.program هنوز
میتواند
به عنوان یک
مترادف
قدیمی برای
gpg.openpgp.program
استفاده
شود. مقدار
پیشفرض
برای gpg.x509.program
برابر "gpgsm" و
برای gpg.ssh.program
برابر "ssh-keygen"
است.
gpg.minTrustLevel
حداقل
سطح اعتماد
را برای
اعتبارسنجی
امضا مشخص
میکند. اگر
این گزینه
تنظیم نشده
باشد،
اعتبارسنجی
امضا برای
عملیاتهای
ادغام
نیازمند
کلیدی با
حداقل سطح
اعتماد
marginal
است. سایر
عملیاتهایی
که
اعتبارسنجی
امضا را
انجام
میدهند به
کلیدی با
حداقل
اعتماد
undefined
نیاز دارند.
تنظیم این
گزینه سطح
اعتماد
مورد نیاز
را برای
تمام
عملیاتها
بازنویسی
میکند.
مقادیر
پشتیبانیشده
به ترتیب
صعودی
اهمیت:
•undefined
•never
•marginal
•fully
•ultimate
gpg.ssh.defaultKeyCommand
این
دستور
زمانی اجرا
میشود که
user.signingkey تنظیم
نشده باشد و
امضای ssh
درخواست
شود. در صورت
خروج موفق،
انتظار
میرود یک
کلید عمومی
معتبر ssh که با
پیشوند key::
شروع
میشود در
خط اول
خروجی آن
باشد. این
امر امکان
استفاده از
اسکریپتی
را برای
جستجوی
پویای کلید
عمومی صحیح
فراهم
میکند،
زمانی که
پیکربندی
ایستا برای
user.signingKey عملی
نباشد؛
برای مثال
هنگامی که
کلیدها یا
گواهیهای SSH
بهطور
مکرر تعویض
(rotate) میشوند
یا انتخاب
کلید مناسب
به عوامل
خارجی
وابسته است
که برای git
ناشناخته
هستند.
gpg.ssh.allowedSignersFile
فایلی
شامل
کلیدهای
عمومی ssh که
مایل به
اعتماد به
آنها
هستید. فایل
شامل یک یا
چند خط از
هویتها (principals) و
به دنبال آن
یک کلید
عمومی ssh است.
به عنوان
مثال:
user1@example.com,user2@example.com
ssh-rsa AAAAX1... برای
جزئیات به
بخش "ALLOWED SIGNERS" در
ssh-keygen(1) مراجعه
کنید. هویت (principal)
فقط برای
شناسایی
کلید
استفاده
میشود و
هنگام
اعتبارسنجی
امضا در
دسترس است.
برخلاف gpg،
در SSH مفهومی
از سطوح
اعتماد
وجود ندارد.
برای تمایز
بین
امضاهای
معتبر و
امضاهای
قابل
اعتماد،
سطح اعتماد
اعتبارسنجی
امضا در
صورتی که
کلید عمومی
در allowedSignersFile وجود
داشته باشد
روی fully
تنظیم
میشود. در
غیر این
صورت سطح
اعتماد undefined
خواهد بود و
دستور git verify-commit/tag
ناموفق
خواهد شد.
این فایل
میتواند
در مکانی
خارج از
مخزن تنظیم
شود و هر
توسعهدهنده
مخزن
اعتماد
خودش را
نگهداری
کند. یک سرور
مخزن مرکزی
میتواند
این فایل را
بهطور
خودکار از
کلیدهای ssh
دارای
دسترسی پوش
برای
اعتبارسنجی
کد تولید
کند. در یک
محیط
شرکتی، این
فایل
احتمالاً
در یک مکان
سراسری از
طریق
اتوماسیونی
که کلیدهای
ssh
توسعهدهندگان
را مدیریت
میکند
تولید
میشود.
مخزنی که
فقط اجازه
کامیتهای
امضاشده را
میدهد
میتواند
فایل را در
خود مخزن با
استفاده از
یک مسیر
نسبت به
بالاترین
سطح درخت
کاری ذخیره
کند. به این
ترتیب فقط
کسانی که
دارای یک
کلید معتبر
هستند
میتوانند
کلیدهایی
را در
جاکلیدی
اضافه یا
تغییر
دهند.
از OpenSSH 8.8 به
بعد، این
فایل امکان
تعیین طول
عمر کلید را
با استفاده
از
گزینههای
valid-after و valid-before فراهم
میکند. اگر
کلید
امضاکننده
در زمان
ایجاد امضا
معتبر بوده
باشد، Git
امضاها را
معتبر
علامتگذاری
میکند. این
به کاربران
امکان
میدهد
کلید امضا
را بدون
باطل کردن
تمام
امضاهای
قبلی تغییر
دهند.
استفاده
از یک کلید CA
مربوط به SSH
با گزینه cert-authority
(نگاه کنید
به بخش "CERTIFICATES"
در ssh-keygen(1)) نیز
معتبر است.
gpg.ssh.revocationFile
یک SSH KRL یا
فهرستی از
کلیدهای
عمومی
باطلشده
(بدون
پیشوند
هویت). برای
جزئیات به
ssh-keygen(1) مراجعه
کنید. اگر یک
کلید عمومی
در این فایل
پیدا شود،
همیشه
دارای سطح
اعتماد "never"
در نظر
گرفته
میشود و
امضاها
نامعتبر
نمایش داده
خواهند شد.
grep.lineNumber
اگر روی
true تنظیم
شود، گزینه
-n را بهطور
پیشفرض
فعال
میکند.
grep.column
اگر روی
true تنظیم
شود، گزینه
--column را
بهطور
پیشفرض
فعال
میکند.
grep.patternType
رفتار
پیشفرض
تطبیق الگو
را تنظیم
میکند.
استفاده از
مقدار basic،
extended، fixed یا perl
به ترتیب
گزینه --basic-regexp،
--extended-regexp، --fixed-strings یا
--perl-regexp را فعال
میکند، در
حالی که
مقدار default از
گزینه grep.extendedRegexp
برای
انتخاب بین
basic و extended
استفاده
خواهد کرد.
grep.extendedRegexp
اگر روی
true تنظیم
شود، گزینه
--extended-regexp را
بهطور
پیشفرض
فعال
میکند. این
گزینه
زمانی که
گزینه grep.patternType
روی مقداری
غیر از default
تنظیم شده
باشد،
نادیده
گرفته
میشود.
grep.threads
تعداد
نخهای
پردازشی (worker threads)
دستور grep که
باید
استفاده
شوند. اگر
تنظیم نشود
(یا روی 0
تنظیم شود)، Git
به اندازه
تعداد
هستههای
منطقی
موجود از
نخها
استفاده
خواهد کرد.
grep.fullName
اگر روی
true تنظیم
شود، گزینه
--full-name را
بهطور
پیشفرض
فعال
میکند.
grep.fallbackToNoIndex
اگر روی
true تنظیم
شود، در
صورتی که git
grep خارج از یک
مخزن git اجرا
گردد، به git
grep --no-index رجوع
خواهد کرد.
پیشفرض false
است.
gui.commitMsgWidth
عرض
پنجره پیام
کامیت را در
git-gui(1) تعیین
میکند.
پیشفرض "75"
است.
gui.diffContext
مشخص
میکند که
چه تعداد خط
بافت (context lines)
باید در
فراخوانیهای
diff ایجادشده
توسط
git-gui(1)
استفاده
شود.
پیشفرض "5"
است.
gui.displayUntracked
مشخص
میکند که
آیا
git-gui(1)
فایلهای
ردیابینشده
(untracked) را در
فهرست
فایلها
نمایش دهد
یا خیر.
پیشفرض "true"
است.
gui.encoding
رمزگذاری
کاراکتر
پیشفرض را
برای نمایش
محتوای
فایل در
git-gui(1) و
gitk(1) مشخص
میکند. این
مقدار
میتواند
با تنظیم
صفت
encoding برای
فایلهای
مربوطه
بازنویسی
شود (نگاه
کنید به
gitattributes(5)).
اگر این
گزینه
تنظیم
نشود،
ابزارها به
کدگذاری
محلی (locale)
بازمیگردند.
gui.matchTrackingBranch
مشخص
میکند که
آیا
شاخههای
جدید
ایجادشده
با
git-gui(1)
بهطور
پیشفرض
باید
شاخههای
ریموت با
نامهای
مطابقتدار
را ردیابی
کنند یا خیر.
پیشفرض:
"false".
gui.newBranchTemplate
به عنوان
نام
پیشنهادی
هنگام
ایجاد
شاخههای
جدید با
استفاده از
git-gui(1) استفاده
میشود.
gui.pruneDuringFetch
مقدار "true"
اگر
git-gui(1) باید
هنگام
انجام
واکشی (fetch)،
شاخههای
ردیابی
ریموت را
هرس (prune) کند.
مقدار
پیشفرض "false"
است.
gui.trustmtime
مشخص
میکند که
آیا
git-gui(1) باید
به برچسب
زمانی
تغییر فایل
(modification timestamp) اعتماد
کند یا خیر.
بهطور
پیشفرض به
برچسبهای
زمانی
اعتماد
نمیشود.
gui.spellingDictionary
لغتنامه
مورد
استفاده
برای
غلطگیری
املایی
پیامهای
کامیت در
git-gui(1)
را مشخص
میکند. در
صورت تنظیم
روی "none"،
بررسی املا
خاموش
میشود.
gui.fastCopyBlame
اگر true
باشد، git gui blame
برای تشخیص
مکان اصلی
به جای -C -C از
-C استفاده
میکند. این
کار در
مخازن
بسیار
بزرگ، عمل blame
را به بهای
تشخیص کمتر
رونوشتها (copy
detection)، بهطور
چشمگیری
سریعتر
میکند.
gui.copyBlameThreshold
آستانه
مورد
استفاده در
تشخیص مکان
اصلی در
git gui blame
را که بر حسب
کاراکترهای
حرفیعددی
اندازهگیری
میشود،
مشخص
میکند.
برای
اطلاعات
بیشتر در
مورد تشخیص
رونوشت به
راهنمای
git-blame(1)
مراجعه
کنید.
gui.blamehistoryctx
شعاع
بافت
تاریخچه را
بر حسب روز
برای نمایش
در
gitk(1) برای
کامیت
انتخابشده
مشخص
میکند،
زمانی که
آیتم منوی
Show
History Context از
git gui blame
فراخوانی
شود. اگر این
متغیر روی
صفر تنظیم
شود، کل
تاریخچه
نشان داده
میشود.
gui.GCWarning
مشخص
میکند که
آیا
git-gui(1)
هنگامی که git
تعداد
زیادی شیء
مجزا را در
مخزن
شناسایی
میکند،
باید
درخواست
جمعآوری
زباله را
نمایش دهد
یا خیر.
مقدار
پیشفرض "true"
است.
guitool.<name>.cmd
خط فرمان
شل را برای
اجرا در
هنگام
فراخوانی
مورد
مربوطه از
منوی
Tools در
git-gui(1) مشخص
میکند. این
گزینه برای
هر ابزاری
الزامی است.
دستور از
ریشه پوشه
کاری اجرا
میشود و در
محیط، نام
ابزار را به
عنوان
GIT_GUITOOL،
نام فایل
انتخابشده
فعلی را به
عنوان
FILENAME، و
نام شاخه
فعلی را به
عنوان
CUR_BRANCH
دریافت
میکند (اگر
هد جداشده [detached]
باشد،
CUR_BRANCH
خالی است).
guitool.<name>.needsFile
ابزار را
تنها در
صورتی اجرا
میکند که
یک تفاوت (diff)
در رابط
کاربری
انتخاب شده
باشد. این
تضمین
میکند که
FILENAME خالی
نباشد.
guitool.<name>.noConsole
دستور را
بهطور
بیصدا و
بدون ایجاد
پنجرهای
برای نمایش
خروجی آن
اجرا
میکند.
guitool.<name>.noRescan
پس از
اتمام
اجرای
ابزار،
پوشه کاری
را برای
تغییرات
دوباره
پویش (rescan)
نمیکند.
guitool.<name>.confirm
قبل از
اجرای
واقعی
ابزار، یک
کادر
گفتگوی
تأیید را
نمایش
میدهد.
guitool.<name>.argPrompt
یک
آرگومان
رشتهای از
کاربر
درخواست
میکند و آن
را از طریق
متغیر
محیطی ARGS به
ابزار
ارسال
مینماید.
از آنجا که
درخواست
آرگومان
متضمن
تأیید است،
در صورت
فعال بودن
این گزینه،
گزینه confirm
هیچ اثری
ندارد. اگر
گزینه روی
true، yes یا 1
تنظیم شده
باشد، کادر
گفتگو از یک
اعلان
عمومی
توکار
استفاده
میکند؛ در
غیر این
صورت مقدار
دقیق متغیر
به کار
میرود.
guitool.<name>.revPrompt
یک
بازنگری (revision)
معتبر واحد
را از کاربر
درخواست
میکند و
متغیر
محیطی REVISION را
تنظیم
مینماید.
از
جنبههای
دیگر این
گزینه شبیه
به argPrompt است و
میتواند
همراه با آن
استفاده
شود.
guitool.<name>.revUnmerged
تنها
شاخههای
ادغامنشده
را در
زیرگفتگوی
revPrompt نشان
میدهد. این
برای
ابزارهای
مشابه merge یا rebase
مفید است،
اما برای
مواردی
مانند checkout یا reset
کاربرد
ندارد.
guitool.<name>.title
عنوان
مورد
استفاده
برای کادر
گفتگوی
ورودی را
مشخص
میکند.
پیشفرض
نام ابزار
است.
guitool.<name>.prompt
رشته
اعلان
عمومی را
برای نمایش
در بالای
کادر
گفتگو، قبل
از بخشهای
مربوط به argPrompt
و revPrompt مشخص
میکند.
مقدار
پیشفرض
شامل خود
دستور
واقعی است.
help.browser
مرورگری
را مشخص
میکند که
برای نمایش
راهنما در
قالب
web
استفاده
خواهد شد. به
git-help(1) مراجعه
کنید.
help.format
قالب
پیشفرض
راهنمای
استفادهشده
توسط
git-help(1) را
بازنویسی
میکند.
مقادیر
man،
info،
web و
html
پشتیبانی
میشوند.
man
پیشفرض
است.
web و
html
یکسان
هستند.
help.autoCorrect
اگر git
غلطهای
املایی را
تشخیص دهد و
بتواند
دقیقاً یک
دستور
معتبر شبیه
به خطا را
شناسایی
کند، سعی
میکند
دستور صحیح
را پیشنهاد
دهد یا حتی
پیشنهاد را
بهطور
خودکار
اجرا نماید.
مقادیر
ممکن برای
پیکربندی
عبارتند از:
•0، "false"،
"off"، "no"، "show":
نمایش
دستور
پیشنهادی
(پیشفرض).
•1، "true"،
"on"، "yes"، "immediate":
اجرای فوری
دستور
پیشنهادی.
•عدد
مثبت > 1:
اجرای
دستور
پیشنهادی
پس از
دهمثانیههای
مشخصشده (0.1
ثانیه).
•"never": هیچ
دستور
پیشنهادی
را اجرا یا
نمایش
ندهد.
•"prompt":
پیشنهاد را
نشان داده و
برای اجرای
دستور
تأییدیه
بخواهد.
help.htmlPath
مسیری را
مشخص
میکند که
مستندات HTML در
آن قرار
دارند.
مسیرهای
سیستمفایل
و
نشانیهای
وب (URLs)
پشتیبانی
میشوند.
هنگامی که
راهنما در
قالب web
نمایش داده
میشود،
صفحات HTML با
این مسیر
پیشوند
خواهند شد.
پیشفرض
این مسیر
مستندات
مربوط به
نصب Git شما
است.
hook.<friendly-name>.command
دستوری
که برای
hook.<friendly-name> باید
اجرا شود.
<friendly-name> نامی
یکتاست که
این قلاب را
شناسایی
میکند.
رویدادهای
قلابی که
دستور را
فراخوانی
میکنند با
hook.<friendly-name>.event
پیکربندی
میشوند.
این مقدار
میتواند
یک مسیر
اجرایی یا
یک تکخطی
شل (shell oneliner) باشد.
اگر بیش از
یک مقدار
برای همان
<friendly-name> مشخص
شود، تنها
آخرین
مقدار
تجزیهشده
استفاده
میشود. به
git-hook(1) مراجعه
کنید.
hook.<friendly-name>.event
رویدادهای
قلاب که
hook.<friendly-name> را
فعال
میکنند.
این مقدار
نام یک
رویداد
قلاب مانند
"pre-commit" یا "update"
است. (برای
فهرست کامل
رویدادهای
قلاب به
githooks(5)
مراجعه
کنید.) در
رویداد
مشخصشده،
دستور
مرتبط
hook.<friendly-name>.command
اجرا
میشود. این
یک کلید
چندمقداری
است. برای
اجرای
hook.<friendly-name> روی
چندین
رویداد،
کلید را بیش
از یک بار
مشخص کنید.
یک مقدار
خالی فهرست
رویدادها
را
بازنشانی
میکند و
رویدادهای
تعریفشده
قبلی را
برای
hook.<friendly-name>
پاک
مینماید.
به
git-hook(1)
مراجعه
کنید.
نام <friendly-name>
نباید
مشابه نام
یک رویداد
قلاب
شناختهشده
باشد (برای
مثال از
hook.pre-commit.event
استفاده
نکنید).
استفاده از
نام یک
رویداد
شناختهشده
به عنوان friendly-name
یک خطای
مهلک است
زیرا باعث
ایجاد
ابهام با
hook.<event>.enabled و
hook.<event>.jobs
میشود.
برای
نامهای
رویداد
ناشناخته،
زمانی که
<friendly-name> با
مقدار
رویداد
مطابقت
داشته باشد
یک هشدار
صادر
میشود.
hook.<friendly-name>.enabled
مشخص
میکند که
آیا قلاب
hook.<friendly-name> فعال
است یا خیر.
پیشفرض
true
است. برای
غیرفعال
کردن قلاب
بدون حذف
پیکربندی
آن، روی
false
تنظیم کنید.
این
بهویژه
زمانی مفید
است که قلاب
در یک فایل
پیکربندی
سیستمی یا
سراسری
تعریف شده
باشد و نیاز
باشد برای
یک مخزن خاص
غیرفعال
گردد. به
git-hook(1)
مراجعه
کنید.
hook.<friendly-name>.parallel
مشخص
میکند که
آیا قلاب
hook.<friendly-name> ممکن
است به صورت
موازی با
سایر
قلابها
برای همان
رویداد
اجرا شود یا
خیر.
پیشفرض
false
است. تنها
زمانی روی
true
تنظیم کنید
که اسکریپت
قلاب برای
اجرای
همروند با
سایر
قلابها
برای همان
رویداد
ایمن باشد.
اگر هر
قلابی برای
یک رویداد
این گزینه
را روی
true
تنظیم
نکرده
باشد، تمام
قلابها
برای آن
رویداد
صرفنظر از
hook.jobs به صورت
متوالی
اجرا
میشوند.
فقط
قلابهای
پیکربندیشده
(نامگذاریشده)
نیاز به
اعلام این
مورد دارند.
قلابهای
سنتی موجود
در پوشه hooks
نیازی به
این کار
ندارند و
زمانی که
تعداد
کارهای
مؤثر
بزرگتر از 1
باشد به
صورت موازی
اجرا
میشوند. به
git-hook(1) مراجعه
کنید.
hook.<event>.enabled
کلید
برای فعال
یا غیرفعال
کردن تمام
قلابها
برای
رویداد
قلاب
<event>
است. هنگامی
که روی
false
تنظیم شود،
هیچ قلابی
برای آن
رویداد
اجرا
نمیشود،
صرفنظر از
هرگونه
تنظیمات
اختصاصی
hook.<friendly-name>.enabled
برای هر
قلاب. مقدار
پیشفرض
true
است. رجوع
کنید به
git-hook(1).
نکته در
مورد
نامگذاری:
<event> باید
نام رویداد
باشد (مثلاً
pre-commit)، نه نام
دوستانه (friendly-name)
قلاب. از
آنجا که
استفاده از
یک نام
رویداد
شناختهشده
به عنوان friendly-name
مجاز نیست
(ببینید
hook.<friendly-name>.event در
بالا)، هیچ
ابهامی بین
تنظیمات .enabled
در سطح
رویداد و در
سطح هر قلاب
برای
رویدادهای
شناختهشده
وجود ندارد.
برای
رویدادهای
ناشناخته،
اگر یک friendly-name
برخلاف
هشدار با
نام رویداد
مطابقت
داشته
باشد، .enabled
تنها به
عنوان
تنظیم
اختصاصی هر
قلاب در نظر
گرفته
میشود.
hook.<event>.jobs
مشخص
میکند چه
تعداد قلاب
میتوانند
به طور
همزمان
برای
رویداد
قلاب
<event>
اجرا شوند
(مثلاً
hook.post-receive.jobs
= 4). مقدار
hook.jobs
را برای این
رویداد خاص
بازنویسی
میکند.
همان
محدودیتهای
موازیسازی
اعمال
میشوند:
این تنظیم
هیچ تاثیری
ندارد مگر
آنکه تمام
قلابهای
پیکربندیشده
برای آن
رویداد
دارای
hook.<friendly-name>.parallel
تنظیمشده
روی
true باشند.
مقدار را
روی
-1 تنظیم
کنید تا از
تعداد
هستههای
موجود CPU
استفاده
شود. باید یک
عدد صحیح
مثبت یا
-1
باشد؛
مقدار صفر
همراه با یک
هشدار رد
میشود.
رجوع کنید
به
git-hook(1).
نکته در
مورد
نامگذاری:
هرچند این
کلید شبیه
به hook.<friendly-name>.*
(یک تنظیم
اختصاصی هر
قلاب) است،
<event> باید
نام رویداد
باشد، نه
نام
دوستانه
قلاب. جزء
کلید به
صورت
تحتاللفظی
ذخیره
میشود و در
زمان اجرا
بر اساس نام
رویداد و
بدون هیچ
ترجمهای
بین این دو
فضای نام
جستجو
میشود.
کلیدی
مانند hook.my-hook.jobs
تحت "my-hook"
ذخیره
میشود اما
جستجو در
زمان اجرا
از نام
رویداد
(مثلاً "post-receive")
استفاده
میکند،
بنابراین
hook.my-hook.jobs حتی در
صورت ثبت
بودن my-hook
برای آن
رویداد،
بدون هشدار
نادیده
گرفته
میشود.
هنگام
تنظیم
hook.<event>.jobs از
hook.post-receive.jobs یا هر
نام رویداد
معتبر
دیگری
استفاده
کنید.
hook.jobs
مشخص
میکند چه
تعداد قلاب
میتوانند
در طول
اجرای
موازی
قلابها به
طور
همزمان
اجرا شوند.
در صورت عدم
تعیین،
مقدار
پیشفرض ۱
(اجرای
ترتیبی) است.
برای
استفاده از
تعداد
هستههای
موجود CPU، آن
را روی
-1
تنظیم کنید.
میتواند
بر مبنای هر
رویداد با
hook.<event>.jobs
بازنویسی
شود. برخی
قلابها
صرفنظر از
این تنظیم
همیشه به
صورت
ترتیبی
اجرا
میشوند،
زیرا روی
دادههای
مشترک عمل
میکنند و
نمیتوانند
با اطمینان
موازی شوند:
applypatch-msg, prepare-commit-msg,
commit-msg
یک فایل
پیام ثبت را
دریافت
میکنند و
ممکن است در
همان جا آن
را
بازنویسی
کنند.
pre-commit, post-checkout, push-to-checkout,
post-commit
به درخت
کاری،
ایندکس یا
وضعیت مخزن
دسترسی
پیدا
میکنند.
این تنظیم
هیچ اثری
ندارد مگر
آنکه تمام
قلابهای
پیکربندیشده
برای آن
رویداد،
hook.<friendly-name>.parallel را
روی true
تنظیم کرده
باشند.
برای
قلابهای
pre-push که به طور
عادی stdout و stderr را
مجزا نگه
میدارند،
تنظیم این
مقدار به
بیش از ۱ (یا
ارسال -j)
باعث ادغام
خروجی
استاندارد
در خطای
استاندارد
میشود تا
تفکیک
موازی
خروجیها
به درستی
صورت گیرد.
http.proxy
پروکسی HTTP
را
بازنویسی
میکند، که
معمولاً با
استفاده از
متغیرهای
محیطی
http_proxy,
https_proxy, و
all_proxy
پیکربندی
میشود
(رجوع کنید
به
curl(
1)).
علاوه بر
نحو قابل
فهم برای curl،
امکان
تعیین یک
رشته
پروکسی با
نام کاربری
اما بدون
گذرواژه
وجود دارد
که در این
حالت git تلاش
میکند به
همان
شیوهای که
برای سایر
اعتبارنامهها
عمل
میکند،
گذرواژهای
به دست آورد.
برای
اطلاعات
بیشتر
gitcredentials(7)
را ببینید.
بنابراین
ساختار
نگارش به
صورت
[protocol://][user[:password]@]proxyhost[:port][/path]
است. این
مقدار
میتواند
برای هر
ریموت
بازنویسی
شود؛
ببینید remote.<name>
.proxy
هر
پروکسی،
صرفنظر از
نحوه
پیکربندی،
باید
کاملاً
شفاف باشد و
نباید به
هیچ وجه
درخواست یا
پاسخ را
تغییر دهد،
تبدیل کند
یا بافر
نماید.
پروکسیهایی
که کاملاً
شفاف
نیستند،
شناخته شده
است که موجب
انواع
مختلفی از
خرابیها
در کار با Git
میشوند.
http.proxyAuthMethod
روشی را
تعیین
میکند که
با آن احراز
هویت در
برابر
پروکسی HTTP
انجام شود.
این تنها در
صورتی
اعمال
میشود که
رشته
پروکسی
پیکربندیشده
حاوی بخش
نام کاربری
باشد (یعنی
به فرم
user@host یا
user@host:port باشد).
این
میتواند
برای هر
ریموت
بازنویسی
شود؛
ببینید
remote.<name>.proxyAuthMethod. هر
دو
میتوانند
توسط متغیر
محیطی
GIT_HTTP_PROXY_AUTHMETHOD
بازنویسی
شوند.
مقادیر
ممکن
عبارتند از:
•anyauth -
انتخاب
خودکار یک
روش احراز
هویت مناسب.
فرض بر این
است که
پروکسی به
یک درخواست
احراز
هویتنشده
با کد وضعیت 407
و یک یا چند
سرآیند Proxy-authenticate
با روشهای
احراز هویت
پشتیبانیشده
پاسخ
میدهد. این
مقدار
پیشفرض
است.
•basic -
احراز هویت HTTP
Basic
•digest -
احراز هویت HTTP
Digest؛ این روش
از ارسال
گذرواژه به
صورت متن
آشکار به
پروکسی
جلوگیری
میکند
•negotiate -
احراز هویت
GSS-Negotiate (مقایسه
کنید با
گزینه --negotiate در
curl(1))
•ntlm -
احراز هویت NTLM
(مقایسه
کنید با
گزینه --ntlm در
curl(1))
http.proxySSLCert
مسیر
فایلی که یک
گواهی
کلاینت را
برای احراز
هویت در
برابر یک
پروکسی HTTPS
ذخیره
میکند.
میتواند
توسط متغیر
محیطی GIT_PROXY_SSL_CERT
بازنویسی
شود.
http.proxySSLKey
مسیر
فایلی که یک
کلید خصوصی
را برای
احراز هویت
در برابر یک
پروکسی HTTPS
ذخیره
میکند.
میتواند
توسط متغیر
محیطی GIT_PROXY_SSL_KEY
بازنویسی
شود.
http.proxySSLCertPasswordProtected
درخواست
گذرواژه Git
برای گواهی SSL
پروکسی را
فعال
میکند. در
غیر این
صورت، اگر
گواهی یا
کلید خصوصی
رمزنگاری
شده باشد، OpenSSL
ممکن است
مکرراً از
کاربر
درخواست
گذرواژه
کند.
میتواند
توسط متغیر
محیطی
GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED
بازنویسی
شود.
http.proxySSLCAInfo
مسیر
فایل حاوی
بسته گواهی
که باید
هنگام
استفاده از
پروکسی HTTPS
برای
اعتبارسنجی
پروکسی
استفاده
شود.
میتواند
توسط متغیر
محیطی GIT_PROXY_SSL_CAINFO
بازنویسی
شود.
http.emptyAuth
تلاش
برای احراز
هویت بدون
درخواست
نام کاربری
یا گذرواژه.
این
میتواند
برای تلاش
جهت احراز
هویت GSS-Negotiate
بدون تعیین
نام کاربری
در URL استفاده
شود، زیرا libcurl
معمولاً
برای احراز
هویت به نام
کاربری
نیاز دارد.
مقادیر
ممکن
عبارتند از:
•auto
(پیشفرض) -
ارسال
اطلاعات
اعتبارنامه
خالی تنها
در صورتی که
پاسخ 401 سرور
سازوکار
احراز
هویتی را
اعلام کند
که به آنها
نیاز دارد
(مانند GSS-Negotiate)؛
در غیر این
صورت به
درخواست از
طریق
دستیار
اعتبارنامه
رجوع
میکند.
•true -
همیشه در
همان اولین
درخواست،
پیش از
دریافت
هرگونه
پاسخ 401 از
سرور،
اعتبارنامههای
خالی ارسال
شود.
•false - هرگز
اعتبارنامههای
خالی ارسال
نشود.
سازوکارهایی
که به
اعتبارنامههای
خالی یا یک
نام کاربری
صریح نیاز
دارند،
مانند GSS-Negotiate،
کار
نخواهند
کرد.
http.proactiveAuth
تلاش
برای احراز
هویت بدون
انجام تلاش
اولیه بدون
احراز هویت
و دریافت
پاسخ 401. این
میتواند
برای
اطمینان از
احراز هویت
تمام
درخواستها
استفاده
شود. اگر
http.emptyAuth
روی true تنظیم
شده باشد،
این مقدار
تاثیری
ندارد.
اگر
دستیار
اعتبارنامه
مورد
استفاده،
یک طرح
احراز هویت
را مشخص کند
(یعنی از
طریق فیلد
authtype)، آن
مقدار
استفاده
خواهد شد؛
اگر نام
کاربری و
گذرواژه
بدون طرح
مشخصی
ارائه
شوند،
احراز هویت
Basic استفاده
میشود.
مقدار این
گزینه، طرح
درخواستی
از دستیار
را تعیین
میکند.
مقادیر
ممکن
عبارتند
از:
•basic -
درخواست
احراز هویت
Basic از دستیار.
•auto -
اجازه دادن
به دستیار
برای
انتخاب طرح
مناسب.
•none -
غیرفعال
کردن احراز
هویت
پیشدستانه.
توجه
داشته
باشید که با
این
پیکربندی
همیشه باید
از TLS
استفاده
شود، زیرا
در غیر این
صورت، در
صورت
انتخاب
احراز هویت
Basic،
اعتبارنامههای
متنی ساده
ممکن است به
راحتی و
تصادفاً
افشا شوند.
http.delegation
تفویض
اعتبارنامه
GSSAPI را کنترل
میکند.
تفویض به
طور
پیشفرض در
libcurl از نسخه
7.21.7
غیرفعال
است. این
پارامتر را
تنظیم کنید
تا به سرور
اعلام شود
در مورد
اعتبارنامههای
کاربر مجاز
به تفویض چه
چیزی است.
همراه با GSS/kerberos
استفاده
میشود.
مقادیر
ممکن
عبارتند از:
•none - هیچ
تفویضی
مجاز
نباشد.
•policy -
تفویض تنها
و تنها در
صورتی
انجام شود
که پرچم OK-AS-DELEGATE
در بلیت
سرویس Kerberos
تنظیم شده
باشد، که به
خطمشی
قلمرو
مربوط
میشود.
•always - سرور
بدون قید و
شرط مجاز به
تفویض
باشد.
http.extraHeader
ارسال یک
سرآیند HTTP
اضافی
هنگام
برقراری
ارتباط با
یک سرور. اگر
بیش از یک
مدخل از این
دست وجود
داشته
باشد، همه
آنها به
عنوان
سرآیندهای
اضافی
افزوده
میشوند.
برای امکان
بازنویسی
تنظیمات به
ارث رسیده
از
پیکربندی
سیستم، یک
مقدار خالی
سرآیندهای
اضافی را به
فهرست خالی
بازنشانی
خواهد کرد.
http.cookieFile
مسیر
فایلی حاوی
خطوط کوکی
قبلاً
ذخیرهشده،
که در صورت
تطابق با
سرور باید
در نشست http
گیت
استفاده
شوند. قالب
فایل برای
خواندن
کوکیها
باید
سرآیندهای
ساده HTTP یا
قالب فایل
کوکی Netscape/Mozilla
باشد
(ببینید curl(1)).
آن را روی یک
رشته خالی
تنظیم کنید
تا فقط
کوکیهای
جدید از
سرور
پذیرفته
شوند و در
درخواستهای
متوالی در
همان اتصال
بازگردانده
شوند. توجه
داشته
باشید که
فایل
مشخصشده
با http.cookieFile تنها
به عنوان
ورودی
استفاده
میشود مگر
اینکه http.saveCookies
تنظیم شده
باشد.
http.saveCookies
در صورت
تنظیم،
کوکیهای
دریافتشده
در طول
درخواستها
را در فایل
مشخصشده
توسط http.cookieFile
ذخیره
میکند. اگر
http.cookieFile تنظیم
نشده باشد
یا روی یک
رشته خالی
تنظیم شده
باشد، هیچ
اثری
ندارد.
http.version
هنگام
برقراری
ارتباط با
یک سرور از
نسخه
پروتکل
مشخصشده HTTP
استفاده
میکند، در
صورتی که
بخواهید بر
مقدار
پیشفرض
پافشاری
کنید. نسخه
موجود و
پیشفرض به
libcurl بستگی
دارد. در حال
حاضر
مقادیر
ممکن برای
این گزینه
عبارتند از:
•HTTP/2
•HTTP/1.1
http.curloptResolve
اطلاعات
تفکیک نام
میزبان که
هنگام
ارسال
درخواستهای
HTTP ابتدا توسط
libcurl استفاده
خواهد شد.
این
اطلاعات
باید در یکی
از
قالبهای
زیر باشد:
•[+]HOST:PORT:ADDRESS[,ADDRESS]
•-HOST:PORT
قالب اول
تمام
درخواستها
به HOST:PORT
دادهشده
را به ADDRESS(های)
ارائهشده
هدایت
میکند.
قالب دوم
تمام
مقادیر
پیکربندی
قبلی را
برای آن
ترکیب HOST:PORT
پاک میکند.
برای امکان
بازنویسی
آسان تمام
تنظیمات به
ارث رسیده
از
پیکربندی
سیستم، یک
مقدار خالی
تمام
اطلاعات
تفکیک را به
فهرست خالی
بازنشانی
میکند.
http.sslVersion
نسخه SSL
برای
استفاده
هنگام
مذاکره بر
سر اتصال SSL،
در صورتی که
بخواهید بر
مقدار
پیشفرض
پافشاری
کنید. نسخه
موجود و
پیشفرض به
این بستگی
دارد که آیا
libcurl در برابر NSS
ساخته شده
است یا OpenSSL و
همچنین به
پیکربندی
خاص
کتابخانه
رمزنوشتاری
مورد
استفاده
وابسته است.
به صورت
داخلی این
متغیر
گزینه
CURLOPT_SSL_VERSION
را تنظیم
میکند؛
برای
جزئیات
بیشتر در
مورد قالب
این گزینه و
نسخه ssl
پشتیبانیشده
به مستندات
libcurl مراجعه
کنید. در حال
حاضر
مقادیر
ممکن برای
این گزینه
عبارتند از:
•sslv2
•sslv3
•tlsv1
•tlsv1.0
•tlsv1.1
•tlsv1.2
•tlsv1.3
میتواند
توسط متغیر
محیطی GIT_SSL_VERSION
بازنویسی
شود. برای
اجبار git به
استفاده از
نسخه
پیشفرض ssl
در libcurl و
نادیده
گرفتن هر
گزینه صریح
http.sslversion، متغیر
GIT_SSL_VERSION را روی
یک رشته
خالی تنظیم
کنید.
http.sslCipherList
فهرستی
از
الگوریتمهای
رمزنگاری (ciphers) SSL
برای
استفاده
هنگام
مذاکره بر
سر یک اتصال
SSL.
الگوریتمهای
رمزنگاری
در دسترس به
این بستگی
دارند که libcurl
در برابر NSS
ساخته شده
است یا OpenSSL و
همچنین به
پیکربندی
خاص
کتابخانه
رمزنوشتاری
مورد
استفاده
وابسته است.
به صورت
داخلی این
متغیر
گزینه
CURLOPT_SSL_CIPHER_LIST
را تنظیم
میکند؛
برای
جزئیات
بیشتر
درباره
قالب این
فهرست به
مستندات libcurl
مراجعه
کنید.
میتواند
توسط متغیر
محیطی GIT_SSL_CIPHER_LIST
بازنویسی
شود. برای
اجبار git به
استفاده از
فهرست
پیشفرض
الگوریتمهای
رمزنگاری libcurl
و نادیده
گرفتن هر
گزینه صریح
http.sslCipherList، متغیر
GIT_SSL_CIPHER_LIST را روی
یک رشته
خالی تنظیم
کنید.
http.sslVerify
آیا
گواهی SSL
هنگام
واکشی یا
ارسال روی HTTPS
اعتبارسنجی
شود یا خیر.
پیشفرض true
است.
میتواند
توسط متغیر
محیطی GIT_SSL_NO_VERIFY
بازنویسی
شود.
http.sslCert
فایل
حاوی گواهی SSL
هنگام
واکشی یا
ارسال روی HTTPS.
میتواند
توسط متغیر
محیطی GIT_SSL_CERT
بازنویسی
شود.
http.sslKey
فایل
حاوی کلید
خصوصی SSL
هنگام
واکشی یا
ارسال روی HTTPS.
میتواند
توسط متغیر
محیطی GIT_SSL_KEY
بازنویسی
شود.
http.sslCertPasswordProtected
درخواست
دریافت
گذرواژه Git
برای گواهی SSL
را فعال
میکند. در
غیر این
صورت، اگر
گواهی یا
کلید خصوصی
رمزنگاری
شده باشد، OpenSSL
ممکن است
مکرراً از
کاربر
درخواست
گذرواژه
کند.
میتواند
توسط متغیر
محیطی
GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED
بازنویسی
شود.
http.sslCAInfo
فایل
حاوی
گواهیها
برای
اعتبارسنجی
طرف مقابل (peer)
هنگام
واکشی یا
ارسال روی HTTPS.
میتواند
توسط متغیر
محیطی GIT_SSL_CAINFO
بازنویسی
شود.
http.sslCAPath
مسیر
حاوی
فایلهای
گواهیهای CA
برای
اعتبارسنجی
طرف مقابل
هنگام
واکشی یا
ارسال روی HTTPS.
میتواند
توسط متغیر
محیطی GIT_SSL_CAPATH
بازنویسی
شود.
http.sslBackend
نام
بکاند SSL
برای
استفاده
(مثلاً "openssl" یا
"schannel"). اگر cURL
فاقد
پشتیبانی
برای
انتخاب
بکاند SSL در
زمان اجرا
باشد، این
گزینه
نادیده
گرفته
میشود.
http.sslCertType
نوع
گواهی
کلاینت
مورد
استفاده
هنگام
واکشی یا
ارسال روی HTTPS.
مقادیر "PEM" و
"DER" هنگام
استفاده از
بکاندهای
openssl یا gnutls
پشتیبانی
میشوند.
مقدار "P12"
روی "openssl"،
"schannel"، "securetransport" و gnutls
نسخه 8.11+
پشتیبانی
میشود.
همچنین
رجوع کنید
به CURLOPT_SSLCERTTYPE در libcurl.
میتواند
توسط متغیر
محیطی GIT_SSL_CERT_TYPE
بازنویسی
شود.
http.sslKeyType
نوع کلید
خصوصی
کلاینت
مورد
استفاده
هنگام
واکشی یا
ارسال روی HTTPS
(مثلاً "PEM"،
"DER" یا "ENG").
تنها هنگام
استفاده از
بکاند "openssl"
قابل اعمال
است. مقدار
"DER" با openssl
پشتیبانی
نمیشود. به
ویژه هنگام
تنظیم روی
"ENG" برای
احراز هویت
با
توکنهای PKCS#11
به همراه یک URL
مربوط به PKCS#11
در گزینه sslCert
بسیار مفید
است. همچنین
رجوع کنید
به CURLOPT_SSLKEYTYPE در libcurl.
میتواند
توسط متغیر
محیطی GIT_SSL_KEY_TYPE
بازنویسی
شود.
http.schannelCheckRevoke
برای
اجبار یا
غیرفعال
کردن بررسی
ابطال
گواهی در cURL
هنگامی که
http.sslBackend روی "schannel"
تنظیم شده
است،
استفاده
میشود. در
صورت عدم
تنظیم،
پیشفرض true
است.
غیرفعال
کردن این
گزینه تنها
در صورتی
ضروری است
که Git مداوماً
با خطا
مواجه شود و
پیام خطا
مربوط به
بررسی
وضعیت
ابطال یک
گواهی باشد.
اگر cURL فاقد
پشتیبانی
برای تنظیم
گزینه
مربوطه SSL در
زمان اجرا
باشد، این
گزینه
نادیده
گرفته
میشود.
http.schannelUseSSLCAInfo
از نسخه cURL
v7.60.0 به بعد،
بکاند Secure Channel
میتواند
از بسته
گواهی
ارائهشده
از طریق http.sslCAInfo
استفاده
کند، اما
این کار
انبار
گواهی
ویندوز (Windows Certificate Store)
را
بازنویسی
میکند. از
آنجا که این
رفتار به
طور
پیشفرض
مطلوب
نیست، Git به cURL
میگوید
هنگامی که
بکاند schannel
از طریق http.sslBackend
پیکربندی
شده است، به
طور
پیشفرض از
آن بسته
استفاده
نکند، مگر
اینکه http.schannelUseSSLCAInfo
این رفتار
را
بازنویسی
کند.
http.pinnedPubkey
کلید
عمومی
سرویس https. این
میتواند
نام فایل یک
فایل کلید
عمومی با
کدگذاری PEM یا
DER باشد، یا
رشتهای که
با sha256// آغاز
شده و پس از
آن هش sha256
کدگذاریشده
با base64 از کلید
عمومی قرار
دارد.
همچنین
رجوع کنید
به CURLOPT_PINNEDPUBLICKEY در libcurl.
اگر این
گزینه
تنظیم شود
اما توسط cURL
پشتیبانی
نشود، git با یک
خطا خارج
خواهد شد.
http.sslTry
تلاش
برای
استفاده از AUTH
SSL/TLS و انتقال
دادههای
رمزشده
هنگام
اتصال از
طریق
پروتکل
معمولی FTP. این
ممکن است در
صورتی لازم
باشد که
سرور FTP به
دلایل
امنیتی به
آن نیاز
داشته باشد
یا شما
بخواهید هر
زمان که
سرور FTP ریموت
از آن
پشتیبانی
میکند به
صورت امن
متصل شوید.
مقدار
پیشفرض false
است زیرا
ممکن است در
سرورهایی
با
پیکربندی
نادرست
خطاهای
اعتبارسنجی
گواهی
ایجاد کند.
http.maxRequests
چه تعداد
درخواست HTTP به
صورت موازی
اجرا شوند.
میتواند
توسط متغیر
محیطی GIT_HTTP_MAX_REQUESTS
بازنویسی
شود.
پیشفرض 5
است.
http.minSessions
تعداد
نشستهای curl
(شمارششده
در
اسلاتها)
که باید در
طول
درخواستها
باز نگه
داشته شوند.
آنها تا
زمان
فراخوانی
http_cleanup() با curl_easy_cleanup()
پایان
نخواهند
یافت. اگر USE_CURL_MULTI
تعریف نشده
باشد، این
مقدار
حداکثر به ۱
محدود
میشود.
پیشفرض ۱
است.
http.postBuffer
حداکثر
اندازه بر
حسب بایت
برای بافر
مورد
استفاده
توسط
انتقالات
هوشمند HTTP
هنگام
ارسال داده
به سیستم
ریموت با POST.
برای
درخواستهای
بزرگتر از
این اندازه
بافر، از HTTP/
1.1 و
Transfer-Encoding: chunked
استفاده
میشود تا
از ایجاد یک
فایل بسته
بسیار بزرگ
به صورت
محلی
جلوگیری
شود. مقدار
پیشفرض 1 MiB
است که برای
اکثر
درخواستها
کافی
میباشد.
توجه
داشته
باشید که
افزایش این
حد تنها
برای
غیرفعال
کردن
کدگذاری
انتقال
تکهای
موثر است و
بنابراین
فقط باید در
جایی
استفاده
شود که سرور
ریموت یا
پروکسی
تنها از HTTP/1.0
پشتیبانی
میکند یا
با
استاندارد
HTTP سازگار
نیست.
افزایش این
مقدار به
طور کلی
راهحل
موثری برای
اکثر
مشکلات push
نیست، اما
میتواند
مصرف حافظه
را به شدت
افزایش دهد
زیرا کل
بافر حتی
برای
ارسالهای
کوچک نیز
تخصیص داده
میشود.
http.lowSpeedLimit, http.lowSpeedTime
اگر سرعت
انتقال HTTP بر
حسب بایت در
ثانیه،
کمتر از http.lowSpeedLimit
برای مدت
زمانی بیش
از http.lowSpeedTime
ثانیه
باشد،
انتقال
متوقف
میشود.
میتواند
توسط
متغیرهای
محیطی GIT_HTTP_LOW_SPEED_LIMIT
و GIT_HTTP_LOW_SPEED_TIME
بازنویسی
شود.
http.keepAliveIdle
مدت زمان
انتظار بر
حسب ثانیه
را روی یک
اتصال
بیکار پیش
از ارسال
کاوشگرهای TCP
keepalive (در صورت
پشتیبانی
سیستمعامل)
مشخص
میکند. اگر
تنظیم نشده
باشد،
مقدار
پیشفرض curl
استفاده
میشود.
میتواند
توسط متغیر
محیطی GIT_HTTP_KEEPALIVE_IDLE
بازنویسی
شود.
http.keepAliveInterval
مدت زمان
انتظار بر
حسب ثانیه
میان
کاوشگرهای TCP
keepalive را (در صورت
پشتیبانی
سیستمعامل)
مشخص
میکند. اگر
تنظیم نشده
باشد،
مقدار
پیشفرض curl
استفاده
میشود.
میتواند
توسط متغیر
محیطی GIT_HTTP_KEEPALIVE_INTERVAL
بازنویسی
شود.
http.keepAliveCount
مشخص
میکند چه
تعداد
کاوشگر TCP keepalive
پیش از
صرفنظر
کردن و قطع
اتصال (در
صورت
پشتیبانی
سیستمعامل)
ارسال شود.
اگر تنظیم
نشده باشد،
مقدار
پیشفرض curl
استفاده
میشود.
میتواند
توسط متغیر
محیطی GIT_HTTP_KEEPALIVE_COUNT
بازنویسی
شود.
http.retryAfter
زمان
انتظار
پیشفرض بر
حسب ثانیه
قبل از تلاش
مجدد،
زمانی که
سرور پاسخ HTTP 429
(Too Many Requests) را بدون
سرآیند Retry-After
برمیگرداند.
پیشفرض 0
(تلاش مجدد
فوری) است.
هنگامی که
سرآیند Retry-After
وجود داشته
باشد،
مقدار آن بر
این تنظیم
اولویت
دارد؛ با
این حال،
استفاده
خودکار از
سرآیند Retry-After
ارائهشده
توسط سرور
نیازمند libcurl
نسخه 7.66.0 یا
جدیدتر است.
در
نسخههای
قدیمیتر،
این تنظیم
را به صورت
دستی
پیکربندی
کنید تا
تاخیر تلاش
مجدد را
کنترل
نمایید.
میتواند
توسط متغیر
محیطی GIT_HTTP_RETRY_AFTER
بازنویسی
شود. همچنین
ببینید http.maxRetries
و http.maxRetryTime.
http.maxRetries
حداکثر
تعداد
دفعات تلاش
مجدد پس از
دریافت
پاسخهای HTTP 429 (Too
Many Requests). برای
غیرفعال
کردن
تلاشهای
مجدد، آن را
روی 0
(پیشفرض)
قرار دهید.
میتواند
توسط متغیر
محیطی GIT_HTTP_MAX_RETRIES
بازنویسی
شود. همچنین
ببینید http.retryAfter
و http.maxRetryTime.
http.maxRetryTime
حداکثر
زمان بر حسب
ثانیه برای
انتظار جهت
یک تلاش
مجدد منفرد
هنگام
رسیدگی به
پاسخهای HTTP 429 (Too
Many Requests). اگر سرور
درخواست
تاخیر کند
(از طریق
سرآیند Retry-After) یا
اگر http.retryAfter با
مقداری
پیکربندی
شده باشد که
از این
حداکثر
فراتر رود، Git
به جای
انتظار
بلافاصله
با خطا
متوقف
میشود.
پیشفرض 300
ثانیه (5
دقیقه) است.
میتواند
توسط متغیر
محیطی GIT_HTTP_MAX_RETRY_TIME
بازنویسی
شود. همچنین
ببینید http.retryAfter
و http.maxRetries.
http.noEPSV
یک مقدار
بولی که
استفاده از
دستور ftp
موسوم به EPSV
توسط curl را
غیرفعال
میکند. این
میتواند
در مواجهه
با برخی
سرورهای ftp
ضعیف که از
حالت EPSV
پشتیبانی
نمیکنند
مفید باشد.
میتواند
توسط متغیر
محیطی GIT_CURL_FTP_NO_EPSV
بازنویسی
شود.
پیشفرض false
است (curl از EPSV
استفاده
خواهد کرد).
http.userAgent
رشته USER_AGENT
پروتکل HTTP
ارائهشده
به یک سرور HTTP.
مقدار
پیشفرض
بیانگر
نسخه
کلاینت Git
است، مانند
git/1.7.1. این گزینه
به شما
امکان
میدهد این
مقدار را با
مقداری
متداولتر
مانند Mozilla/4.0
بازنویسی
کنید. برای
نمونه، در
صورتی که
اتصال از
طریق یک
فایروال
انجام شود
که اتصالات HTTP
را به
مجموعهای
از
رشتههای
متداول USER_AGENT
محدود
میکند (و
مواردی
مانند git/1.7.1 را
در بر
نمیگیرد)،
ممکن است
لازم باشد.
میتواند
توسط متغیر
محیطی GIT_HTTP_USER_AGENT
بازنویسی
شود.
http.followRedirects
آیا git
باید تغییر
مسیرهای HTTP را
دنبال کند
یا خیر. اگر
روی true تنظیم
شود، git به
صورت شفاف
هرگونه
تغییر
مسیری که
توسط سرور
صادر شود را
دنبال
خواهد کرد.
اگر روی false
تنظیم شود، git
با تمام
تغییر
مسیرها به
عنوان خطا
برخورد
میکند. اگر
روی initial
تنظیم شود، git
تغییر
مسیرها را
تنها برای
درخواست
اولیه به یک
ریموت
دنبال
میکند،
اما نه برای
درخواستهای
متوالی
بعدی HTTP. از
آنجا که git از URL
تغییر مسیر
یافته به
عنوان مبنا
برای
درخواستهای
بعدی
استفاده
میکند،
این حالت
عموماً
کافی است.
مقدار
پیشفرض initial
است.
http.<url>.*
هر یک از
گزینههای
http.* بالا را
میتوان به
صورت
انتخابی
روی برخی URLها
اعمال کرد.
برای اینکه
یک کلید
پیکربندی
با یک URL
مطابقت
داشته
باشد، هر
عنصر از
کلید
پیکربندی
با عنصر
متناظر در URL،
به ترتیب
زیر مقایسه
میشود:
1.طرح
(مثلاً
https در
https://example.com/). این
فیلد باید
بین کلید
پیکربندی و URL
دقیقاً
مطابقت
داشته
باشد.
3.شماره
پورت (مثلاً
8080 در
http://example.com:8080/).
این فیلد
باید بین
کلید
پیکربندی و URL
دقیقاً
مطابقت
داشته باشد.
شماره
پورتهای
حذفشده
قبل از
تطبیق به
طور خودکار
به مقدار
پیشفرض
صحیح برای
طرح مربوطه
تبدیل
میشوند.
4.مسیر
(مثلاً
repo.git در
https://example.com/repo.git). فیلد
مسیر کلید
پیکربندی
باید با
فیلد مسیر URL
به صورت
دقیق یا به
عنوان
پیشوندی از
عناصر مسیر
تفکیکشده
با اسلش
مطابقت
داشته باشد.
این بدان
معناست که
یک کلید
پیکربندی
با مسیر
foo/ با
مسیر URL
foo/bar
تطابق دارد.
یک پیشوند
تنها
میتواند
روی مرز
اسلش (
/)
مطابقت
یابد.
تطابقهای
طولانیتر
اولویت
دارند
(بنابراین
یک کلید
پیکربندی
با مسیر
foo/bar
نسبت به
کلید
پیکربندی
با صرف مسیر
foo/ تطابق
بهتری با
مسیر URL
foo/bar
دارد).
5.نام
کاربری
(مثلاً
user در
https://user@example.com/repo.git). اگر
کلید
پیکربندی
دارای نام
کاربری
باشد، باید
دقیقاً با
نام کاربری
موجود در URL
مطابقت
داشته باشد.
اگر کلید
پیکربندی
نام کاربری
نداشته
باشد، آن
کلید با هر
نام کاربری
در URL (از جمله
بدون نام
کاربری)
مطابقت
خواهد
داشت، اما
با اولویتی
کمتر نسبت
به کلید
دارای نام
کاربری.
فهرست فوق
به ترتیب
اولویت
نزولی مرتب
شده است؛ یک
URL که با مسیر
یک کلید
پیکربندی
مطابقت
دارد، نسبت
به موردی که
با نام
کاربری آن
مطابقت
دارد ترجیح
داده
میشود.
برای مثال،
اگر URL برابر
با https://user@example.com/foo/bar
باشد،
تطابق کلید
پیکربندی
با https://example.com/foo بر
تطابق کلید
پیکربندی
با https://user@example.com
ترجیح داده
خواهد شد.
تمامی URLها
قبل از
هرگونه
تلاش برای
تطبیق،
یکسانسازی
(نرمالسازی)
میشوند
(بخش
گذرواژه،
در صورت
وجود در URL،
برای مقاصد
تطبیق
همیشه
نادیده
گرفته
میشود) تا
URLهای معادل
که صرفاً
املای
متفاوتی
دارند به
درستی
تطبیق
یابند.
تنظیمات
متغیرهای
محیطی
همواره بر
هرگونه
تطبیقی
اولویت
دارند.
URLهایی که
مورد
مقایسه
قرار
میگیرند،
مواردی
هستند که
مستقیماً
به دستورات
Git داده
میشوند.
این بدان
معنی است که
هرگونه URL
بازدیدشده
در نتیجه
تغییر مسیر
در تطبیق
شرکت
نمیکند.
i18n.commitEncoding
کدگذاری
نویسهها
که
پیامهای
ثبت در آن
ذخیره
میشوند؛
خود Git به خودی
خود اهمیتی
به آن
نمیدهد،
اما این
اطلاعات
مثلاً
هنگام وارد
کردن
کامیتها
از
ایمیلها
یا در
مرورگر
گرافیکی
تاریخچه gitk (و
احتمالاً
در
مکانهای
دیگر در
آینده یا در
سایر
رابطهای
سطح بالا)
ضروری است.
به عنوان
مثال رجوع
کنید به
git-mailinfo(1).
مقدار
پیشفرض
utf-8
است.
i18n.logOutputEncoding
کدگذاری
نویسهها
که هنگام
اجرای git log و
دستورات
مرتبط،
پیامهای
ثبت به آن
تبدیل
میشوند.
imap.folder
پوشهای
که نامهها
باید در آن
قرار
گیرند، که
معمولاً
پوشه
پیشنویسها
(Drafts) است. برای
مثال: INBOX.Drafts, INBOX/Drafts
یا [Gmail]/Drafts.
پوشه IMAP برای
تعامل
حتماً باید
مشخص شود؛
مقدار این
متغیر
پیکربندی
به عنوان
مقدار
پیشفرض
جایگزین در
صورتی که
گزینه --folder
داده نشده
باشد،
استفاده
میشود.
imap.tunnel
دستوری
که برای
ایجاد یک
تونل به
سرور IMAP
استفاده
میشود تا
دستورات به
جای
استفاده از
اتصال
مستقیم
شبکهای به
سرور، از
طریق آن
هدایت شوند.
در صورتی که
imap.host تنظیم
نشده باشد،
الزامی
است.
imap.host
یک URL که
سرور را
مشخص
میکند. از
یک پیشوند
imap:// برای
اتصالات
غیرامن و یک
پیشوند imaps://
برای
اتصالات
امن
استفاده
کنید.
هنگامی که
imap.tunnel تنظیم
شده باشد
نادیده
گرفته
میشود،
اما در غیر
این صورت
الزامی
است.
imap.user
نام
کاربری
مورد
استفاده
هنگام ورود
به سرور.
imap.pass
گذرواژه
مورد
استفاده
هنگام ورود
به سرور.
imap.port
یک عدد
صحیح برای
پورت اتصال
به سرور.
پیشفرض 143
برای
میزبانهای
imap:// و 993 برای
میزبانهای
imaps:// است.
هنگامی که
imap.tunnel تنظیم
شده باشد
نادیده
گرفته
میشود.
imap.sslverify
یک مقدار
بولی برای
فعال/غیرفعال
کردن
اعتبارسنجی
گواهی سرور
مورد
استفاده
توسط اتصال
SSL/TLS. پیشفرض true
است. هنگامی
که imap.tunnel تنظیم
شده باشد
نادیده
گرفته
میشود.
imap.preformattedHTML
یک مقدار
بولی برای
فعال/غیرفعال
کردن
استفاده از
کدگذاری html
هنگام
ارسال وصله.
یک وصله
کدگذاریشده
با html درون
تگهای <pre>
قرار
میگیرد و
نوع محتوای
text/html خواهد
داشت. جالب
اینجاست که
فعال کردن
این گزینه
باعث
میشود Thunderbird
وصله را به
صورت یک
ایمیل plain/text با
format=fixed ارسال
کند. مقدار
پیشفرض false
است.
imap.authMethod
روش
احراز هویت
را برای
احراز هویت
در سرور IMAP
مشخص
میکند. اگر Git
با گزینه NO_CURL
ساخته شده
باشد، یا
اگر نسخه curl
شما
قدیمیتر
از 7.34.0 باشد،
یا اگر git-imap-send را
با گزینه --no-curl
اجرا
میکنید،
تنها
روشهای
پشتیبانیشده
عبارتند از
PLAIN, CRAM-MD5, OAUTHBEARER و XOAUTH2.
اگر این
مقدار
تنظیم نشده
باشد، git imap-send
از دستور
متنی ساده IMAP
یعنی LOGIN
استفاده
میکند.
include.path, includeIf.<condition>.path
متغیرهای
ویژه برای
گنجاندن
سایر
فایلهای
پیکربندی.
به بخش "CONFIGURATION FILE"
در مستندات
اصلی
git-config(1)، به
ویژه
زیربخشهای
"Includes" و "Conditional Includes"
مراجعه
کنید.
index.recordEndOfIndexEntries
مشخص
میکند که
آیا فایل
ایندکس
باید شامل
بخش "End Of Index Entry"
باشد یا خیر.
این کار
زمان
بارگذاری
ایندکس را
در
ماشینهای
چندپردازندهای
کاهش
میدهد،
اما هنگام
خواندن
ایندکس با
استفاده از
نسخههای Git
پیش از 2.20
پیام "ignoring EOIE extension"
تولید
میکند. در
صورتی که index.threads
به طور صریح
فعال شده
باشد
پیشفرض true
است، در غیر
این صورت false
میباشد.
index.recordOffsetTable
مشخص
میکند که
آیا فایل
ایندکس
باید شامل
بخش "Index Entry Offset Table"
باشد یا خیر.
این کار
زمان
بارگذاری
ایندکس را
در
ماشینهای
چندپردازندهای
کاهش
میدهد،
اما هنگام
خواندن
ایندکس با
استفاده از
نسخههای Git
پیش از 2.20
پیام "ignoring IEOT extension"
تولید
میکند. در
صورتی که index.threads
به طور صریح
فعال شده
باشد
پیشفرض true
است، در غیر
این صورت false
میباشد.
index.sparse
در صورت
فعال بودن،
ایندکس را
با استفاده
از
مدخلهای
دایرکتوری
خلوت (sparse-directory)
مینویسد.
این گزینه
تاثیری
ندارد مگر
اینکه هر دو
core.sparseCheckout و core.sparseCheckoutCone
فعال باشند.
پیشفرض false
است.
index.threads
تعداد
نخهایی را
مشخص
میکند که
باید هنگام
بارگذاری
ایندکس
ایجاد شوند.
هدف از این
کار کاهش
زمان
بارگذاری
ایندکس روی
ماشینهای
چندپردازندهای
است. تعیین 0
یا true باعث
میشود Git
تعداد CPUها را
به طور
خودکار
شناسایی
کرده و
تعداد
نخها را
متناسب با
آن تنظیم
کند. تعیین 1
یا false چندنخی
را غیرفعال
میکند.
پیشفرض true
است.
index.version
نسخهای
را مشخص
میکند که
فایلهای
ایندکس
جدید باید
با آن
مقداردهی
اولیه شوند.
این گزینه
بر مخازن
موجود
تاثیری
ندارد. اگر
feature.manyFiles فعال
باشد،
مقدار
پیشفرض 4
است.
index.skipHash
در صورت
فعال بودن،
هش پایانی
فایل
ایندکس
محاسبه
نمیشود.
این کار به
اجرای
سریعتر
دستورات Git که
ایندکس را
دستکاری
میکنند،
مانند
git add,
git
commit, یا
git status
کمک میکند.
به جای
ذخیره
مجموع
مقابلهای
(checksum)،
مجموعهای
از
بایتهای
پایانی با
مقدار صفر
نوشته
میشود که
نشان
میدهد از
محاسبه
صرفنظر
شده است.
اگر index.skipHash را
فعال کنید،
کلاینتهای
Git قدیمیتر
از 2.13.0 از
تجزیه
ایندکس
خودداری
میکنند و
کلاینتهای
Git قدیمیتر
از 2.40.0 در حین
اجرای git fsck
خطا گزارش
میدهند.
init.templateDir
دایرکتوری
را مشخص
میکند که
الگوها از
آن کپی
خواهند شد.
(به بخش "TEMPLATE DIRECTORY"
در
git-init(1)
مراجعه
کنید.)
init.defaultBranch
امکان
بازنویسی
نام شاخه
پیشفرض را
مثلاً
هنگام
مقداردهی
اولیه یک
مخزن جدید
فراهم
میکند.
init.defaultObjectFormat
امکان
بازنویسی
قالب
پیشفرض
شیء را برای
مخازن جدید
فراهم
میکند.
ببینید
--object-format=
در
git-init(1). هم
گزینه خط
فرمان و هم
متغیر
محیطی
GIT_DEFAULT_HASH
بر این
پیکربندی
اولویت
دارند.
init.defaultRefFormat
امکان
بازنویسی
قالب
پیشفرض
ذخیرهسازی
مراجع را
برای مخازن
جدید فراهم
میکند.
ببینید
--ref-format=
در
git-init(1). هم
گزینه خط
فرمان و هم
متغیر
محیطی
GIT_DEFAULT_REF_FORMAT
بر این
پیکربندی
اولویت
دارند.
init.defaultSubmodulePathConfig
یک مقدار
بولی که
مشخص
میکند آیا
git init و git clone
باید به طور
خودکار
extensions.submodulePathConfig را
روی true تنظیم
کنند یا خیر.
این به تمام
مخازن جدید
اجازه
میدهد تا
به صورت
خودکار از
افزونه
مسیر
زیرماژول
استفاده
کنند. در
صورت عدم
تنظیم،
پیشفرض false
است.
instaweb.browser
برنامهای
را مشخص
میکند که
برای مرور
مخزن کاری
شما در gitweb
استفاده
خواهد شد.
ببینید
git-instaweb(1).
instaweb.httpd
خط فرمان
دیمن HTTP برای
راهاندازی
gitweb روی مخزن
کاری شما.
ببینید
git-instaweb(1).
instaweb.local
اگر روی true
تنظیم
باشد،
وبسرور
راهاندازیشده
توسط
git-instaweb(1) به IP
محلی (
127.0.0.1) متصل
خواهد شد.
instaweb.modulePath
مسیر
پیشفرض
ماژول برای
استفاده
توسط
git-instaweb(1) به
جای
/usr/lib/apache2/modules.
تنها در
صورتی
استفاده
میشود که httpd
آپاچی
باشد.
instaweb.port
شماره
پورتی که httpd
مربوط به gitweb
باید به آن
متصل شود.
ببینید
git-instaweb(1).
interactive.singleKey
interactive.diffFilter
هنگامی
که یک دستور
تعاملی
(مانند git add
--patch) یک diff رنگی
را نشان
میدهد، git
تفاضل (diff) را
از طریق
دستور شل
تعریفشده
توسط این
متغیر
پیکربندی
هدایت (pipe)
میکند. این
دستور
میتواند diff
را برای درک
بهتر توسط
انسان
بیشتر
نشانهگذاری
کند، به شرط
آنکه تطابق
یکبهیک
با خطوط diff
اصلی حفظ
شود.
پیشفرض
غیرفعال
است (بدون
فیلتر
کردن).
log.abbrevCommit
log.date
حالت
پیشفرض
تاریخ-زمان
را برای
دستور
log
تنظیم
میکند.
تنظیم یک
مقدار برای
log.date مشابه
استفاده از
گزینه
--date در
git log است.
برای
جزئیات به
git-log(1) مراجعه
کنید.
اگر قالب
روی "auto:foo"
تنظیم شده
باشد و
صفحهبند
در حال
استفاده
باشد، از
قالب "foo"
برای تاریخ
استفاده
خواهد شد. در
غیر این
صورت از "default"
استفاده
میشود.
log.decorate
نامهای
مراجع
مربوط به هر
کامیت
نمایشدادهشده
توسط دستور log
را چاپ
میکند.
مقادیر
ممکن
عبارتند از:
short
پیشوندهای
نام مرجع refs/heads/,
refs/tags/ و refs/remotes/ چاپ
نمیشوند.
full
نام کامل
مرجع (شامل
پیشوند) چاپ
میشود.
auto
اگر
خروجی به یک
ترمینال
برود،
نامهای
مراجع به
گونهای
نمایش داده
میشوند که
گویی short داده
شده است، در
غیر این
صورت هیچ
نام مرجعی
نمایش داده
نمیشود.
این معادل
با گزینه --decorate
در git log است.
log.initialDecorationSet
بهطور
پیشفرض، git
log نشانهها
(decorations) را فقط
برای
فضاهای نام
مرجع
شناختهشده
مشخصی
نمایش
میدهد. اگر
all مشخص شود،
همه مراجع
به عنوان
نشانه
نمایش داده
میشوند.
log.excludeDecoration
الگوهای
مشخصشده
را از
نشانههای
لاگ مستثنی
میکند. این
شبیه به
گزینه خط
فرمان --decorate-refs-exclude
است، اما
این گزینه
پیکربندی
میتواند
توسط گزینه
--decorate-refs لغو و
بازنویسی
شود.
log.diffMerges
قالب diff
مورد
استفاده را
زمانی که
--diff-merges=on مشخص
شده است
تنظیم
میکند؛
برای
جزئیات
--diff-merges
را در
git-log(1)
ببینید.
پیشفرض
روی
separate است.
log.follow
اگر true
باشد،
زمانی که یک
<path> واحد داده
میشود، git log
به گونهای
عمل میکند
که گویی
گزینه --follow
استفاده
شده است. این
مورد همان
محدودیتهای
--follow را دارد،
یعنی
نمیتوان
از آن برای
دنبال کردن
چندین فایل
استفاده
کرد و روی
تاریخچه
غیرخطی به
خوبی کار
نمیکند.
log.graphColors
فهرستی
از رنگها،
جداشده با
کاما، که
میتوان از
آنها برای
رسم خطوط
تاریخچه در
git log --graph
استفاده
کرد.
log.showRoot
اگر true
باشد،
کامیت
اولیه به
عنوان یک
رویداد
بزرگ ایجاد
نمایش داده
خواهد شد.
این معادل
یک diff در
برابر یک
درخت خالی
است.
ابزارهایی
مانند
git-log(1) یا
git-whatchanged(1) که
معمولاً
کامیت ریشه
را پنهان
میکنند،
اکنون آن را
نمایش
خواهند داد.
بهطور
پیشفرض true
است.
log.showSignature
log.mailmap
lsrefs.unborn
میتواند
"advertise"
(پیشفرض)،
"allow" یا "ignore"
باشد. اگر
"advertise" باشد،
کارساز
(سرور) به
کلاینتی که
"unborn" ارسال
میکند
پاسخ خواهد
داد
(همانطور
که در
gitprotocol-v2(5)
توصیف شده
است) و
پشتیبانی
از این
ویژگی را در
طول اعلان
قابلیتهای
پروتکل
نسخه ۲
تبلیغ
(اعلام)
خواهد کرد.
مقدار "allow"
همانند "advertise"
است با این
تفاوت که
سرور
پشتیبانی
از این
ویژگی را
اعلام
نخواهد
کرد؛ این
قابلیت
برای
سرورهای با
بار متوازن
(load-balanced) که
نمیتوانند
بهصورت
همزمان و
یکپارچه
بهروزرسانی
شوند مفید
است (برای
مثال)، زیرا
مدیر سیستم
میتواند
ابتدا "allow" را
پیکربندی
کرده و سپس
پس از مدتی
تأخیر، "advertise"
را تنظیم
نماید.
mailinfo.scissors
اگر true
باشد، باعث
میشود
git-mailinfo(1)
(و در نتیجه
git-am(1)) بهطور
پیشفرض به
گونهای
عمل کنند که
گویی گزینه
--scissors در خط
فرمان
ارائه شده
است. هنگامی
که فعال
باشد، این
ویژگی همه
چیز را از
بدنه پیام
قبل از خط
قیچی (scissors line،
یعنی خطی
عمدتاً
شامل ">8"، "8<"
و "-") حذف
میکند.
mailmap.file
مکان یک
فایل mailmap
تکمیلی.
فایل mailmap
پیشفرض
واقع در
ریشه مخزن،
ابتدا
بارگذاری
میشود و
سپس فایل mailmap
که توسط این
متغیر مشخص
شده است.
مکان فایل mailmap
میتواند
در یک
زیرپوشه از
مخزن یا در
جایی بیرون
از خود مخزن
باشد.
ببینید:
git-shortlog(1)
و
git-blame(1).
mailmap.blob
مشابه
mailmap.file، اما
مقدار را به
عنوان
مرجعی به یک
blob در مخزن در
نظر
میگیرد.
اگر هر دو mailmap.file
و mailmap.blob مشخص
شوند، هر دو
تجزیه
میشوند و
مدخلهای
mailmap.file اولویت
خواهند
داشت. در یک
مخزن bare،
مقدار
پیشفرض آن
HEAD:.mailmap است. در
مخزن غیر bare،
مقدار
پیشفرض
خالی است.
maintenance.auto
این
گزینه
پیکربندی
بولی کنترل
میکند که
آیا برخی
دستورات پس
از انجام
کار عادی
خود، git maintenance run
--auto را اجرا
کنند یا خیر.
پیشفرض
روی true است.
maintenance.autoDetach
بسیاری
از دستورات Git
پس از نوشتن
دادهها در
مخزن،
نگهداری
خودکار را
راهاندازی
میکنند.
این گزینه
پیکربندی
بولی کنترل
میکند که
آیا این
نگهداری
خودکار
باید در
پیشزمینه
انجام شود
یا اینکه
فرآیند
نگهداری
باید جدا
شده (detach) و در
پسزمینه
به اجرا
ادامه دهد.
در صورت
تنظیم
نشدن،
مقدار gc.autoDetach
به عنوان
جایگزین
استفاده
میشود. اگر
هر دو تنظیم
نشده
باشند،
پیشفرض true
است، به این
معنی که
فرآیند
نگهداری
جدا خواهد
شد.
maintenance.strategy
این
گزینه
پیکربندی
رشتهای
راهکاری
برای تعیین
یکی از
راهبردهای
توصیهشده
برای
نگهداری
مخزن فراهم
میکند. این
تنظیم
تعیین
میکند که
در حین
اجرای
git maintenance
run چه وظایفی
اجرا شوند،
به شرطی که
هیچ
آرگومان
--task=<task> ارائه
نشده باشد.
این تنظیم
بر نگهداری
دستی،
نگهداری
خودکار و
همچنین
نگهداری
زمانبندیشده
تأثیر
میگذارد.
وظایفی که
اجرا
میشوند
ممکن است
بسته به نوع
نگهداری
متفاوت
باشند.
راهبرد
نگهداری را
میتوان با
تنظیم
maintenance.<task>.enabled و
maintenance.<task>.schedule
بیشتر
سفارشی کرد.
در صورت
تنظیم، این
مقادیر به
جای مقادیر
پیشفرض
ارائهشده
توسط maintenance.strategy
استفاده
میشوند.
راهبردهای
ممکن
عبارتند
از:
•none: این
راهبرد به
این معنی
است که هیچ
وظیفهای
اصلاً اجرا
نمیشود.
این راهبرد
پیشفرض
برای
نگهداری
زمانبندیشده
است.
•gc: این
راهبرد
وظیفه gc را
اجرا
میکند.
•
geometric: این
راهبرد
بستهبندی
مجدد هندسی
(geometric repacking)
فایلهای
بسته را
انجام داده
و
ساختارهای
داده کمکی
را بهروز
نگه
میدارد.
این راهبرد
دادهها را
در reflog منقضی
میکند و
درختهای
کاری (worktrees) را که
دیگر قابل
مکانیابی
نیستند حذف
مینماید.
هنگامی که
راهبرد
بستهبندی
مجدد هندسی
تصمیم
بگیرد یک
بستهبندی
همه در یک (all-into-one)
انجام دهد،
برای تمام
اشیاء
غیرقابلدسترس
یک cruft pack ایجاد
میکند.
اشیایی که
از قبل بخشی
از یک cruft pack
هستند
منقضی
خواهند شد.
این
راهبرد
بستهبندی
مجدد،
جایگزینی
کامل برای
راهبرد gc
بوده و برای
مخازن بزرگ
توصیه
میشود. این
راهبرد
پیشفرض
برای
نگهداری
دستی است. *
incremental: این
تنظیم برای
انجام
فعالیتهای
نگهداری
کوچک که هیچ
دادهای را
حذف
نمیکنند
بهینهسازی
شده است. این
گزینه
وظیفه gc را
زمانبندی
نمیکند،
بلکه وظایف
prefetch و commit-graph را
بهصورت
ساعتی،
وظایف loose-objects و
incremental-repack را
بهصورت
روزانه، و
وظیفه pack-refs را
بهصورت
هفتگی اجرا
میکند.
نگهداری
دستی مخزن
از وظیفه gc
استفاده
میکند.
maintenance.<task>.enabled
این
گزینه
پیکربندی
بولی کنترل
میکند که
آیا وظیفه
نگهداری با
نام <task>
زمانی که
هیچ گزینه
--task به git maintenance run
مشخص نشده
باشد اجرا
شود یا خیر.
در صورت
وجود گزینه
--task، این
مقادیر
پیکربندی
نادیده
گرفته
میشوند.
بهطور
پیشفرض،
فقط maintenance.gc.enabled
برابر با true
است.
maintenance.<task>.schedule
این
گزینه
پیکربندی
کنترل
میکند که
آیا <task>
دادهشده
در طول یک
دستور git maintenance
run --schedule=<frequency>
اجرا شود یا
خیر. مقدار
باید یکی از
"hourly"، "daily" یا
"weekly" باشد.
maintenance.commit-graph.auto
این
گزینه
پیکربندی
عدد صحیح
کنترل
میکند که
وظیفه commit-graph هر
چند وقت
یکبار
باید به
عنوان بخشی
از git maintenance run --auto
اجرا شود.
اگر صفر
باشد،
وظیفه commit-graph با
گزینه --auto
اجرا
نخواهد شد.
یک مقدار
منفی وظیفه
را مجبور
میکند که
هر بار اجرا
شود. در غیر
این صورت،
یک مقدار
مثبت به این
معنی است که
دستور باید
زمانی اجرا
شود که
تعداد
کامیتهای
قابلدسترس
که در فایل
commit-graph نیستند
حداقل به
اندازه
مقدار maintenance.commit-graph.auto
باشد. مقدار
پیشفرض
۱۰۰ است.
maintenance.loose-objects.auto
این
گزینه
پیکربندی
عدد صحیح
کنترل
میکند که
وظیفه loose-objects هر
چند وقت
یکبار
باید به
عنوان بخشی
از git maintenance run --auto
اجرا شود.
اگر صفر
باشد،
وظیفه loose-objects با
گزینه --auto
اجرا
نخواهد شد.
یک مقدار
منفی وظیفه
را مجبور
میکند که
هر بار اجرا
شود. در غیر
این صورت،
یک مقدار
مثبت به این
معنی است که
دستور باید
زمانی اجرا
شود که
تعداد
اشیاء
مستقل (loose objects)
حداقل به
اندازه
مقدار maintenance.loose-objects.auto
باشد. مقدار
پیشفرض
۱۰۰ است.
maintenance.loose-objects.batchSize
این
گزینه
پیکربندی
عدد صحیح
حداکثر
تعداد
اشیاء
مستقل
نوشتهشده
در یک فایل
بسته در طول
وظیفه loose-objects را
کنترل
میکند.
پیشفرض
پنجاه هزار
است. از
مقدار 0
برای نشان
دادن عدم
وجود
محدودیت
استفاده
کنید.
maintenance.incremental-repack.auto
این
گزینه
پیکربندی
عدد صحیح
کنترل
میکند که
وظیفه incremental-repack
هر چند وقت
یکبار
باید به
عنوان بخشی
از git maintenance run --auto
اجرا شود.
اگر صفر
باشد،
وظیفه incremental-repack
با گزینه --auto
اجرا
نخواهد شد.
یک مقدار
منفی وظیفه
را مجبور
میکند که
هر بار اجرا
شود. در غیر
این صورت،
یک مقدار
مثبت به این
معنی است که
دستور باید
زمانی اجرا
شود که
تعداد
فایلهای
بسته خارج
از multi-pack-index حداقل
به اندازه
مقدار
maintenance.incremental-repack.auto باشد.
مقدار
پیشفرض ۱۰
است.
maintenance.geometric-repack.auto
این
گزینه
پیکربندی
عدد صحیح
کنترل
میکند که
وظیفه geometric-repack
هر چند وقت
یکبار
باید به
عنوان بخشی
از git maintenance run --auto
اجرا شود.
اگر صفر
باشد،
وظیفه geometric-repack
با گزینه --auto
اجرا
نخواهد شد.
یک مقدار
منفی وظیفه
را مجبور
میکند که
هر بار اجرا
شود. در غیر
این صورت،
یک مقدار
مثبت به این
معنی است که
دستور باید
یا زمانی
اجرا شود که
فایلهای
بستهای
وجود داشته
باشند که
برای حفظ
تصاعد
هندسی نیاز
به ادغام با
یکدیگر
دارند، یا
زمانی که
حداقل این
تعداد شیء
مستقل وجود
داشته باشد
که در یک
فایل بسته
جدید نوشته
شوند. مقدار
پیشفرض
۱۰۰ است.
maintenance.geometric-repack.splitFactor
این
گزینه
پیکربندی
عدد صحیح
ضریب مورد
استفاده
برای
دنباله
هندسی را
کنترل
میکند.
برای
جزئیات
بیشتر
گزینه
--geometric= را
در
git-repack(1)
ببینید.
پیشفرض
2
است.
maintenance.reflog-expire.auto
این
گزینه
پیکربندی
عدد صحیح
کنترل
میکند که
وظیفه reflog-expire هر
چند وقت
یکبار
باید به
عنوان بخشی
از git maintenance run --auto
اجرا شود.
اگر صفر
باشد،
وظیفه reflog-expire با
گزینه --auto
اجرا
نخواهد شد.
یک مقدار
منفی وظیفه
را مجبور
میکند که
هر بار اجرا
شود. در غیر
این صورت،
یک مقدار
مثبت به این
معنی است که
دستور باید
زمانی اجرا
شود که
تعداد
مدخلهای
منقضیشده
reflog در
وقایعنگار
مرجع "HEAD"
حداقل به
اندازه
مقدار maintenance.loose-objects.auto
باشد. مقدار
پیشفرض
۱۰۰ است.
maintenance.rerere-gc.auto
این
گزینه
پیکربندی
عدد صحیح
کنترل
میکند که
وظیفه rerere-gc هر
چند وقت
یکبار
باید به
عنوان بخشی
از git maintenance run --auto
اجرا شود.
اگر صفر
باشد،
وظیفه rerere-gc با
گزینه --auto
اجرا
نخواهد شد.
یک مقدار
منفی وظیفه
را مجبور
میکند که
هر بار اجرا
شود. در غیر
این صورت،
هر مقدار
مثبت به این
معنی است که
دستور
زمانی اجرا
خواهد شد که
پوشه "rr-cache"
وجود داشته
باشد و
حداقل یک
مدخل داشته
باشد،
صرفنظر از
اینکه بیات
(stale) است یا خیر.
این روش
تجربی (heuristic)
ممکن است در
آینده
بهبود یابد.
مقدار
پیشفرض ۱
است.
maintenance.worktree-prune.auto
این
گزینه
پیکربندی
عدد صحیح
کنترل
میکند که
وظیفه worktree-prune
هر چند وقت
یکبار
باید به
عنوان بخشی
از git maintenance run --auto
اجرا شود.
اگر صفر
باشد،
وظیفه worktree-prune
با گزینه --auto
اجرا
نخواهد شد.
یک مقدار
منفی وظیفه
را مجبور
میکند که
هر بار اجرا
شود. در غیر
این صورت،
یک مقدار
مثبت به این
معنی است که
دستور باید
زمانی اجرا
شود که
تعداد
درختهای
کاری قابل
هرس از این
مقدار
بیشتر شود.
مقدار
پیشفرض ۱
است.
man.viewer
برنامههایی
را که
میتوان
برای نمایش
راهنما در
قالب
man
استفاده
کرد مشخص
میکند.
ببینید:
git-help(1).
man.<tool>.cmd
دستور
فراخوانی
نمایشدهنده
man مشخصشده
را تعیین
میکند.
دستور
مشخصشده
در پوسته با
صفحه man که به
عنوان یک
آرگومان
ارسال شده
است،
ارزیابی
میگردد.
(ببینید:
git-help(1).)
man.<tool>.path
مسیر
ابزار
دادهشده
را که ممکن
است برای
نمایش
راهنما در
قالب
man
استفاده
شود لغو و
جایگزین
میکند.
ببینید:
git-help(1).
merge.conflictStyle
سبکی را
که در آن
قطعههای
دچار تعارض
هنگام
ادغام در
فایلهای
درخت کاری
نوشته
میشوند
مشخص
میکند.
حالت
پیشفرض "merge"
است که یک
نشانگر
تعارض
<<<<<<<،
تغییرات
ایجاد شده
توسط یک
طرف، یک
نشانگر =======،
تغییرات
ایجاد شده
توسط طرف
دیگر، و سپس
یک نشانگر
>>>>>>> را
نشان
میدهد. یک
سبک
جایگزین،
"diff3"، یک
نشانگر ||||||| و
متن اصلی را
قبل از
نشانگر =======
اضافه
میکند. سبک
"merge" معمولاً
نواحی
تعارض
کوچکتری
نسبت به diff3
ایجاد
میکند، هم
به دلیل حذف
متن اصلی و
هم به این
دلیل که
وقتی
زیرمجموعهای
از خطوط در
هر دو طرف
مطابقت
دارند،
آنها به
سادگی از
ناحیه
تعارض خارج
میشوند.
سبک
جایگزین
دیگر، "zdiff3"،
شبیه به diff3
است اما
خطوط منطبق
در هر دو طرف
را از ناحیه
تعارض حذف
میکند، در
صورتی که آن
خطوط منطبق
در نزدیکی
ابتدا یا
انتهای یک
ناحیه
تعارض ظاهر
شوند.
merge.defaultToUpstream
اگر merge
بدون هیچ
آرگومان
کامیتی
فراخوانی
شود،
شاخههای
بالادست (upstream)
پیکربندیشده
برای شاخه
فعلی را با
استفاده از
آخرین
مقادیر
مشاهدهشده
ذخیرهشده
در
شاخههای
ردیابی
ریموت
آنها
ادغام
میکند.
مقادیر branch.<current
branch>.merge که
شاخههای
موجود در
ریموت
مشخصشده
توسط
branch.<current-branch>.remote را
نام
میبرند
بررسی شده،
و سپس از
طریق
remote.<remote>.fetch به
شاخههای
ردیابی
ریموت
متناظرشان
نگاشت
میشوند و
نوک (tip) این
شاخههای
ردیابی
ادغام
میگردند.
پیشفرض
روی true است.
merge.ff
بهطور
پیشفرض، Git
هنگام
ادغام
کامیتی که
از نوادگان
کامیت فعلی
است، یک
کامیت
ادغام
اضافی
ایجاد
نمیکند. در
عوض، نوک
شاخه فعلی
بهصورت
فوروارد
سریع (fast-forward) پیش
میرود.
هنگامی که
روی false تنظیم
شود، این
متغیر به Git
میگوید در
چنین حالتی
یک کامیت
ادغام
اضافی
ایجاد کند
(معادل
ارسال
گزینه --no-ff از
خط فرمان).
هنگامی که
روی only تنظیم
شود، تنها
اینگونه
ادغامهای
فوروارد
سریع مجاز
هستند
(معادل
ارسال
گزینه --ff-only از
خط فرمان).
merge.verifySignatures
اگر true
باشد، این
معادل
گزینه خط
فرمان
--verify-signatures
است. برای
جزئیات
git-merge(1)
را ببینید.
merge.branchdesc
علاوه بر
نام
شاخهها،
پیام لاگ را
با متن
توضیحات
شاخه مرتبط
با آنها
نیز پر
میکند.
پیشفرض false
است.
merge.log
علاوه بر
نام
شاخهها،
پیام لاگ را
حداکثر با
تعداد
مشخصشدهای
از توضیحات
تکخطی از
کامیتهای
واقعی که در
حال ادغام
هستند پر
میکند.
پیشفرض false
است و true
مترادف با
۲۰
میباشد.
merge.suppressDest
با
افزودن یک
الگوی
عمومی (glob) که
با نامهای
شاخههای
یکپارچهسازی
تطابق دارد
به این
متغیر
پیکربندی
چندمقداری،
پیام
پیشفرض
ادغام
محاسبهشده
برای ادغام
در این
شاخههای
یکپارچهسازی،
عبارت "into
<branch-name>" را از
عنوان خود
حذف خواهد
کرد.
یک عنصر با
مقدار خالی
میتواند
برای پاک
کردن فهرست
الگوهای
عمومی
انباشتهشده
از
مدخلهای
پیکربندی
قبلی
استفاده
شود. هنگامی
که هیچ
متغیر merge.suppressDest
تعریف نشده
باشد،
مقدار
پیشفرض master
برای
سازگاری با
گذشته
استفاده
میشود.
merge.renameLimit
تعداد
فایلهایی
که در بخش
جامع تشخیص
تغییر نام
در حین
ادغام باید
در نظر
گرفته شوند.
در صورت عدم
تعیین،
مقدار
پیشفرض آن
برابر با
مقدار diff.renameLimit
خواهد بود.
اگر نه merge.renameLimit و
نه diff.renameLimit مشخص
نشده
باشند، در
حال حاضر
مقدار
پیشفرض
۷۰۰۰ است.
این تنظیم
در صورت
غیرفعال
بودن تشخیص
تغییر نام
هیچ اثری
ندارد.
merge.renames
آیا Git
تغییر
نامها را
تشخیص دهد
یا خیر. اگر
روی false تنظیم
شود، تشخیص
تغییر نام
غیرفعال
میگردد.
اگر روی true
تنظیم شود،
تشخیص پایه
تغییر نام
فعال
میشود.
بهطور
پیشفرض
برابر با
مقدار diff.renames
است.
merge.directoryRenames
آیا Git
تغییر نام
پوشهها را
تشخیص دهد
یا خیر، که
بر سرنوشت
فایلهای
جدید
اضافهشده
به یک پوشه
در یک طرف
تاریخچه در
زمان
ادغام،
هنگامی که
آن پوشه در
طرف دیگر
تاریخچه
تغییر نام
یافته است،
تأثیر
میگذارد.
مقادیر
ممکن
عبارتند از:
false
تشخیص
تغییر نام
پوشه
غیرفعال
است، به این
معنی که
چنین
فایلهای
جدیدی در
پوشه قدیمی
جا خواهند
ماند.
true
تشخیص
تغییر نام
پوشه فعال
است، به این
معنی که
چنین
فایلهای
جدیدی به
پوشه جدید
منتقل
خواهند شد.
conflict
برای
چنین
مسیرهایی
یک تعارض
گزارش
خواهد شد.
اگر merge.renames
برابر با false
باشد، merge.directoryRenames
نادیده
گرفته شده و
مانند false با
آن رفتار
میشود.
پیشفرض conflict
است.
merge.renormalize
به Git
اعلام
میکند که
نمایش
متعارف
فایلها در
مخزن در طول
زمان تغییر
کرده است (به
عنوان مثال
کامیتهای
قبلی
فایلهای
متنی را با
پایان خط
CRLF
ثبت
کردهاند،
اما
کامیتهای
اخیر از
پایان خط
LF
استفاده
میکنند). در
چنین
مخزنی،
برای هر
فایلی که در
آن به یک
ادغام
محتوایی
سهطرفه
نیاز است، Git
میتواند
دادههای
ثبتشده در
کامیتها
را قبل از
انجام
ادغام به یک
شکل متعارف
تبدیل کند
تا
تعارضهای
غیرضروری
کاهش یابند.
برای
اطلاعات
بیشتر، بخش
"Merging branches with differing checkin/checkout attributes"
را در
gitattributes(5)
ببینید.
merge.stat
چه چیزی
(در صورت
وجود) بین
ORIG_HEAD
و نتیجه
ادغام در
پایان
ادغام چاپ
شود. مقادیر
ممکن
عبارتند از:
false
چیزی
نشان داده
نشود.
true
نمایش git
diff --diffstat --summary ORIG_HEAD.
compact
نمایش git
diff --compact-summary ORIG_HEAD.
اما هر
مقدار
ناشناخته
(مثلاً
مقداری که
توسط نسخه
آینده Git
اضافه شده
باشد) به جای
ایجاد خطا
به عنوان true
در نظر
گرفته
میشود.
پیشفرض true
است.
merge.autoStash
هنگامی
که روی
true
تنظیم شود،
پیش از شروع
عملیات
بهطور
خودکار یک
مدخل موقت
استش (stash)
ایجاد کرده
و پس از
پایان
عملیات آن
را اعمال
میکند. این
بدان
معناست که
میتوانید
ادغام را
روی یک درخت
کاری کثیف
(دارای
تغییرات
ثبتنشده)
اجرا کنید.
با این حال،
با احتیاط
استفاده
کنید: اعمال
نهایی استش
پس از یک
ادغام
موفقیتآمیز
ممکن است به
تعارضهای
غیرپیشپاافتاده
منجر شود.
این گزینه
میتواند
توسط
گزینههای
--no-autostash و
--autostash در
git-merge(1) لغو و
بازنویسی
شود.
پیشفرض
روی
false است.
merge.tool
کنترل
میکند که
کدام ابزار
ادغام توسط
git-mergetool(1)
استفاده
شود. فهرست
زیر مقادیر
معتبر
توکار را
نشان
میدهد. هر
مقدار
دیگری به
عنوان یک
ابزار
ادغام
سفارشی در
نظر گرفته
میشود و
مستلزم آن
است که
متغیر
متناظر
mergetool.<tool>.cmd
تعریف شده
باشد.
merge.guitool
کنترل
میکند که
در زمان
مشخص شدن
فلگ
-g/
--gui،
کدام ابزار
ادغام توسط
git-mergetool(1)
استفاده
شود. فهرست
زیر مقادیر
معتبر
توکار را
نشان
میدهد. هر
مقدار
دیگری به
عنوان یک
ابزار
ادغام
سفارشی در
نظر گرفته
میشود و
مستلزم آن
است که
متغیر
متناظر
mergetool.<guitool>.cmd
تعریف شده
باشد.
araxis
استفاده
از Araxis Merge
(نیازمند
نشست
گرافیکی)
bc
استفاده
از Beyond Compare
(نیازمند
نشست
گرافیکی)
bc3
استفاده
از Beyond Compare
(نیازمند
نشست
گرافیکی)
bc4
استفاده
از Beyond Compare
(نیازمند
نشست
گرافیکی)
codecompare
استفاده
از Code Compare
(نیازمند
نشست
گرافیکی)
deltawalker
استفاده
از DeltaWalker
(نیازمند
نشست
گرافیکی)
diffmerge
استفاده
از DiffMerge
(نیازمند
نشست
گرافیکی)
diffuse
استفاده
از Diffuse
(نیازمند
نشست
گرافیکی)
ecmerge
استفاده
از ECMerge
(نیازمند
نشست
گرافیکی)
emerge
استفاده
از Emerge در Emacs
examdiff
استفاده
از ExamDiff Pro
(نیازمند
نشست
گرافیکی)
guiffy
استفاده
از ابزار Diff
گویفی (Guiffy)
(نیازمند
نشست
گرافیکی)
gvimdiff
استفاده
از gVim
(نیازمند
نشست
گرافیکی) با
یک چیدمان
سفارشی (بخش
BACKEND SPECIFIC HINTS در git
help mergetool را
ببینید)
gvimdiff1
استفاده
از gVim
(نیازمند
نشست
گرافیکی) با
چیدمان ۲
پانلی (LOCAL و REMOTE)
gvimdiff2
استفاده
از gVim
(نیازمند
نشست
گرافیکی) با
چیدمان ۳
پانلی (LOCAL، MERGED و
REMOTE)
gvimdiff3
استفاده
از gVim
(نیازمند
نشست
گرافیکی) که
در آن فقط
فایل MERGED
نمایش داده
میشود
kdiff3
استفاده
از KDiff3
(نیازمند
نشست
گرافیکی)
meld
استفاده
از Meld
(نیازمند
نشست
گرافیکی) با
ادغام
خودکار
اختیاری
(بخش CONFIGURATION در git
help mergetool را
ببینید)
nvimdiff
استفاده
از Neovim با یک
چیدمان
سفارشی (بخش
BACKEND SPECIFIC HINTS در git
help mergetool را
ببینید)
nvimdiff1
استفاده
از Neovim با
چیدمان ۲
پانلی (LOCAL و REMOTE)
nvimdiff2
استفاده
از Neovim با
چیدمان ۳
پانلی (LOCAL، MERGED و
REMOTE)
nvimdiff3
استفاده
از Neovim که در آن
فقط فایل MERGED
نمایش داده
میشود
opendiff
استفاده
از FileMerge
(نیازمند
نشست
گرافیکی)
p4merge
استفاده
از HelixCore P4Merge
(نیازمند
نشست
گرافیکی)
smerge
استفاده
از Sublime Merge
(نیازمند
نشست
گرافیکی)
tkdiff
استفاده
از TkDiff
(نیازمند
نشست
گرافیکی)
tortoisemerge
استفاده
از TortoiseMerge
(نیازمند
نشست
گرافیکی)
vimdiff
استفاده
از Vim با یک
چیدمان
سفارشی (بخش
BACKEND SPECIFIC HINTS در git
help mergetool را
ببینید)
vimdiff1
استفاده
از Vim با
چیدمان ۲
پانلی (LOCAL و REMOTE)
vimdiff2
استفاده
از Vim با
چیدمان ۳
پانلی (LOCAL، MERGED و
REMOTE)
vimdiff3
استفاده
از Vim که در آن
فقط فایل MERGED
نمایش داده
میشود
vscode
استفاده
از Visual Studio Code
(نیازمند
نشست
گرافیکی)
winmerge
استفاده
از WinMerge
(نیازمند
نشست
گرافیکی)
xxdiff
استفاده
از xxdiff
(نیازمند
نشست
گرافیکی)
merge.verbosity
میزان
خروجی
نمایشدادهشده
توسط
راهبرد
ادغام
بازگشتی را
کنترل
میکند. سطح
۰ هیچ چیزی
به جز پیام
خطای نهایی
در صورت
تشخیص
تعارض
خروجی
نمیدهد.
سطح ۱ فقط
تعارضها
را خروجی
میدهد،
سطح ۲
تعارضها و
تغییرات
فایل را
خروجی
میدهد. سطح
۵ و بالاتر
اطلاعات
اشکالزدایی
را خروجی
میدهد.
پیشفرض
سطح ۲ است.
میتواند
توسط متغیر
محیطی GIT_MERGE_VERBOSITY
لغو و
بازنویسی
شود.
merge.<driver>.name
یک نام
خوانا برای
انسان برای
یک
راهانداز
ادغام
سطحپایین
سفارشی
تعریف
میکند.
برای
جزئیات
gitattributes(5)
را ببینید.
merge.<driver>.driver
دستوری
را که یک
راهانداز
ادغام
سطحپایین
سفارشی را
پیادهسازی
میکند
تعریف
مینماید.
برای
جزئیات
gitattributes(5)
را ببینید.
merge.<driver>.recursive
نام یک
راهانداز
ادغام
سطحپایین
را تعیین
میکند که
هنگام
انجام
ادغام
داخلی میان
نیاکان
مشترک
استفاده
شود. برای
جزئیات
gitattributes(5)
را ببینید.
mergetool.<tool>.path
مسیر
ابزار
دادهشده
را لغو و
بازنویسی
میکند. این
در صورتی
مفید است که
ابزار شما
در $PATH نباشد.
mergetool.<tool>.cmd
دستور
فراخوانی
ابزار
ادغام
مشخصشده
را تعیین
میکند.
دستور
مشخصشده
در پوسته با
متغیرهای
زیر در
دسترس
ارزیابی
میشود: BASE
نام یک فایل
موقت حاوی
پایه مشترک
فایلهای
در حال
ادغام است
(در صورت
موجود
بودن)؛ LOCAL
نام یک فایل
موقت حاوی
محتویات
فایل در
شاخه فعلی
است؛ REMOTE نام
یک فایل
موقت حاوی
محتویات
فایل از
شاخهای
است که در
حال ادغام
است؛ MERGED
شامل نام
فایلی است
که ابزار
ادغام باید
نتایج یک
ادغام
موفقیتآمیز
را در آن
بنویسد.
mergetool.<tool>.hideResolved
به کاربر
اجازه
میدهد
مقدار
سراسری mergetool.hideResolved
را برای یک
ابزار خاص
لغو و
بازنویسی
کند. برای
شرح کامل
mergetool.hideResolved را
ببینید.
mergetool.<tool>.trustExitCode
برای یک
دستور
ادغام
سفارشی،
مشخص
میکند که
آیا
میتوان از
کد خروج
دستور
ادغام برای
تعیین
موفقیتآمیز
بودن ادغام
استفاده
کرد یا خیر.
اگر این روی
true تنظیم نشده
باشد،
برچسب
زمانی فایل
مقصد ادغام
بررسی
میشود و در
صورتی که
فایل
بهروزرسانی
شده باشد
فرض میشود
ادغام
موفقیتآمیز
بوده است؛
در غیر این
صورت، از
کاربر
خواسته
میشود
موفقیت
ادغام را
مشخص کند.
mergetool.meld.hasOutput
نسخههای
قدیمیتر meld
از گزینه --output
پشتیبانی
نمیکنند. Git
با بررسی
خروجی meld --help
تلاش خواهد
کرد تشخیص
دهد که آیا meld
از --output
پشتیبانی
میکند یا
خیر.
پیکربندی
mergetool.meld.hasOutput باعث
میشود Git از
این
بررسیها
صرفنظر
کرده و در
عوض از
مقدار
پیکربندیشده
استفاده
کند. تنظیم
mergetool.meld.hasOutput روی true
به Git میگوید
بدون
قیدوشرط از
گزینه --output
استفاده
کند، و false از
استفاده از
--output خودداری
میکند.
mergetool.meld.useAutoMerge
هنگامی
که گزینه --auto-merge
داده
میشود، meld
تمام
بخشهای
بدون تعارض
را بهطور
خودکار
ادغام
میکند،
بخشهای
دارای
تعارض را
برجسته
میسازد و
منتظر
تصمیم
کاربر
میماند.
تنظیم mergetool.meld.useAutoMerge
روی true به Git
میگوید
بدون
قیدوشرط از
گزینه --auto-merge
همراه با meld
استفاده
کند. تنظیم
این مقدار
روی auto باعث
میشود git
تشخیص دهد
که آیا --auto-merge
پشتیبانی
میشود یا
خیر و تنها
زمانی که در
دسترس باشد
از --auto-merge
استفاده
کند. مقدار
false بهطور
کلی از
استفاده از
--auto-merge خودداری
میکند و
مقدار
پیشفرض
است.
mergetool.<variant>.layout
چیدمان
پنجره
تقسیمشده
(split window) را برای
<variant> مربوط
به vimdiff
پیکربندی
میکند، که
میتواند
هر یک از
vimdiff،
nvimdiff یا
gvimdiff
باشد. هنگام
راهاندازی
git mergetool با
--tool=<variant> (یا
بدون
--tool اگر
merge.tool به عنوان
<variant>
پیکربندی
شده باشد)، Git
به
mergetool.<variant>.layout
مراجعه
میکند تا
چیدمان
ابزار را
تعیین کند.
اگر
پیکربندی
مخصوص نسخه
موجود
نباشد،
چیدمان
vimdiff
به عنوان
جایگزین
استفاده
میشود. اگر
آن هم موجود
نباشد، یک
چیدمان
پیشفرض با
۴ پنجره
استفاده
خواهد شد.
برای
پیکربندی
چیدمان،
بخش
BACKEND SPECIFIC HINTS را
در
git-mergetool(1)
ببینید.
mergetool.hideResolved
در حین
یک ادغام، Git
بهطور
خودکار تا
حد امکان
تعارضها
را برطرف
کرده و فایل
$MERGED را
مینویسد
که حاوی
نشانگرهای
تعارض در
اطراف هر
تعارضی است
که
نتوانسته
آن را برطرف
کند؛ $LOCAL و $REMOTE
بهطور
معمول
نسخههای
فایل از قبل
از حل تعارض
توسط Git هستند.
این فلگ
باعث
میشود $LOCAL و
$REMOTE رونویسی
شوند تا فقط
تعارضهای
حلنشده به
ابزار
ادغام
ارائه
گردند.
میتواند
برای هر
ابزار از
طریق متغیر
پیکربندی
mergetool.<tool>.hideResolved
پیکربندی
شود.
پیشفرض
روی false است.
mergetool.keepBackup
پس از
انجام
ادغام،
فایل اصلی
همراه با
نشانگرهای
تعارض
میتواند
به عنوان
فایلی با
پسوند .orig
ذخیره شود.
اگر این
متغیر روی false
تنظیم شود،
این فایل
حفظ
نمیگردد.
پیشفرض true
است (یعنی
فایلهای
پشتیبان
نگهداری
شوند).
mergetool.keepTemporaries
هنگام
فراخوانی
یک ابزار
ادغام
سفارشی، Git از
مجموعهای
از
فایلهای
موقت برای
ارسال به
ابزار
استفاده
میکند. اگر
ابزار
خطایی
بازگرداند
و این متغیر
روی true تنظیم
شده باشد،
این
فایلهای
موقت حفظ
خواهند شد؛
در غیر این
صورت، پس از
خروج ابزار
حذف
میشوند.
پیشفرض false
است.
mergetool.writeToTemp
بهطور
پیشفرض Git
نسخههای
موقت BASE، LOCAL و
REMOTE از
فایلهای
دارای
تعارض را در
درخت کاری
مینویسد.
هنگامی که
روی true تنظیم
شود، Git تلاش
خواهد کرد
از یک
دایرکتوری
موقت برای
این
فایلها
استفاده
کند.
پیشفرض false
است.
mergetool.prompt
پیش از
هر بار
فراخوانی
برنامه حل
تعارض
ادغام،
اعلان
نمایش
میدهد
(تایید
میگیرد).
mergetool.guiDefault
روی true
تنظیم کنید
تا بهطور
پیشفرض از
merge.guitool استفاده
شود (معادل
مشخص کردن
آرگومان --gui)،
یا auto تا بسته
به وجود
مقدار
متغیر
محیطی DISPLAY،
بین merge.guitool یا
merge.tool انتخاب
شود. مقدار
پیشفرض false
است که در آن
آرگومان --gui
باید
صریحاً
ارائه شود
تا merge.guitool
استفاده
گردد.
notes.mergeStrategy
کدام
راهبرد
ادغام
بهطور
پیشفرض
هنگام حل
تعارضهای
یادداشتها
انتخاب شود.
باید یکی از
manual،
ours،
theirs،
union
یا
cat_sort_uniq باشد.
پیشفرض
روی
manual است.
برای
اطلاعات
بیشتر
درباره هر
راهبرد،
بخش "NOTES MERGE STRATEGIES" را
در
git-notes(1)
ببینید.
این تنظیم
را میتوان
با ارسال
گزینه --strategy به
git-notes(1) لغو و
بازنویسی
کرد.
notes.<name>.mergeStrategy
کدام
راهبرد
ادغام
هنگام
انجام
ادغام
یادداشتها
در
refs/notes/<name>
انتخاب شود.
این گزینه
راهبرد
عمومیتر
notes.mergeStrategy را لغو و
بازنویسی
میکند.
برای
اطلاعات
بیشتر در
مورد
راهبردهای
موجود، بخش
"NOTES MERGE STRATEGIES" را در
git-notes(1) ببینید.
notes.displayRef
علاوه بر
مقدار
پیشفرض
تعیینشده
توسط
core.notesRef یا
GIT_NOTES_REF، هنگام
نمایش
پیامهای
کامیت با
خانواده
دستورات
git
log،
یادداشتها
از کدام
مرجع (یا
مراجع، در
صورت
استفاده از
الگو یا
تعیین
چندباره)
خوانده
شوند.
این تنظیم
را میتوان
با متغیر
محیطی GIT_NOTES_DISPLAY_REF
که باید
فهرستی از
مراجع یا
الگوهای
عمومی
جداشده با
دو نقطه (:)
باشد، لغو و
بازنویسی
کرد.
برای
مراجعی که
وجود
ندارند
هشداری
صادر خواهد
شد، اما
الگویی که
با هیچ
مرجعی
تطابق
نداشته
باشد بدون
صدا نادیده
گرفته
میشود.
این تنظیم
را میتوان
با گزینه --no-notes
در خانواده
دستورات git-log(1)
یا با گزینه
--notes=<ref> که
توسط آن
دستورات
پذیرفته
میشود،
غیرفعال
کرد.
مقدار
مؤثر core.notesRef (که
احتمالاً
توسط GIT_NOTES_REF
بازنویسی
شده است) نیز
بهطور
ضمنی به
فهرست
مراجع قابل
نمایش
اضافه
میشود.
notes.rewrite.<command>
هنگام
بازنویسی
کامیتها
با
<command> (در
حال حاضر
amend
یا
rebase)، اگر
این متغیر
false
باشد، git
یادداشتها
را از کامیت
اصلی به
کامیت
بازنویسیشده
کپی نخواهد
کرد.
پیشفرض
true
است. همچنین
notes.rewriteRef را در
زیر ببینید.
این تنظیم
را میتوان
با متغیر
محیطی GIT_NOTES_REWRITE_REF
که باید
فهرستی از
مراجع یا
الگوهای
عمومی
جداشده با
دو نقطه (:)
باشد، لغو و
بازنویسی
کرد.
notes.rewriteMode
هنگام
کپی کردن
یادداشتها
در طول
بازنویسی
(گزینه
notes.rewrite.<command> را
ببینید)،
تعیین
میکند که
در صورت
داشتن
یادداشت در
کامیت مقصد
چه اقدامی
انجام شود.
باید یکی از
overwrite،
concatenate،
cat_sort_uniq
یا
ignore باشد.
پیشفرض
concatenate
است.
این تنظیم
را میتوان
با متغیر
محیطی GIT_NOTES_REWRITE_MODE
لغو و
بازنویسی
کرد.
notes.rewriteRef
هنگام
کپی کردن
یادداشتها
در حین
بازنویسی،
مرجع
(کاملاً
واجد شرایط)
را مشخص
میکند که
یادداشتهای
آن باید کپی
شوند.
میتواند
یک الگوی
عمومی (glob)
باشد که در
این صورت
یادداشتها
در تمام
مراجع
منطبق کپی
خواهند شد.
همچنین
میتوانید
این
پیکربندی
را چندین
بار مشخص
کنید.
مقدار
پیشفرض
ندارد؛
برای فعال
کردن
بازنویسی
یادداشت
باید این
متغیر را
پیکربندی
کنید. برای
فعالسازی
بازنویسی
برای
یادداشتهای
پیشفرض
کامیت، آن
را روی refs/notes/commits
تنظیم
کنید.
میتواند
با متغیر
محیطی GIT_NOTES_REWRITE_REF
لغو و
بازنویسی
شود. برای
توضیح
بیشتر در
مورد قالب
آن، notes.rewrite.<command>
را در بالا
ببینید.
pack.window
اندازه
پنجره مورد
استفاده
توسط
git-pack-objects(1)
هنگامی که
اندازه
پنجرهای
در خط فرمان
داده نشده
باشد.
پیشفرض ۱۰
است.
pack.depth
حداکثر
عمق دلتا
مورد
استفاده
توسط
git-pack-objects(1)
هنگامی که
حداکثر
عمقی در خط
فرمان داده
نشده باشد.
پیشفرض ۵۰
است. حداکثر
مقدار ۴۰۹۵
میباشد.
pack.windowMemory
حداکثر
مقدار
حافظهای
که توسط هر
ریسه (thread) در
git-pack-objects(1) برای
حافظه
پنجره بسته
مصرف
میشود، در
صورتی که
هیچ
محدودیتی
در خط فرمان
داده نشده
باشد. مقدار
میتواند
با
پسوندهای
"k"، "m" یا "g"
همراه باشد.
هنگامی که
پیکربندی
نشود (یا
صریحاً روی 0
تنظیم شود)،
هیچ
محدودیتی
وجود
نخواهد
داشت.
pack.compression
یک عدد
صحیح بین
-1..9،
که سطح
فشردهسازی
اشیاء را در
یک فایل
بسته (pack file) مشخص
میکند.
-1
پیشفرض zlib
است. مقدار 0
به معنای
عدم
فشردهسازی
است، و 1..9
موازنههای
مختلف میان
سرعت و
اندازه
هستند که 9
کندترین
آنهاست.
اگر تنظیم
نشود، به
صورت
پیشفرض core.compression
در نظر
گرفته
میشود. اگر
آن هم تنظیم
نشده باشد،
مقدار
پیشفرض
-1
(پیشفرض zlib)
خواهد بود،
که «یک سازش
پیشفرض
میان سرعت و
فشردهسازی
است (در حال
حاضر معادل
سطح 6)».
توجه
داشته
باشید که
تغییر سطح
فشردهسازی
بهطور
خودکار
تمام اشیاء
موجود را
مجدداً
فشرده
نمیکند.
میتوانید
با دادن
گزینه -F به
git-repack(1)
فشردهسازی
مجدد را
اجبار
کنید.
pack.allowPackReuse
هنگامی
که روی true یا
"single" تنظیم
شده باشد، و
بیتمپهای
دسترسیپذیری
فعال
باشند، pack-objects
تلاش خواهد
کرد
بخشهایی
از فایل
بسته دارای
بیتمپ را
عیناً
ارسال کند.
هنگامی که
روی "multi"
تنظیم شده
باشد، و یک
بیتمپ
دسترسیپذیری
چندبستهای
در دسترس
باشد، pack-objects
تلاش خواهد
کرد
بخشهایی
از تمام
بستهها را
در MIDX ارسال
کند.
اگر فقط یک
بیتمپ
بسته تکی در
دسترس
باشد، و pack.allowPackReuse
روی "multi"
تنظیم شده
باشد، تنها
بخشهایی
از همان
فایل بسته
دارای
بیتمپ
مجدداً
استفاده
میشود. این
کار
میتواند
مصرف حافظه
و پردازنده
را برای
پاسخ به
واکشیها
کاهش دهد،
اما ممکن
است منجر به
ارسال
بستهای
کمی
بزرگتر
شود. مقدار
پیشفرض true
است.
pack.island
یک عبارت
باقاعده
گسترشیافته
(extended regular expression) برای
پیکربندی
مجموعهای
از
جزیرههای
دلتا (delta islands).
برای
جزئیات به
بخش "DELTA ISLANDS" در
git-pack-objects(1) مراجعه
کنید.
pack.islandCore
نام
جزیرهای
را مشخص
میکند که
اشیاء آن
باید در
ابتدا
بستهبندی
شوند. این
کار نوعی
شبهبسته (pseudo-pack)
در ابتدای
یک بسته
ایجاد
میکند،
بهطوریکه
اشیاء
متعلق به
جزیره
مشخصشده
با سرعت
بیشتری در
هر بستهای
که قرار است
برای
کاربری که
آن اشیاء را
درخواست
کرده ارسال
شود، کپی
شوند. در عمل
این بدان
معناست که
جزیره
مشخصشده
احتمالاً
باید با
آنچه
معمولاً در
مخزن کلون
میشود
مطابقت
داشته باشد.
همچنین به "DELTA
ISLANDS" در
git-pack-objects(1).
مراجعه
کنید.
pack.deltaCacheSize
حداکثر
حافظه بر
حسب بایت که
برای کش
کردن
دلتاها در
git-pack-objects(1) قبل از
نوشتن
آنها در یک
بسته
استفاده
میشود. این
کش برای
افزایش
سرعت مرحله
نوشتن
اشیاء
استفاده
میشود تا
پس از یافتن
بهترین
تطابق برای
تمام
اشیاء،
نیازی به
محاسبه
مجدد نتیجه
نهایی دلتا
نباشد.
البته
بستهبندی
مجدد مخازن
بزرگ در
دستگاههایی
با حافظه
محدود ممکن
است از این
امر به شدت
متأثر شود،
بهویژه
اگر این کش
سیستم را به
فضای
مبادله (swapping)
بکشاند.
مقدار 0 به
معنای عدم
وجود
محدودیت
است.
کوچکترین
اندازه
یعنی 1 بایت
میتواند
برای
غیرفعال
کردن مجازی
این کش
استفاده
شود. مقدار
پیشفرض 256 MiB
است.
pack.deltaCacheLimit
حداکثر
اندازه یک
دلتا که در
git-pack-objects(1). کش
میشود. این
کش برای
افزایش
سرعت مرحله
نوشتن شیء
استفاده
میشود تا
پس از یافتن
بهترین
تطابق برای
همه اشیاء،
نیازی به
محاسبه
مجدد نتیجه
دلتای
نهایی
نباشد.
مقدار
پیشفرض 1000
است. حداکثر
مقدار 65535
میباشد.
pack.threads
تعداد
ریسمانهایی
(threads) را مشخص
میکند که
هنگام
جستجو برای
بهترین
تطابقهای
دلتا ایجاد
میشوند.
این
نیازمند آن
است که
git-pack-objects(1)
با
پشتیبانی
از pthreads
کامپایل
شده باشد،
در غیر این
صورت این
گزینه با
نمایش یک
هشدار
نادیده
گرفته
میشود. این
کار برای
کاهش زمان
بستهبندی
در
ماشینهای
چندپردازندهای
در نظر
گرفته شده
است. با این
حال، مقدار
حافظه مورد
نیاز برای
پنجره
جستجوی
دلتا در
تعداد
ریسمانها
ضرب میشود.
تعیین
مقدار 0 باعث
میشود Git
تعداد
پردازندهها
را بهطور
خودکار
تشخیص داده
و تعداد
ریسمانها
را متناسب
با آن تنظیم
کند.
pack.indexVersion
نسخه
پیشفرض
ایندکس
بسته را
مشخص
میکند.
مقادیر
معتبر
عبارتند از 1
برای
ایندکس
بسته قدیمی
که توسط
نسخههای Git
قبل از
1.5.2
استفاده
میشد، و 2
برای
ایندکس
بسته جدید
با قابلیت
پشتیبانی
از
بستههای
بزرگتر از 4
گیگابایت و
همچنین
محافظت
مناسب در
برابر
بستهبندی
مجدد
بستههای
خراب. نسخه 2
پیشفرض
است. توجه
داشته
باشید که هر
زمان بسته
مربوطه
بزرگتر از 2
گیگابایت
باشد، نسخه 2
اجباری شده
و این گزینه
پیکربندی
نادیده
گرفته
میشود.
اگر نسخه
قدیمی Git را
دارید که
فایل *.idx
نسخه 2 را درک
نمیکند،
کلون کردن
یا واکشی از
طریق یک
پروتکل
غیربومی
(مانند "http") که
هر دو فایل
*.pack و فایل
مربوطه *.idx
را از طرف
دیگر کپی
میکند،
ممکن است
مخزنی به
شما بدهد که
با نسخه
قدیمیتر Git
شما قابل
دسترسی
نباشد. اما
اگر فایل *.pack
کوچکتر از 2
گیگابایت
باشد،
میتوانید
از git-index-pack(1) روی
فایل *.pack برای
تولید مجدد
فایل *.idx
استفاده
کنید.
pack.packSizeLimit
حداکثر
اندازه یک
بسته. این
تنظیم فقط
روی
بستهبندی
در یک فایل
هنگام
بستهبندی
مجدد تأثیر
میگذارد،
یعنی
پروتکل git://
تحت تأثیر
قرار
نمیگیرد.
این گزینه
میتواند
با گزینه
--max-pack-size از
دستور
git-repack(1)
بازنویسی
شود. رسیدن
به این
محدودیت
منجر به
ایجاد
چندین فایل
بسته
میشود.
توجه
داشته
باشید که
این گزینه
به ندرت
مفید است و
ممکن است
منجر به
افزایش
اندازه کل
روی دیسک
(زیرا Git
دلتاها را
میان
بستهها
ذخیره
نمیکند) و
کارایی
ضعیفتر در
زمان اجرا
شود (جستجوی
اشیاء در
چندین بسته
کندتر از یک
بسته است، و
بهینهسازیهایی
مانند
بیتمپهای
دسترسیپذیری
نمیتوانند
با چند بسته
سازگار
شوند).
اگر نیاز
دارید Git را
با
فایلهای
بسته
کوچکتر
اجرا کنید
(مثلاً به
این دلیل که
سیستم فایل
شما از
فایلهای
بزرگ
پشتیبانی
نمیکند)،
این گزینه
ممکن است
کمک کند. اما
اگر هدف شما
انتقال
فایل بسته
از طریق
رسانهای
است که از
اندازههای
محدود
پشتیبانی
میکند
(مثلاً
رسانههای
جداشدنی که
نمیتوانند
کل مخزن را
ذخیره
کنند)،
احتمالاً
بهتر است یک
فایل بسته
بزرگ تکی
ایجاد کرده
و آن را با
استفاده از
یک ابزار
عمومی
آرشیو
چندبخشی
(مانند split در
یونیکس)
تقسیم
کنید.
حداقل
اندازه
مجاز به 1 MiB
محدود شده
است.
پیشفرض
نامحدود
است.
پسوندهای
رایج واحد
k، m، یا g
پشتیبانی
میشوند.
pack.useBitmaps
هنگامی
که روی true
تنظیم شود، git
هنگام
بستهبندی
در stdout (مانند
زمان سمت
سرور در یک
واکشی) از
بیتمپهای
بسته (در
صورت موجود
بودن)
استفاده
خواهد کرد.
مقدار
پیشفرض true
است. بهطور
کلی نباید
نیازی به
خاموش کردن
این گزینه
داشته
باشید، مگر
اینکه در
حال
اشکالزدایی
بیتمپهای
بسته
باشید.
pack.useBitmapBoundaryTraversal
هنگامی
که روی true
تنظیم شود، Git
از یک
الگوریتم
آزمایشی
برای
محاسبه
پرسوجوهای
دسترسیپذیری
با
بیتمپها
استفاده
خواهد کرد.
به جای ساخت
بیتمپهای
کامل برای
تمام
سرشاخههای
منفیشده (negated
tips) و سپس
اعمال
عملگر OR بین
آنها،
سرشاخههای
منفیشده
با
بیتمپهای
موجود را
افزایشی در
نظر
میگیرد
(یعنی اگر
وجود داشته
باشند،
آنها را در
نتیجه OR
میکند و در
غیر این
صورت از
آنها
صرفنظر
میکند)، و
در عوض یک
بیتمپ در
مرز
میسازد.
هنگام
استفاده از
این
الگوریتم، Git
ممکن است به
دلیل باز
نکردن
درختهای
متعلق به
کامیتهای
خاص UNINTERESTING،
اشیاء
بسیار
زیادی را
شامل شود.
این عدم دقت
با
الگوریتم
پیمایش
بدون
بیتمپ
مطابقت
دارد.
در بسیاری
از موارد،
این روش
میتواند
باعث
افزایش
سرعت نسبت
به
الگوریتم
دقیق شود،
به ویژه
زمانی که
پوشش
بیتمپ
ضعیفی در
بخش
منفیشده
پرسوجو
وجود داشته
باشد.
pack.useSparse
هنگامی
که روی true
تنظیم شود، git
به طور
پیشفرض
هنگام حضور
گزینه --sparse از
گزینه --sparse در
git pack-objects
استفاده
خواهد کرد.
این
الگوریتم
تنها
درختهایی
را پیمایش
میکند که
در مسیرهای
معرفیکننده
اشیاء جدید
ظاهر
میشوند.
این کار
میتواند
هنگام
محاسبه یک
بسته برای
ارسال
تغییری
کوچک،
مزایای
عملکردی
چشمگیری
داشته باشد.
با این حال،
اگر
کامیتهای
شاملشده
دارای
انواع خاصی
از تغییر
نامهای
مستقیم
باشند،
ممکن است
اشیاء
اضافی به
فایل بسته
افزوده
شوند.
پیشفرض true
است.
pack.usePathWalk
گزینه
--path-walk را به
صورت
پیشفرض
برای
فرآیندهای
git pack-objects فعال
میکند.
برای
جزئیات
کامل به
git-pack-objects(1)
مراجعه
کنید.
pack.preferBitmapTips
یک
سلسلهمراتب
مرجع (ref hierarchy) را
مشخص
میکند
(مانند "refs/heads/")؛
میتواند
چند بار
برای مشخص
کردن بیش از
یک
سلسلهمراتب
داده شود.
هنگام
انتخاب
اینکه کدام
کامیتها
بیتمپ
دریافت
کنند،
کامیتی که
در سرشاخه (tip)
مرجعی قرار
دارد که در
هر یک از
سلسلهمراتبهای
پیکربندیشده
گنجانده
شده است، در
اولویت
قرار
میگیرد.
توجه
داشته
باشید که
تنظیم این
پیکربندی
روی refs/foo/ به
این معنی
نیست که
کامیتهای
موجود در
سرشاخههای
refs/foo/bar و refs/foo/baz
لزوماً
انتخاب
خواهند شد.
دلیل این
امر آن است
که
کامیتها
برای
بیتمپها
از میان
مجموعهای
از
پنجرههای
با طول
متغیر
انتخاب
میشوند.
اگر
کامیتی در
سرشاخه هر
مرجعی که
پسوندی از
هر مقدار
این
پیکربندی
باشد در یک
پنجره دیده
شود،
بلافاصله
بر هر کامیت
دیگری در آن
پنجره
اولویت
داده
میشود.
pack.writeBitmaps
(منسوخشده)
این یک
مترادف
منسوخشده
برای repack.writeBitmaps
است.
pack.writeBitmapHashCache
هنگامی
که روی true
تنظیم شود، git
بخشی تحت
عنوان "hash cache"
را در
ایندکس
بیتمپ (در
صورت نوشته
شدن) شامل
خواهد کرد.
این کش
میتواند
برای تغذیه
قواعد
مکاشفهای
دلتا در git
استفاده
شود، که
بالقوه
منجر به
دلتاهای
بهتری میان
اشیاء
دارای
بیتمپ و
فاقد
بیتمپ
میشود
(برای مثال،
هنگام
پاسخگویی
به یک واکشی
میان یک
بسته
قدیمیتر
دارای
بیتمپ و
اشیائی که
پس از آخرین gc
پوش
شدهاند).
عیب آن این
است که 4 بایت
به ازای هر
شیء از فضای
دیسک را
مصرف
میکند.
مقدار
پیشفرض true
است.
هنگام
نوشتن یک
بیتمپ
دسترسیپذیری
چندبستهای،
هیچ namehash جدیدی
محاسبه
نمیشود؛
در عوض، هر namehash
ذخیرهشده
در یک
بیتمپ
موجود
هنگام
نوشتن یک
بیتمپ
جدید به
مکان مناسب
خود
جابهجا (permuted)
میشود.
pack.writeBitmapLookupTable
هنگامی
که روی true
تنظیم شود، Git
بخشی تحت
عنوان "lookup table"
(جدول جستجو)
را در
ایندکس
بیتمپ (در
صورت نوشته
شدن)
میگنجاند.
این جدول
برای به
تعویق
انداختن
بارگذاری
بیتمپهای
منفرد تا
جای ممکن
استفاده
میشود. این
کار
میتواند
در مخازنی
که
ایندکسهای
بیتمپ
نسبتاً
بزرگی
دارند
سودمند
باشد. مقدار
پیشفرض false
است.
pack.readReverseIndex
هنگامی
که روی true
تنظیم شود، git
هر فایل
.rev
موجود را
میخواند
(ببینید:
gitformat-pack(5)).
هنگامی که
روی false باشد،
ایندکس
معکوس از
ابتدا
تولید شده و
در حافظه
ذخیره
میشود.
مقدار
پیشفرض true
است.
pack.writeReverseIndex
هنگامی
که روی true
تنظیم شود، git
برای هر
فایل بسته
جدیدی که
مینویسد،
یک فایل
.rev
متناظر
مینویسد
(ببینید:
gitformat-pack(5))، در همه
جا به جز در
git-fast-import(1) و در
سازوکار
ثبت فلهای
(bulk checkin). مقدار
پیشفرض true
است.
pager.<cmd>
اگر
مقدار یک
بولی باشد،
صفحهبندی
خروجی یک
زیردستور
خاص Git را
هنگام
نوشتن در tty
روشن یا
خاموش
میکند. در
غیر این
صورت،
صفحهبندی
را برای آن
زیردستور
با استفاده
از
صفحهبندیکنندهای
(pager) که مقدار
pager.<cmd> مشخص
کرده فعال
میکند. اگر
--paginate یا --no-pager در
خط فرمان
مشخص شود،
بر این
گزینه
اولویت
دارد. برای
غیرفعال
کردن
صفحهبندی
برای همه
دستورات،
core.pager یا GIT_PAGER را
روی cat تنظیم
کنید.
pretty.<name>
نام
مستعار
برای یک
رشته قالب
--pretty=،
همانطور
که در
git-log(1)
مشخص شده
است. هر نام
مستعاری که
در اینجا
تعریف شود
میتواند
درست مانند
قالبهای
تزیینی (pretty formats)
توکار
استفاده
شود. برای
مثال،
اجرای
git config
pretty.changelog "format:*
%H %s"
باعث
میشود که
فراخوانی
git
log --pretty=changelog معادل
اجرای
git log
"
--pretty=format:* %H %s"
باشد. توجه
داشته
باشید که
نام مستعار
همنام با
یک قالب
توکار،
بدون هیچ
پیامی
نادیده
گرفته
خواهد شد.
promisor.quiet
اگر روی
"true" تنظیم
شود، هنگام
واکشی
اشیاء
اضافی برای
یک کلون
جزئی (partial clone)،
گزینه --quiet
فرض
میشود.
promisor.advertise
اگر روی
"true" تنظیم
شود، یک
سرور از
قابلیت "promisor-remote"
(ببینید:
gitprotocol-v2(5))
برای اعلان
ریموتهای
promisor که
استفاده
میکند (در
صورت وجود)
استفاده
خواهد کرد.
مقدار
پیشفرض "false"
است، به این
معنی که
قابلیت "promisor-remote"
اعلان
نمیشود.
promisor.sendFields
فهرستی
از نامهای
فیلدهای
اضافی
مرتبط با
ریموت که با
کاما یا
فاصله از هم
جدا
شدهاند.
سرور هنگام
اعلان
ریموتهای
promisor خود با
استفاده از
قابلیت "promisor-remote"
(ببینید:
gitprotocol-v2(5))، این
نامهای
فیلد و
مقادیر
مرتبط با
آنها را از
پیکربندی
خود ارسال
میکند. در
حال حاضر،
تنها
نامهای
فیلد "partialCloneFilter" و
"token"
پشتیبانی
میشوند.
partialCloneFilter
شامل
فیلتر کلون
جزئی است که
برای ریموت
استفاده
میشود.
token
شامل یک
توکن احراز
هویت برای
ریموت است.
هنگامی که
یک نام فیلد
بخشی از این
فهرست باشد
و متغیر
پیکربندی
متناظر
"remote.foo.<field-name>" در
سرور روی
مقداری
غیرخالی
تنظیم شده
باشد،
آنگاه نام و
مقدار فیلد
هنگام
اعلان
ریموت promisor با
نام "foo"
ارسال
میشوند.
این فهرست
هیچ اثری
ندارد مگر
اینکه
متغیر
پیکربندی
"promisor.advertise" روی "true"
تنظیم شده
باشد، و
فیلدهای "name"
و "url" همیشه
فارغ از این
تنظیم
اعلان
میشوند.
promisor.acceptFromServer
اگر روی
"all" تنظیم
شود،
کلاینت
تمام
ریموتهای
promisor را که ممکن
است سرور با
استفاده از
قابلیت "promisor-remote"
اعلان کند
میپذیرد.
اگر روی "knownName"
تنظیم شود،
کلاینت
ریموتهای
promisor را که از
قبل روی
کلاینت
پیکربندی
شدهاند و
نامی یکسان
با موارد
اعلانشده
دارند
میپذیرد.
این حالت
چندان امن
نیست، اما
میتواند
در یک
ساختار
شرکتی که به
سرورها و
کلاینتها
برای تغییر
ندادن نام و
URLها اعتماد
وجود دارد
استفاده
شود. اگر روی
"knownUrl" تنظیم
شود،
کلاینت
ریموتهای
promisor را
میپذیرد
که هم نام و
هم URL یکسانی
در کلاینت
با نام و URL
اعلانشده
توسط سرور
داشته
باشند. این
حالت از "all"
یا "knownName"
امنتر
است،
بنابراین
در صورت
امکان باید
به جای آن
گزینهها
استفاده
شود. مقدار
پیشفرض "none"
است، به این
معنی که هیچ
ریموت promisor
اعلانشده
توسط سرور
پذیرفته
نخواهد شد.
با پذیرش یک
ریموت promisor،
کلاینت
موافقت
میکند که
سرور ممکن
است اشیائی
را که
میتوان
آنها را
بهصورت
تنبل (lazily) از
این ریموت promisor
واکشی کرد،
از
پاسخهای
خود به
درخواستهای
"fetch" و "clone" از
سوی کلاینت
حذف کند.
مقایسههای
نام و URL به
حروف بزرگ و
کوچک حساس
هستند.
ببینید:
gitprotocol-v2(5).
promisor.checkFields
فهرستی
از نامهای
فیلدهای
اضافی
مرتبط با
ریموت که با
کاما یا
فاصله از هم
جدا
شدهاند.
کلاینت پیش
از پذیرش یک
ریموت promisor
بررسی
میکند که
آیا مقادیر
این فیلدها
که توسط یک
سرور ارسال
شدهاند با
مقادیر این
فیلدها در
پیکربندی
خود مطابقت
دارند یا
خیر. در حال
حاضر، "partialCloneFilter"
و "token" تنها
نامهای
فیلد
پشتیبانیشده
هستند.
اگر یکی از
این
نامهای
فیلد (مثلاً
"token") برای یک
ریموت promisor
اعلانشده
(مثلاً "foo") در
حال بررسی
باشد، سه
شرط باید
برقرار
باشد تا
بررسی این
فیلد خاص
پذیرفته
شود:
1.پیکربندی
محلی
متناظر
(مثلاً remote.foo.token)
باید تنظیم
شده باشد.
2.سرور
باید فیلد
"token" را برای
ریموت "foo"
اعلان کند.
3.مقدار
پیکربندی
محلی remote.foo.token
باید
دقیقاً با
مقدار
اعلانشده
توسط سرور
برای فیلد
"token" مطابقت
داشته
باشد.
اگر هر یک
از این
شرایط برای
هر نام فیلد
فهرستشده
در promisor.checkFields
برقرار
نباشد،
ریموت
اعلانشده
"foo" رد
میشود.
برای فیلد
"partialCloneFilter"، این
به کلاینت
اجازه
میدهد تا
اطمینان
حاصل کند که
فیلتر سرور
با آنچه
کلاینت به
صورت محلی
انتظار
دارد
مطابقت
دارد، و از
ناسازگاریها
در رفتار
فیلتر کردن
جلوگیری
شود. برای
فیلد "token"،
میتوان از
این برای
تأیید
اینکه
اطلاعات
احراز هویت
با مقادیر
مورد
انتظار
مطابقت
دارند
استفاده
کرد.
مقادیر
فیلدها با
حساسیت به
حروف بزرگ و
کوچک
مقایسه
میشوند.
فیلدهای
"name" و "url"
همیشه بر
اساس سیاست
promisor.acceptFromServer و
مستقل از
این تنظیم
بررسی
میشوند.
نامها و
مقادیر
فیلدها
باید از
طریق
قابلیت "promisor-remote"
توسط سرور
با استفاده
از متغیر
پیکربندی
promisor.sendFields ارسال
شوند. این
فیلدها
تنها در
صورتی
بررسی
میشوند که
متغیر
پیکربندی
promisor.acceptFromServer روی "None"
تنظیم نشده
باشد. در
صورت تنظیم
روی "None"، این
متغیر
پیکربندی
هیچ اثری
ندارد.
ببینید:
gitprotocol-v2(5).
promisor.storeFields
فهرستی
از نامهای
فیلدهای
اضافی
مرتبط با
ریموت که با
کاما یا
فاصله از هم
جدا
شدهاند.
اگر کلاینت
یک ریموت
اعلانشده
را بپذیرد،
مقادیر
مرتبط با
این
نامهای
فیلد
برگرفته از
اعلان
ریموت را در
پیکربندی
خود ذخیره
کرده و سپس
پیکربندی
ریموت خود
را مجدداً
بارگذاری
میکند. در
حال حاضر،
"partialCloneFilter" و "token"
تنها
نامهای
فیلد
پشتیبانیشده
هستند.
برای
مثال، اگر
سرور
"partialCloneFilter=blob:limit=20k" را
برای ریموت
"foo" اعلان
کند و آن
ریموت
پذیرفته
شود، آنگاه
"blob:limit=20k" برای
متغیر
پیکربندی
"remote.foo.partialCloneFilter"
ذخیره
خواهد شد.
البته اگر
مقدار جدید
فیلد از یک
ریموت
اعلانشده
همان مقدار
فیلد موجود
برای آن
ریموت در
سمت کلاینت
باشد، هیچ
تغییری در
پیکربندی
کلاینت
داده
نمیشود.
هنگامی که
مقدار
جدیدی
ذخیره
میشود،
پیامی در
خطای
استاندارد
چاپ میشود
تا کاربران
را از این
موضوع مطلع
سازد.
توجه
داشته
باشید که به
دلایل
امنیتی،
اگر ریموت
از قبل در
سمت کلاینت
پیکربندی
نشده باشد،
هیچ چیزی
برای آن
ریموت
ذخیره
نخواهد شد.
در هر صورت،
هیچ ریموت
جدیدی
ایجاد
نخواهد شد و
هیچ URLی
ذخیره
نخواهد شد.
پیش از
ذخیره
فیلتر کلون
جزئی، آن
فیلتر
تجزیه
میشود تا
معتبر
بودنش
بررسی گردد.
اگر معتبر
نباشد،
هشداری
صادر شده و
ذخیره
نمیشود.
پیش از
ذخیره
توکن،
بررسی
انجام
میشود تا
اطمینان
حاصل شود که
فاقد
نویسههای
کنترلی است.
اگر بررسی
ناموفق
باشد،
هشداری
صادر شده و
ذخیره
نمیشود.
protocol.allow
در صورت
تنظیم، یک
سیاست
پیشفرض
تعریفشده
توسط کاربر
برای تمام
پروتکلهایی
که صراحتاً
سیاستی
ندارند
(
protocol.<name>.allow)
فراهم
میکند.
بهطور
پیشفرض در
صورت تنظیم
نشدن،
پروتکلهای
شناختهشده
به عنوان
امن (http، https، git، ssh)
دارای
سیاست
پیشفرض
always،
پروتکلهای
شناختهشده
به عنوان
خطرناک (ext)
دارای
سیاست
پیشفرض
never،
و سایر
پروتکلها
(از جمله file)
دارای
سیاست
پیشفرض
user
هستند.
سیاستهای
پشتیبانیشده:
•always -
پروتکل
همیشه قابل
استفاده
است.
•never -
پروتکل
هرگز قابل
استفاده
نیست.
•user -
پروتکل
تنها زمانی
قابل
استفاده
است که GIT_PROTOCOL_FROM_USER
یا تنظیم
نشده باشد
یا مقدار 1
داشته باشد.
این سیاست
باید زمانی
استفاده
شود که
میخواهید
پروتکل
مستقیماً
توسط کاربر
قابل
استفاده
باشد اما
نمیخواهید
توسط
دستوراتی
که دستورات
clone/fetch/push را بدون
ورودی
کاربر اجرا
میکنند
(مانند
مقداردهی
اولیه
بازگشتی
زیرماژولها)
استفاده
شود.
protocol.<name>.allow
سیاستی
را برای
استفاده
توسط
پروتکل
<name>
با دستورات
clone/fetch/push تنظیم
میکند.
برای
سیاستهای
موجود، به
protocol.allow در بالا
مراجعه
کنید.
نامهای
پروتکلهایی
که در حال
حاضر توسط git
استفاده
میشوند
عبارتند
از:
•file: هر
مسیر مبتنی
بر فایل
محلی (شامل
نشانیهای
file:// یا
مسیرهای
محلی)
•git:
پروتکل
ناشناس git روی
یک اتصال
مستقیم TCP (یا
پروکسی، در
صورت
پیکربندی)
•ssh:
پروتکل git روی
ssh (شامل
ساختار host:path،
ssh:// و غیره).
•http:
پروتکل git روی
http، هم "smart http" و هم
"dumb http". توجه
داشته
باشید که
این شامل https
نمیشود؛
اگر
میخواهید
هر دو را
پیکربندی
کنید، باید
این کار را
جداگانه
انجام
دهید.
•هر
کمککننده
خارجی با
پروتکل خود
نامگذاری
میشود
(برای مثال،
از hg برای
مجاز کردن
کمککننده
git-remote-hg استفاده
کنید)
protocol.version
در صورت
تنظیم،
کلاینتها
تلاش
خواهند کرد
با استفاده
از نسخه
مشخصشده
پروتکل با
سرور
ارتباط
برقرار
کنند. اگر
سرور از آن
پشتیبانی
نکند،
ارتباط به
نسخه 0 تنزل
مییابد. در
صورت تنظیم
نشدن،
پیشفرض
2
است.
نسخههای
پشتیبانیشده:
•0 -
پروتکل
مخابرهای (wire
protocol) اصلی.
•1 -
پروتکل
مخابرهای
اصلی با
اضافه شدن
یک رشته
نسخه در
پاسخ اولیه
از سرور.
pull.ff
بهطور
پیشفرض، Git
هنگام
ادغام
کامیتی که
از نوادگان
کامیت فعلی
است، کامیت
ادغام
اضافی
ایجاد
نمیکند. در
عوض،
سرشاخه
شاخه فعلی
به جلو
رانده
میشود (fast-forward).
هنگامی که
روی false تنظیم
شود، این
متغیر به Git
میگوید که
در چنین
مواردی یک
کامیت
ادغام
اضافی
ایجاد کند
(معادل دادن
گزینه --no-ff از
خط فرمان).
هنگامی که
روی only تنظیم
شود، فقط
چنین
ادغامهای
رو به جلویی
(fast-forward) مجاز
هستند
(معادل دادن
گزینه --ff-only از
خط فرمان).
این تنظیم
در زمان
اجرای pull،
گزینه merge.ff را
بازنویسی
میکند.
pull.rebase
هنگامی
که true باشد،
هنگام
اجرای "git pull"،
شاخهها به
جای ادغام
با شاخه
پیشفرض از
ریموت
پیشفرض،
بر روی شاخه
واکشیشده
ریبیس (rebase)
میشوند.
برای تنظیم
این مورد
برای هر
شاخه به
صورت
جداگانه،
به "branch.<name>
.rebase"
مراجعه
کنید.
هنگامی که
روی merges (یا
فقط m) تنظیم
شود، گزینه
--rebase-merges به git rebase
داده
میشود تا
کامیتهای
ادغام محلی
در ریبیس
گنجانده
شوند (برای
جزئیات به
git-rebase(1) مراجعه
کنید).
هنگامی که
مقدار interactive
(یا فقط i)
باشد،
ریبیس در
حالت
تعاملی
اجرا
میشود.
نکته: این
عملیاتی
احتمالاً
خطرناک
است؛ از آن
استفاده
نکنید مگر
اینکه از
پیامدهای
آن آگاه
باشید (برای
جزئیات به
git-rebase(1) مراجعه
کنید).
pull.octopus
راهبرد
ادغام
پیشفرض
برای
استفاده
هنگام پول
کردن
همزمان چند
شاخه.
pull.autoStash
هنگامی
که روی true
تنظیم شود،
پیش از شروع
عملیات
بهطور
خودکار یک
مدخل موقت
در اندوخته
(stash) ایجاد
میکند تا
تغییرات
محلی را ثبت
کند، و پس از
اتمام
عملیات
آنها را
بازیابی
میکند.
زمانی که "git pull"
شما ریبیس
انجام
میدهد (به
جای ادغام)،
این کار
میتواند
بسیار مفید
باشد؛ زیرا
بر خلاف پول
مبتنی بر
ادغام که
تغییرات
محلی بدون
تداخل با
ادغام را
تحمل
میکند،
پول مبتنی
بر ریبیس از
کار با
هرگونه
تغییر محلی
خودداری
میکند.
اگر pull.autostash
تنظیم شده
باشد (چه روی
true و چه false)،
گزینههای
merge.autostash و rebase.autostash
نادیده
گرفته
میشوند.
اگر pull.autostash
اصلاً
تنظیم نشده
باشد، بسته
به مقدار
pull.rebase، به جای
آن از merge.autostash یا
rebase.autostash
استفاده
میشود.
میتواند
توسط گزینه
خط فرمان
--[no-]autostash
بازنویسی
شود.
pull.twohead
راهبرد
ادغام
پیشفرض
برای
استفاده
هنگام پول
کردن یک
شاخه
منفرد.
push.autoSetupRemote
اگر روی
true تنظیم
شود، هنگام
پوش
پیشفرض در
شرایطی که
هیچ ردیابی
بالادستی (upstream
tracking) برای شاخه
فعلی وجود
ندارد،
گزینه --set-upstream
را فرض
میکند؛
این گزینه
با مقادیر
simple، upstream و current از
تنظیم push.default
اثر
میگذارد.
این تنظیم
زمانی مفید
است که
بخواهید
شاخههای
جدید
بهطور
پیشفرض به
ریموت
پیشفرض
پوش شوند
(مانند
رفتار push.default=current) و
همچنین
بخواهید
ردیابی
بالادست
تنظیم گردد.
جریانهای
کاری که
بیشترین
بهره را از
این گزینه
میبرند،
جریانهای
کاری
متمرکز simple
هستند که در
آنها
انتظار
میرود
تمام
شاخهها
نام یکسانی
در ریموت
داشته
باشند.
push.default
عملیاتی
را تعریف
میکند که
git
push در صورت
مشخص نشدن
هیچ مشخصه
مرجعی (refspec) (چه
از خط
فرمان، چه
پیکربندی
یا جای دیگر)
باید انجام
دهد. مقادیر
مختلف برای
جریانهای
کاری خاصی
مناسب
هستند؛
برای مثال،
در یک جریان
کاری
کاملاً
متمرکز
(یعنی منبع
واکشی با
مقصد پوش
یکسان است)،
احتمالاً
upstream همان
چیزی است که
میخواهید.
مقادیر
ممکن
عبارتند از:
nothing
هیچ چیزی
را پوش نکن
(با خطا خارج
شو) مگر
اینکه یک
مشخصه مرجع
داده شده
باشد. این
گزینه در
درجه اول
برای
افرادی در
نظر گرفته
شده است که
میخواهند
با صریح
بودن
همیشگی، از
اشتباهات
جلوگیری
کنند.
current
شاخه
فعلی را
برای
بهروزرسانی
شاخهای با
همان نام در
سمت
دریافتکننده
پوش میکند.
هم در
جریانهای
کاری
متمرکز و هم
غیرمتمرکز
کار
میکند.
upstream
شاخه
فعلی را به
شاخهای که
تغییراتش
معمولاً در
شاخه فعلی
ادغام
میشوند (که
@{upstream} نامیده
میشود)
برمیگرداند
و پوش
میکند. این
حالت تنها
در صورتی
منطقی است
که به همان
مخزنی پوش
میکنید که
معمولاً از
آن پول
میکنید
(یعنی جریان
کاری
متمرکز).
tracking
این یک
مترادف
منسوخشده
برای upstream
است.
simple
شاخه
فعلی را با
همان نام در
ریموت پوش
میکند.
این حالت
نیازمند آن
است که مخزن
ریموتی که
قرار است به
آن پوش شود،
شناختهشده
باشد. هنگام
پوش به همان
ریموتی که
از آن پول
میکنید،
شاخه فعلی
نیز باید یک
شاخه
ردیابی
بالادست با
همان نام
داشته
باشد.
این حالت
از نسخه Git 2.0
پیشفرض
است، و
امنترین
گزینه
مناسب برای
مبتدیان
است.
matching
تمام
شاخههایی
را که نام
یکسانی در
هر دو طرف
دارند پوش
میکند. این
باعث
میشود
مخزنی که به
آن پوش
میکنید،
مجموعه
شاخههایی
را که پوش
میشوند به
خاطر
بسپارد
(برای مثال
اگر همیشه
maint
و
master را به
آنجا پوش
کنید و هیچ
شاخه دیگری
را پوش
نکنید،
مخزنی که به
آن پوش
میکنید
دارای این
دو شاخه
خواهد بود و
شاخههای
محلی
maint و
master
شما به آنجا
پوش خواهند
شد).
برای
استفاده
مؤثر از این
حالت، باید
مطمئن شوید
که تمام
شاخههایی
که
میخواهید
پوش کنید،
قبل از
اجرای git push
آماده پوش
شدن هستند؛
زیرا کل هدف
این حالت
این است که
به شما
امکان دهد
تمام
شاخهها را
یکباره
پوش کنید.
اگر
معمولاً
کار روی
تنها یک
شاخه را
تمام کرده و
نتیجه را
پوش
میکنید در
حالی که
سایر
شاخهها
ناتمام
هستند، این
حالت مناسب
شما نیست.
همچنین این
حالت برای
پوش کردن به
یک مخزن
متمرکز
اشتراکی
مناسب
نیست، زیرا
ممکن است
افراد دیگر
شاخههای
جدیدی در
آنجا اضافه
کنند، یا
سرشاخه
شاخههای
موجود را
خارج از
کنترل شما
بهروزرسانی
کنند.
این حالت
قبلاً
پیشفرض
بود، اما از
Git 2.0 به بعد
اینگونه
نیست (simple
پیشفرض
جدید است).
push.followTags
اگر روی true
تنظیم شود،
گزینه --follow-tags را
به صورت
پیشفرض
فعال
میکند.
میتوانید
این
پیکربندی
را در زمان
پوش با مشخص
کردن --no-follow-tags
بازنویسی
کنید.
push.gpgSign
میتواند
روی یک
مقدار
بولی، یا
رشته
if-asked
تنظیم شود.
مقدار true باعث
میشود
تمام
پوشها با GPG
امضا شوند،
گویی که
--signed
به
git-push(1) داده
شده است.
رشته
if-asked
باعث
میشود
پوشها در
صورتی که
سرور از آن
پشتیبانی
کند امضا
شوند، گویی
که
--signed=if-asked به
git
push داده شده
است. مقدار false
میتواند
مقداری از
یک فایل
پیکربندی
با اولویت
پایینتر
را
بازنویسی
کند. یک فلگ
صریح خط
فرمان
همیشه این
گزینه
پیکربندی
را
بازنویسی
میکند.
push.pushOption
هنگامی
که هیچ
آرگومان
--push-option=<option> از خط
فرمان داده
نشود،
git push
طوری عمل
میکند که
گویی هر
<option>
از این
متغیر به
صورت
--push-option=<option>
داده شده
است.
این یک
متغیر
چندمقداری
است، و
میتوان از
یک مقدار
خالی در یک
فایل
پیکربندی
با اولویت
بالاتر
(مانند .git/config
در یک مخزن)
برای پاک
کردن
مقادیر به
ارث رسیده
از
فایلهای
پیکربندی
با اولویت
پایینتر
(مانند $HOME/.gitconfig)
استفاده
کرد.
مثال:
/etc/gitconfig
push.pushoption = a
push.pushoption = b
~/.gitconfig
push.pushoption = c
repo/.git/config
push.pushoption =
push.pushoption = b
این تنها منجر به b خواهد شد (a و c پاک میشوند).
push.recurseSubmodules
میتواند
check، on-demand، only،
یا no باشد،
با همان
رفتاری که push
--recurse-submodules دارد. در
صورت تنظیم
نشدن،
بهطور
پیشفرض no
استفاده
میشود،
مگر اینکه
submodule.recurse تنظیم
شده باشد (که
در این
صورت،
مقدار true به
معنی on-demand
است).
push.useForceIfIncludes
اگر روی
true تنظیم
شود، معادل
مشخص کردن
--force-if-includes به
عنوان یک
گزینه برای
git-push(1) در خط
فرمان است.
افزودن
--no-force-if-includes
در زمان
پوش، این
تنظیم
پیکربندی
را
بازنویسی
میکند.
push.negotiate
اگر روی
true تنظیم
شود، تلاش
میکند
اندازه
فایل بسته
ارسالی را
از طریق
دورهایی از
مذاکره
کاهش دهد که
در آن
کلاینت و
سرور سعی
میکنند
کامیتهای
مشترک را
پیدا کنند.
اگر false باشد،
Git برای یافتن
کامیتهای
مشترک
صرفاً به
اعلان
مرجعهای
سرور متکی
خواهد بود.
push.useBitmaps
اگر روی
false تنظیم
شود،
استفاده از
بیتمپها
را برای git push
غیرفعال
میکند حتی
اگر pack.useBitmaps روی
true باشد،
بدون آنکه
مانع
استفاده
سایر
عملیاتهای
git از
بیتمپها
شود.
پیشفرض true
است.
rebase.backend
بکاند
(پایانه
پشتی)
پیشفرض
برای
استفاده در
ریبیس.
گزینههای
ممکن
عبارتند از
apply یا merge. در
آینده، اگر
بکاند merge
تمام
قابلیتهای
باقیمانده
بکاند apply را
به دست
آورد، این
تنظیم ممکن
است بدون
استفاده
شود.
rebase.stat
آیا آمار
تغییرات (diffstat)
آنچه از
آخرین
ریبیس در
بالادست
تغییر کرده
نشان داده
شود یا خیر.
بهطور
پیشفرض false
است.
rebase.autoSquash
اگر روی true
تنظیم شود،
گزینه
--autosquash از
git-rebase(1) را
بهطور
پیشفرض
برای حالت
تعاملی
فعال
میکند. این
گزینه
میتواند
با گزینه
--no-autosquash
بازنویسی
شود.
rebase.autoStash
هنگامی
که روی true
تنظیم شود،
پیش از شروع
عملیات
بهطور
خودکار یک
مدخل موقت
در اندوخته
(stash) ایجاد
کرده و پس از
پایان
عملیات آن
را اعمال
میکند. این
بدان
معناست که
میتوانید
ریبیس را
روی یک درخت
کاری دارای
تغییرات
ثبتنشده (dirty
worktree) اجرا کنید.
با این حال
با احتیاط
استفاده
کنید: اعمال
نهایی
اندوخته پس
از یک ریبیس
موفق ممکن
است به
تعارضهای
غیرجزئی
منجر شود.
این گزینه
میتواند
توسط
گزینههای
--no-autostash و
--autostash از
git-rebase(1)
بازنویسی
شود.
پیشفرض false
است.
rebase.updateRefs
اگر روی true
تنظیم شود،
گزینه --update-refs را
بهطور
پیشفرض
فعال
میکند.
rebase.missingCommitsCheck
اگر روی
"warn" تنظیم
شود، git rebase -i در
صورت حذف
شدن برخی از
کامیتها
(مثلاً یک خط
حذف شده
باشد) یک
هشدار چاپ
میکند،
اما ریبیس
همچنان
ادامه
خواهد یافت.
اگر روی "error"
تنظیم شود،
هشدار قبلی
را چاپ کرده
و ریبیس را
متوقف
میکند؛
سپس
میتوان از
git rebase --edit-todo برای
تصحیح خطا
استفاده
کرد. اگر روی
"ignore" تنظیم
شود، هیچ
بررسیای
انجام
نمیشود.
برای کنار
گذاشتن یک
کامیت بدون
هشدار یا
خطا، از
دستور drop در
فهرست
کارهای
انجامشدنی
(todo list) استفاده
کنید. مقدار
پیشفرض "ignore"
است.
rebase.instructionFormat
یک رشته
قالب،
همانطور
که در
git-log(1)
مشخص شده
است، برای
استفاده در
فهرست
کارهای
انجامشدنی
(todo list) در طول یک
ریبیس
تعاملی. هش
کامیت
بهطور
خودکار در
ابتدای این
قالب قرار
خواهد
گرفت.
rebase.abbreviateCommands
اگر روی true
تنظیم شود،
git rebase از
نامهای
اختصاری
دستورات در
فهرست
کارهای
انجامشدنی
استفاده
خواهد کرد
که
نتیجهای
شبیه به این
خواهد داشت:
p deadbee The oneline of the commit
p fa1afe1 The oneline of the next commit
...
به جای:
pick deadbee The oneline of the commit
pick fa1afe1 The oneline of the next commit
...
پیشفرض false
است.
rebase.rescheduleFailedExec
دستورات
exec
شکستخورده
را بهطور
خودکار
دوباره
زمانبندی
میکند. این
فقط در حالت
تعاملی (یا
زمانی که
گزینه --exec
ارائه شده
باشد) معنا
دارد. این
معادل مشخص
کردن گزینه
--reschedule-failed-exec است.
rebase.forkPoint
اگر روی false
تنظیم شود،
گزینه --no-fork-point
را بهطور
پیشفرض
تنظیم
میکند.
rebase.rebaseMerges
آیا و
چگونه
گزینه --rebase-merges
به صورت
پیشفرض
تنظیم شود.
میتواند
rebase-cousins، no-rebase-cousins،
یا یک مقدار
بولی باشد.
تنظیم روی true
یا روی no-rebase-cousins
معادل
--rebase-merges=no-rebase-cousins است،
تنظیم روی
rebase-cousins معادل
--rebase-merges=rebase-cousins است،
و تنظیم روی
false معادل --no-rebase-merges
میباشد.
ارسال --rebase-merges
در خط
فرمان، با
یا بدون
آرگومان،
هرگونه
پیکربندی
rebase.rebaseMerges را
بازنویسی
میکند.
rebase.maxLabelLength
هنگام
تولید
نامهای
برچسب (label) از
موضوعات
کامیت،
نامها را
به این طول
کوتاه
میکند.
بهطور
پیشفرض،
نامها به
کمی کمتر از
NAME_MAX کوتاه
میشوند (تا
اجازه داده
شود برای
مثال
فایلهای .lock
برای
مرجعهای
مجزای
متناظر
نوشته
شوند).
receive.advertiseAtomic
بهطور
پیشفرض،
git-receive-pack قابلیت
پوش اتمیک (atomic
push) را به
کلاینتهای
خود اعلان
خواهد کرد.
اگر
نمیخواهید
این قابلیت
اعلان شود،
این متغیر
را روی false
تنظیم
کنید.
receive.advertisePushOptions
هنگامی
که روی true
تنظیم شود،
git-receive-pack قابلیت
گزینههای
پوش (push options) را به
کلاینتهای
خود اعلان
میکند.
بهطور
پیشفرض false
است.
receive.autogc
بهطور
پیشفرض،
git-receive-pack پس از
دریافت
دادهها از
git-push و
بهروزرسانی
مرجعها،
دستور "git maintenance run
--auto" را اجرا
میکند.
میتوانید
با تنظیم
این متغیر
روی false، آن را
متوقف
کنید.
receive.certNonceSeed
با تنظیم
این متغیر
روی یک
رشته، git receive-pack
یک git push --signed را
میپذیرد و
آن را با
استفاده از
یک "nonce"
محافظتشده
توسط HMAC با
استفاده از
این رشته به
عنوان یک
کلید مخفی
تأیید
اعتبار
میکند.
receive.certNonceSlop
هنگامی
که یک git push --signed
یک گواهی
پوش همراه
با یک "nonce"
ارسال
میکند که
توسط یک receive-pack
ارائهدهنده
همان مخزن
در این
تعداد
ثانیه صادر
شده است، "nonce"
یافتشده
در گواهی را
به GIT_PUSH_CERT_NONCE برای
قلابها (hooks)
صادر کند (به
جای آنچه receive-pack
از سمت
ارسالکننده
خواسته بود
بگنجاند).
این کار
ممکن است
نوشتن
بررسیها
در
قلابهای
pre-receive و post-receive را
کمی
آسانتر
کند. به جای
بررسی
متغیر
محیطی GIT_PUSH_CERT_NONCE_SLOP
که ثبت
میکند nonce تا
چند ثانیه
کهنه است تا
تصمیم
بگیرند آیا
میخواهند
گواهی را
بپذیرند یا
خیر، آنها
تنها
میتوانند
بررسی کنند
که آیا GIT_PUSH_CERT_NONCE_STATUS
روی OK است یا
خیر.
receive.fsckObjects
اگر روی true
تنظیم شود،
git-receive-pack تمام
اشیاء
دریافتی را
بررسی
خواهد کرد.
برای آنچه
بررسی
میشود، به
transfer.fsckObjects مراجعه
کنید. مقدار
پیشفرض false
است. در صورت
تنظیم
نشدن،
مقدار transfer.fsckObjects
به جای آن
استفاده
میشود.
receive.fsck.<msg-id>
receive.fsck.skipList
receive.keepAlive
پس از
دریافت
بسته از
کلاینت، receive-pack
ممکن است در
حین پردازش
بسته هیچ
خروجیای
تولید نکند
(اگر --quiet مشخص
شده باشد)،
که باعث
میشود
برخی
شبکهها
اتصال TCP را
قطع کنند. با
تنظیم این
گزینه، اگر
receive-pack در این
مرحله برای
مدت receive.keepAlive
ثانیه هیچ
دادهای
مخابره
نکند، یک
بسته کوتاه
زنده
نگهداری (keepalive)
ارسال
میکند.
مقدار
پیشفرض 5
ثانیه است؛
برای
غیرفعال
کردن کامل
زنده
نگهداریها
آن را روی 0
قرار دهید.
receive.unpackLimit
اگر
تعداد
اشیاء
دریافتی در
یک پوش کمتر
از این
محدودیت
باشد،
اشیاء در
قالب
فایلهای
اشیاء مجزا
(loose objects)
بازگشایی
میشوند. با
این حال اگر
تعداد
اشیاء
دریافتی
مساوی یا
بیشتر از
این حد
باشد، بسته
دریافتی پس
از افزودن
پایههای
دلتای
مفقود، به
صورت یک
بسته ذخیره
میشود.
ذخیره بسته
حاصل از یک
پوش
میتواند
عملیات پوش
را سریعتر
تکمیل کند،
به ویژه در
سیستمهای
فایل کند. در
صورت تنظیم
نشدن،
مقدار transfer.unpackLimit
به جای آن
استفاده
میشود.
receive.maxInputSize
اگر
اندازه
جریان بسته
ورودی
بزرگتر از
این حد
باشد، git-receive-pack به
جای پذیرش
فایل بسته،
با خطا
متوقف
میشود. اگر
تنظیم نشود
یا روی 0
تنظیم شود،
اندازه
نامحدود
خواهد بود.
receive.denyDeletes
اگر روی true
تنظیم شود،
git-receive-pack
بهروزرسانی
مرجعی را که
منجر به حذف
آن مرجع
میشود رد
خواهد کرد.
از این
گزینه برای
جلوگیری از
حذف مرجع از
طریق یک پوش
استفاده
کنید.
receive.denyDeleteCurrent
اگر روی true
تنظیم شود،
git-receive-pack
بهروزرسانی
مرجعی را که
شاخه در حال
حاضر
وارسیشده
(checked out) یک مخزن
غیرخام (non-bare) را
حذف
میکند، رد
خواهد کرد.
receive.denyCurrentBranch
اگر روی true
یا "refuse" تنظیم
شود، git-receive-pack
بهروزرسانی
مرجع به
شاخه در حال
حاضر
وارسیشده
یک مخزن
غیرخام را
رد خواهد
کرد. چنین
پوشی
بالقوه
خطرناک است
زیرا باعث
عدم
همگامسازی
HEAD با ایندکس
و درخت کاری
میشود. اگر
روی "warn"
تنظیم شود،
هشداری در
مورد چنین
پوشی را در stderr
چاپ میکند
اما اجازه
میدهد پوش
ادامه یابد.
اگر روی false یا
"ignore" تنظیم
شود، چنین
پوشهایی
را بدون هیچ
پیامی مجاز
میداند.
مقدار
پیشفرض "refuse"
است.
گزینه
دیگر "updateInstead"
است که در
صورت پوش به
شاخه فعلی،
درخت کاری
را
بهروزرسانی
میکند. این
گزینه برای
همگامسازی
دایرکتوریهای
کاری در
مواردی در
نظر گرفته
شده است که
یک طرف از
طریق ssh
تعاملی به
راحتی در
دسترس نیست
(مثلاً یک
وبسایت
زنده، از
این رو
الزامی است
که
دایرکتوری
کاری تمیز
باشد). این
حالت
همچنین
هنگام
توسعه در
داخل یک
ماشین
مجازی برای
آزمایش و
رفع اشکال
کد در
سیستمهای
عامل مختلف
به کار
میآید.
بهطور
پیشفرض،
اگر درخت
کاری یا
ایندکس
تفاوتی با HEAD
داشته
باشند، "updateInstead"
پوش را رد
خواهد کرد،
اما
میتوان از
قلاب push-to-checkout
برای
سفارشیسازی
این رفتار
استفاده
کرد. ببینید:
githooks(5).
receive.denyNonFastForwards
اگر روی true
تنظیم شود،
git-receive-pack
بهروزرسانی
مرجعی را که
رو به جلو (fast-forward)
نیست رد
خواهد کرد.
از این
گزینه برای
جلوگیری از
چنین
بهروزرسانیای
از طریق
پوش، حتی
اگر آن پوش
اجباری
باشد (forced push)،
استفاده
کنید. این
متغیر
پیکربندی
هنگام
مقداردهی
اولیه یک
مخزن
اشتراکی
تنظیم
میشود.
receive.hideRefs
این
متغیر
مشابه transfer.hideRefs
است، اما
تنها برای
receive-pack اعمال
میشود (و
بنابراین
بر پوشها
تأثیر
میگذارد،
نه
واکشیها).
تلاش برای
بهروزرسانی
یا حذف یک
مرجع پنهان
توسط git push رد
میشود.
receive.procReceiveRefs
این یک
متغیر
چندمقداری
است که
پیشوندهای
مرجع را
برای تطابق
با دستورات
در
receive-pack تعریف
میکند.
دستورات
منطبق با
این
پیشوندها
توسط یک
قلاب خارجی
به نام "proc-receive"
اجرا
خواهند شد،
به جای تابع
داخلی
execute_commands.
اگر این
متغیر
تعریف نشده
باشد، قلاب
"proc-receive" هرگز
استفاده
نخواهد شد،
و تمام
دستورات
توسط تابع
داخلی
execute_commands
اجرا
خواهند شد.
برای
مثال، اگر
این متغیر
روی "refs/for"
تنظیم شود،
پوش کردن به
مرجعی
مانند "refs/for/master"
باعث ایجاد
یا
بهروزرسانی
مرجعی به
نام "refs/for/master"
نخواهد شد،
اما ممکن
است با
اجرای قلاب
"proc-receive"
مستقیماً
یک درخواست
پول (pull request)
ایجاد یا
بهروزرسانی
کند.
میتوان
اصلاحکنندههای
اختیاری را
در ابتدای
مقدار برای
فیلتر کردن
دستورات
برای
اقدامات
خاص ارائه
داد: ایجاد
(a)، تغییر (m)،
حذف (d). علامت !
میتواند
در
اصلاحکنندهها
برای نفی
مدخل
پیشوند
مرجع
گنجانده
شود. برای
مثال:
git config --system --add receive.procReceiveRefs ad:refs/heads
git config --system --add receive.procReceiveRefs !:refs/heads
receive.updateServerInfo
اگر روی true
تنظیم شود،
git-receive-pack پس از
دریافت
دادهها از
git-push و
بهروزرسانی
مرجعها،
git-update-server-info را اجرا
میکند.
receive.shallowUpdate
اگر روی true
تنظیم شود،
.git/shallow میتواند
زمانی که
مرجعهای
جدید به
ریشههای
کمعمق
جدیدی نیاز
داشته
باشند
بهروزرسانی
شود. در غیر
این صورت آن
مرجعها رد
میشوند.
reftable.blockSize
اندازه
بر حسب بایت
مورد
استفاده
توسط
بکاند reftable
هنگام
نوشتن
بلوکها.
اندازه
بلوک توسط
نویسنده
تعیین
میشود و
نیازی نیست
توانی از 2
باشد.
اندازه
بلوک باید
بزرگتر از
طولانیترین
نام مرجع یا
مدخل گزارش
استفادهشده
در مخزن
باشد، زیرا
مرجعها
نمیتوانند
در میان
بلوکها
امتداد
یابند.
توانهایی
از دو که با
سیستم
حافظه
مجازی یا
سیستم فایل
سازگار
هستند
(مانند 4kB یا 8kB)
توصیه
میشوند.
اندازههای
بزرگتر (64kB)
میتوانند
فشردهسازی
بهتری را به
همراه
داشته
باشند،
همراه با
احتمال
افزایش
هزینه
اعمالشده
بر
خوانندگان
در حین
دسترسی.
بزرگترین
اندازه
بلوک 16777215
بایت (15.99 MiB) است.
مقدار
پیشفرض 4096
بایت (4kB) است.
مقدار 0 از
مقدار
پیشفرض
استفاده
خواهد کرد.
reftable.restartInterval
فاصلهای
که در آن
نقاط
راهاندازی
مجدد (restart points)
ایجاد
میشوند.
بکاند reftable
نقاط
راهاندازی
مجدد را
هنگام
ایجاد فایل
تعیین
میکند. عدد 16
ممکن است
برای
اندازههای
بلوک
کوچکتر (4k یا
8k) و عدد 64 برای
اندازههای
بلوک
بزرگتر (64k)
مناسبتر
باشد.
نقاط
راهاندازی
مجدد
متوالیتر
فشردهسازی
پیشوند را
کاهش داده و
فضای
مصرفشده
توسط جدول restart
را افزایش
میدهد، که
هر دو
اندازه
فایل را
افزایش
میدهند.
نقاط
راهاندازی
مجدد با
تکرار
کمتر،
فشردهسازی
پیشوند را
مؤثرتر
کرده و
اندازه کلی
فایل را
کاهش
میدهد،
البته با
افزایش
جریمه برای
خوانندگانی
که پس از
مرحله
جستجوی
دودویی
باید
رکوردهای
بیشتری را
پیمایش
کنند.
حداکثر 65535
نقطه
راهاندازی
مجدد در هر
بلوک
پشتیبانی
میشود.
مقدار
پیشفرض،
ایجاد نقاط
راهاندازی
مجدد در هر 16
رکورد است.
مقدار 0 از
مقدار
پیشفرض
استفاده
خواهد کرد.
reftable.indexObjects
آیا
بکاند reftable
باید
بلوکهای
اشیاء را
بنویسد یا
خیر.
بلوکهای
اشیاء یک
نگاشت
معکوس از
شناسه شیء (object ID)
به
مرجعهایی
هستند که به
آنها
اشاره
میکنند.
مقدار
پیشفرض true
است.
reftable.geometricFactor
هر زمان
که بکاند reftable
جدول جدیدی
را به پشته
اضافه
میکند،
فشردهسازی
خودکار (auto compaction)
را انجام
میدهد تا
اطمینان
حاصل شود که
تنها تعداد
انگشتشماری
جدول وجود
دارد.
بکاند این
کار را با
حصول
اطمینان از
اینکه
جدولها با
توجه به
اندازههای
مربوط به هر
جدول یک
دنباله
هندسی
تشکیل
میدهند،
انجام
میدهد.
بهطور
پیشفرض،
دنباله
هندسی از
ضریب 2
استفاده
میکند، به
این معنی که
برای هر
جدول، جدول
بزرگتر
بعدی باید
حداقل دو
برابر
بزرگتر
باشد.
حداکثر
ضریب 256
پشتیبانی
میشود.
reftable.lockTimeout
هر زمان
که بکاند reftable
یک جدول
جدید به
پشته اضافه
میکند،
پیش از
بهروزرسانی
آن باید
فایل مرکزی
"tables.list" را قفل
کند. این
پیکربندی
کنترل
میکند که
فرآیند در
صورتی که
فرآیند
دیگری از
قبل قفل را
در اختیار
گرفته
باشد، چه
مدت برای به
دست آوردن
قفل منتظر
بماند.
مقدار 0 به
معنای عدم
تلاش مجدد
است؛ مقدار -1
به معنای
تلاش
نامحدود
است. مقدار
پیشفرض 100
است (یعنی
تلاش مجدد
برای 100
میلیثانیه).
remote.pushDefault
ریموت
پیشفرض
برای ارسال
(push). این متغیر
branch.<name>.remote را
برای تمام
شاخهها
بازنویسی
میکند، و
برای
شاخههای
خاص توسط
branch.<name>.pushRemote
بازنویسی
میشود.
remote.<name>.url
نشانی URL
یک مخزن
ریموت. به
git-fetch(1)
یا
git-push(1)
مراجعه
کنید. یک
ریموت
پیکربندیشده
میتواند
چندین URL
داشته
باشد؛ در
این حالت
اولین
نشانی برای
واکشی (fetch) و
همه آنها
برای ارسال
(push) استفاده
میشوند (با
فرض اینکه
هیچ
remote.<name>.pushurl
تعریف نشده
باشد). تنظیم
این کلید
روی رشته
خالی،
فهرست
نشانیها
را پاک
میکند و به
شما اجازه
میدهد
پیکربندی
قبلی را
بازنویسی
کنید.
remote.<name>.pushurl
نشانی URL
ارسال (push) یک
مخزن ریموت.
به
git-push(1)
مراجعه
کنید. اگر
گزینه
pushurl در
یک ریموت
پیکربندیشده
وجود داشته
باشد، به
جای
remote.<name>.url
برای ارسال
استفاده
میشود. یک
ریموت
پیکربندیشده
میتواند
چندین URL
ارسال
داشته
باشد؛ در
این حالت
ارسال به
همه آنها
انجام
میشود.
تنظیم این
کلید روی
رشته خالی،
فهرست
نشانیها
را پاک
میکند و به
شما اجازه
میدهد
پیکربندی
قبلی را
بازنویسی
کنید.
remote.<name>.proxy
برای
ریموتهایی
که به curl نیاز
دارند (http، https و
ftp)، نشانی
پروکسی
مورد
استفاده
برای آن
ریموت. برای
غیرفعال
کردن
پروکسی
برای آن
ریموت، آن
را روی رشته
خالی تنظیم
کنید.
remote.<name>.proxyAuthMethod
برای
ریموتهایی
که به curl نیاز
دارند (http، https و
ftp)، روش مورد
استفاده
برای احراز
هویت در
برابر
پروکسی در
حال
استفاده (که
احتمالاً
در remote.<name>.proxy
تنظیم شده
است). به http.proxyAuthMethod
مراجعه
کنید.
remote.<name>.fetch
remote.<name>.push
remote.<name>.mirror
اگر true
باشد،
ارسال (push) به
این ریموت
بهطور
خودکار
بهگونهای
عمل میکند
که گویی
گزینه --mirror در
خط فرمان
داده شده
است.
remote.<name>.skipDefaultUpdate
مترادفی
منسوخشده
برای
remote.<name>.skipFetchAll
(اگر هر دو در
فایلهای
پیکربندی
با مقادیر
متفاوتی
تنظیم شده
باشند،
مقدار
آخرین
رخداد
استفاده
خواهد شد).
remote.<name>.skipFetchAll
اگر true
باشد،
هنگام
بهروزرسانی
با استفاده
از
git-fetch(1)،
زیردستور
update
از
git-remote(1) از
این ریموت
صرفنظر
میشود، و
توسط وظیفه
پیشواکشی
(prefetch) در
git maintenance
نادیده
گرفته
خواهد شد.
remote.<name>.receivepack
برنامه
پیشفرض
برای اجرا
در سمت
ریموت
هنگام
ارسال (push).
گزینه
--receive-pack در
git-push(1) را
ببینید.
remote.<name>.uploadpack
برنامه
پیشفرض
برای اجرا
در سمت
ریموت
هنگام
واکشی (fetch).
گزینه
--upload-pack در
git-fetch-pack(1) را
ببینید.
remote.<name>.tagOpt
تنظیم
این مقدار
روی
--no-tags دنبال
کردن
خودکار
برچسبها
را هنگام
واکشی از
ریموت <name>
غیرفعال
میکند.
تنظیم آن
روی
--tags تمام
برچسبها
را از ریموت
<name> واکشی
خواهد کرد،
حتی اگر از
نوک
شاخههای
ریموت قابل
دسترسی
نباشند.
ارسال
مستقیم این
فلگها به
git-fetch(1)
میتواند
این تنظیم
را
بازنویسی
کند.
گزینههای
--tags و
--no-tags در
git-fetch(1)
را ببینید.
remote.<name>.vcs
تنظیم
این متغیر
روی مقدار <vcs>
باعث
میشود Git با
استفاده از
برنامه
کمکی git-remote-<vcs> با
ریموت
تعامل کند.
remote.<name>.prune
هنگامی
که روی true
تنظیم شود،
واکشی از
این ریموت
بهطور
پیشفرض
تمام مراجع
ردیابی
ریموت را که
دیگر روی
ریموت وجود
ندارند نیز
حذف میکند
(گویی گزینه
--prune در خط
فرمان داده
شده است).
تنظیمات fetch.prune
را در صورت
وجود،
بازنویسی
میکند.
remote.<name>.pruneTags
هنگامی
که روی true
تنظیم شود،
واکشی از
این ریموت
بهطور
پیشفرض
تمام
برچسبهای
محلی را که
دیگر روی
ریموت وجود
ندارند نیز
حذف
میکند، در
صورتی که
هرس کردن (pruning)
بهطور کلی
از طریق
remote.<name>.prune،
fetch.prune
یا
--prune فعال
شده باشد.
تنظیمات
fetch.pruneTags را در
صورت وجود،
بازنویسی
میکند.
همچنین به
remote.<name>.prune و
بخش PRUNING در git-fetch(1)
مراجعه
کنید.
remote.<name>.promisor
هنگامی
که روی true
تنظیم شود،
از این
ریموت برای
واکشی
اشیاء promisor
استفاده
خواهد شد.
remote.<name>.partialclonefilter
فیلتری
که هنگام
واکشی از
این ریموت promisor
اعمال
خواهد شد.
تغییر دادن
یا پاک کردن
این مقدار
فقط روی
واکشیها
برای
کامیتهای
جدید تأثیر
میگذارد.
برای واکشی
اشیاء
مرتبط با
کامیتهایی
که
هماکنون
در
پایگاهداده
محلی اشیاء
وجود
دارند، از
گزینه
--refetch در
git-fetch(1) استفاده
کنید.
remote.<name>.serverOption
مجموعه
پیشفرض
گزینههای
سرور که
هنگام
واکشی از
این ریموت
استفاده
میشوند.
این
گزینههای
سرور
میتوانند
توسط
آرگومانهای
خط فرمان
--server-option=
بازنویسی
شوند.
این یک
متغیر
چندمقداری
است، و
میتوان از
یک مقدار
خالی در
فایل
پیکربندی
با اولویت
بالاتر
(مثلاً .git/config
در یک مخزن)
برای پاک
کردن
مقادیر به
ارث برده
شده از
فایلهای
پیکربندی
با اولویت
پایینتر
(مثلاً $HOME/.gitconfig)
استفاده
کرد.
remote.<name>.negotiationRestrict
هنگام
مذاکره با
این ریموت
در زمان
git
fetch،
کامیتهای
اعلامشده
به عنوان
خطوط "have" را
تنها به
مواردی
محدود
میکند که
از مراجع
منطبق با
الگوهای
ارائهشده
قابل
دسترسی
باشند. این
گزینه
پیکربندی
چندمقداری
مانند
--negotiation-restrict
در خط فرمان
رفتار
میکند.
هر مقدار
یا یک نام
دقیق مرجع
است (مثلاً
refs/heads/release) یا یک
الگوی گلوب
(glob) (مثلاً
refs/heads/release/*). نحو
الگو
همانند
--negotiation-restrict است.
این
مقادیر
پیکربندی
به عنوان
پیشفرضها
برای گزینه
خط فرمان
--negotiation-restrict
استفاده
میشوند.
اگر --negotiation-restrict (یا
مترادف آن
--negotiation-tip) در خط
فرمان مشخص
شده باشد،
از مقادیر
پیکربندی
استفاده
نمیشود.
این
مقادیر
همچنین بر
مذاکره در
زمان git push
تأثیر
میگذارند
در صورتی که
push.negotiate فعال
باشد.
مقادیر
خالی
نشاندهنده
نادیده
گرفتن تمام
مقادیر
قبلی
هستند، که
امکان
بازنشانی
فهرست از
سناریوهای
پیکربندی
گستردهتر
را فراهم
میکند.
remote.<name>.negotiationInclude
هنگام
مذاکره با
این ریموت
در زمان
git
fetch، کلاینت
فهرستی از
کامیتهایی
را که به
صورت محلی
وجود دارند
اعلام
میکند. در
مخازنی با
مراجع
زیاد، این
فهرست "haves"
ممکن است
کوتاه (truncate) شود.
بسته به
ساختار
دادهها،
نادیده
گرفتن برخی
مراجع ممکن
است
پرهزینه
باشد. این
گزینه
پیکربندی
چندمقداری،
مراجع،
هشهای
کامیت، یا
الگوهای
گلوب مرجعی
را مشخص
میکند که
نوک آنها
باید همیشه
در طول
مذاکره
واکشی با
این ریموت
به عنوان
کامیتهای
"have" ارسال
شود.
هر مقدار
یا یک نام
دقیق مرجع
(مثلاً refs/heads/release)،
یک هش
کامیت، یا
یک الگوی
گلوب (مثلاً
refs/heads/release/*) است.
نحو الگو
همانند
--negotiation-include است.
این
مقادیر
پیکربندی
به عنوان
پیشفرضها
برای گزینه
خط فرمان
--negotiation-include
استفاده
میشوند.
اگر --negotiation-include در
خط فرمان
مشخص شده
باشد، از
مقادیر
پیکربندی
استفاده
نمیشود.
این گزینه
به فرایند
معمول
مذاکره
افزوده
میشود:
الگوریتم
مذاکره
همچنان
اجرا
میشود و
کامیتهای
منتخب خود
را اعلام
میکند،
اما مراجع
منطبق بر
remote.<name>.negotiationInclude به
صورت بدون
قید و شرط
علاوه بر
کامیتهای
انتخابشده
از روی
هیوریستیک
ارسال
میشوند.
این
مقادیر
همچنین بر
مذاکره در
زمان git push
تأثیر
میگذارند
در صورتی که
push.negotiate فعال
باشد.
مقادیر
خالی
نشاندهنده
نادیده
گرفتن تمام
مقادیر
قبلی
هستند، که
امکان
بازنشانی
فهرست از
سناریوهای
پیکربندی
گستردهتر
را فراهم
میکند.
remote.<name>.followRemoteHEAD
نحوه
برخورد
git-fetch(1)
با
بهروزرسانیهای
remotes/<name>/HEAD
هنگام
واکشی با
استفاده از
refspecهای
پیکربندیشده
یک ریموت.
مقدار
پیشفرض "create"
است که در
صورتی که
remotes/<name>/HEAD روی
ریموت وجود
داشته باشد
اما محلی
نباشد، آن
را ایجاد
میکند؛
این عمل به
مرجع محلی
از قبل
موجود دست
نمیزند.
تنظیم آن
روی "warn" در
صورتی که
ریموت
مقداری
متفاوت از
مقدار محلی
داشته باشد
پیامی چاپ
میکند؛ در
صورتی که
هیچ مرجع
محلی وجود
نداشته
باشد،
مانند "create"
رفتار
میکند.
حالتی از "warn"
مقدار "warn-if-not-$branch"
است که
مانند "warn"
رفتار
میکند،
اما اگر
HEAD
روی ریموت
برابر با
$branch
باشد،
پیامی
نمایش
نمیدهد.
تنظیم آن
روی "always" مرجع
remotes/<name>/HEAD را
بیصدا به
مقدار
موجود روی
ریموت
بهروزرسانی
میکند. در
نهایت،
تنظیم آن
روی "never" هرگز
مرجع محلی
را تغییر
نداده یا
ایجاد
نمیکند.
remotes.<group>
فهرست
ریموتهایی
که توسط "git remote update
<group>" واکشی
میشوند. به
git-remote(1) مراجعه
کنید.
repack.useDeltaBaseOffset
بهطور
پیشفرض،
git-repack(1)
بستههایی
ایجاد
میکند که
از delta-base offset
استفاده
میکنند.
اگر نیاز
دارید مخزن
خود را با
گیت
قدیمیتر
از نسخه
1.4.4 به
اشتراک
بگذارید،
چه به صورت
مستقیم یا
از طریق یک
پروتکل
غیرهوشمند
مانند http،
باید این
گزینه را
روی "false"
تنظیم کرده
و مجدداً
بستهبندی
کنید.
دسترسی از
نسخههای
قدیمی گیت
روی پروتکل
بومی تحت
تأثیر این
گزینه قرار
نمیگیرد.
repack.packKeptObjects
اگر روی true
تنظیم شود،
باعث
میشود
git repack
بهگونهای
عمل کند که
گویی
--pack-kept-objects
ارسال شده
است. برای
جزئیات به
git-repack(1) مراجعه
کنید. در
حالت عادی
پیشفرض
false
است، اما
اگر یک
نمایه
بیتمپ در
حال نوشته
شدن باشد (چه
از طریق
--write-bitmap-index
یا
repack.writeBitmaps)،
پیشفرض
true
خواهد بود.
repack.useDeltaIslands
اگر روی true
تنظیم شود،
باعث
میشود git repack
بهگونهای
عمل کند که
گویی --delta-islands
ارسال شده
است. مقدار
پیشفرض false
است.
repack.writeBitmaps
هنگامی
که true باشد،
گیت هنگام
بستهبندی
تمام اشیاء
روی دیسک
(مثلاً
زمانی که git
repack -a اجرا
میشود)، یک
نمایه
بیتمپ
مینویسد.
این نمایه
میتواند
مرحله
"شمارش
اشیاء" در
بستههای
بعدی
ایجادشده
برای cloneها و
fetchها را سرعت
بخشد، به
بهای
مقداری
فضای دیسک و
زمان اضافی
صرفشده در
بستهبندی
مجدد اولیه.
اگر چندین packfile
ایجاد
شوند، این
گزینه هیچ
اثری ندارد.
در مخازن bare
پیشفرض true و
در غیر این
صورت false است.
repack.updateServerInfo
repack.cruftWindow, repack.cruftWindowMemory, repack.cruftDepth,
repack.cruftThreads
پارامترهای
مورد
استفاده
توسط
git-pack-objects(1)
هنگام
تولید یک
بسته
زائدات (cruft pack) در
صورتی که
پارامترهای
مربوطه در
خط فرمان
داده نشده
باشند. برای
مقادیر
پیشفرض و
معانی
آنها، به
متغیرهای
پیکربندی
با نام
مشابه
pack.*
مراجعه
کنید.
repack.midxMustContainCruft
هنگامی
که روی true
تنظیم شود،
git-repack(1) هنگامی
که با
--write-midx
فراخوانی
میشود،
بسته(های) cruft
را در صورت
وجود بدون
قید و شرط در
نمایه
چندبستهای
(MIDX)
میگنجاند.
هنگامی که false
باشد،
بستههای cruft
تنها در
صورت لزوم
در MIDX گنجانده
میشوند
(مثلاً به
این دلیل که
ممکن است
برای تشکیل
یک بستار
دسترسیپذیری
با
بیتمپهای
MIDX مورد نیاز
باشند).
مقدار
پیشفرض true
است.
repack.midxSplitFactor
ضریب
مورد
استفاده در
شرط ادغام
هندسی
هنگام
فشردهسازی
لایههای
افزایشی MIDX در
حین اجرای
git
repack زمانی که
با گزینه
--write-midx=incremental
فراخوانی
میشود.
لایههای
مجاور
زمانی
ادغام
میشوند که
تعداد
اشیاء
انباشتهشده
لایه
جدیدتر از
1/<N> تعداد
اشیاء لایه
عمیقتر
بعدی فراتر
رود. باید
حداقل 2 باشد.
مقدار
پیشفرض 2
است.
repack.midxNewLayerThreshold
حداقل
تعداد
بستهها در
لایه رأس MIDX
پیش از آنکه
آن بستهها
به عنوان
نامزد برای
بستهبندی
مجدد هندسی
در طول
git repack
--write-midx=incremental در نظر
گرفته شوند.
هنگامی که
لایه رأس
بستههای
کمتری از
این آستانه
داشته
باشد، آن
بستهها
بهطور
کامل از
بستهبندی
مجدد هندسی
کنار
گذاشته شده
و بنابراین
دستنخورده
باقی
میمانند.
باید حداقل 1
باشد. مقدار
پیشفرض 8
است.
rerere.autoUpdate
هنگامی
که روی true
تنظیم شود،
git-rerere پس از حل
تمیز
تعارضها
با استفاده
از
راهحلهای
از پیش
ثبتشده،
ایندکس را
با محتویات
حاصل
بهروزرسانی
میکند.
مقدار
پیشفرض false
است.
rerere.enabled
فعالسازی
ثبت
تعارضهای
حلشده، تا
در صورت
مواجهه
مجدد با
قطعات
تعارض (conflict hunks)
یکسان،
بتوان
آنها را
بهطور
خودکار حل
کرد. بهطور
پیشفرض،
git-rerere(1) در صورتی
که پوشه
rr-cache
در زیر
$GIT_DIR
وجود داشته
باشد فعال
است، مثلاً
اگر قبلاً
از "rerere" در
مخزن
استفاده
شده باشد.
revert.reference
تنظیم
این متغیر
روی true باعث
میشود git revert
بهگونهای
رفتار کند
که گویی
گزینه --reference
داده شده
است.
safe.bareRepository
مشخص
میکند که
گیت با کدام
مخازن bare کار
خواهد کرد.
مقادیری که
در حال حاضر
پشتیبانی
میشوند
عبارتند از:
•all: گیت
با تمام
مخازن bare کار
میکند. این
مقدار در Git 2.x
پیشفرض
است.
•
explicit: گیت
فقط با
مخازن bare کار
میکند که
از طریق
گزینه سطح
بالای خط
فرمان
--git-dir یا
متغیر
محیطی
GIT_DIR
مشخص
شدهاند (به
git(1) مراجعه
کنید). این
مقدار در Git
3.0
پیشفرض
خواهد بود.
اگر در
گردش کار
خود از
مخازن bare
استفاده
نمیکنید،
ممکن است
مفید باشد
که safe.bareRepository را
در
پیکربندی
سراسری (global)
خود روی explicit
تنظیم کنید.
این کار شما
را در برابر
حملاتی که
شامل کلون
کردن مخزنی
حاوی یک
مخزن bare و
اجرای یک
دستور Git در
آن پوشه
است،
محافظت
میکند.
اگر
بهطور
منظم از
مخازن bare
استفاده
میکنید و
میخواهید
رفتار فعلی
را پس از
ارتقا به Git 3.0
حفظ کنید،
safe.bareRepository را در
پیکربندی
سراسری یا
سیستمی خود
روی all تنظیم
کنید.
این تنظیم
پیکربندی
فقط در
پیکربندی
محافظتشده
رعایت
میشود (به
بخش موسوم
به “SCOPES”
مراجعه
کنید). این
امر مانع از
دستکاری
این مقدار
توسط مخازن
غیرقابل
اعتماد
میشود.
safe.directory
این
مدخلهای
پیکربندی،
پوشههای
تحت ردیابی
گیت را مشخص
میکنند که
حتی در صورت
تعلق به
شخصی غیر از
کاربر
فعلی، امن
در نظر
گرفته
میشوند.
بهطور
پیشفرض،
گیت حتی از
تجزیه (parse)
پیکربندی
گیت مخزنی
که متعلق به
شخص دیگری
است امتناع
میکند، چه
رسد به
اجرای
قلابهای (hooks)
آن، و این
تنظیم
پیکربندی
به کاربران
اجازه
میدهد
استثناها
را مشخص
کنند،
مثلاً برای
مخازنی که
عمداً به
اشتراک
گذاشته
شدهاند
(گزینه
--shared در
git-init(1) را
ببینید).
این یک
تنظیم
چندمقداری
است، یعنی
میتوانید
بیش از یک
پوشه را از
طریق git config --add
اضافه کنید.
برای
بازنشانی
فهرست
پوشههای
امن (مثلاً
برای
بازنویسی
هر پوشهای
از این دست
که در
پیکربندی
سیستم مشخص
شده است)، یک
مدخل safe.directory با
مقدار خالی
اضافه
کنید.
این تنظیم
پیکربندی
فقط در
پیکربندی
محافظتشده
رعایت
میشود (به
بخش موسوم
به “SCOPES”
مراجعه
کنید). این
امر مانع از
دستکاری
این مقدار
توسط مخازن
غیرقابل
اعتماد
میشود.
مقدار این
تنظیم
درونیابی
(interpolate) میشود،
یعنی ~/<path>
به یک مسیر
نسبی نسبت
به پوشه
خانگی (home)
گسترش
مییابد و
%(prefix)/<path> به
یک مسیر
نسبی نسبت
به پیشوند
(زمان اجرا)
گیت گسترش
مییابد.
برای
انصراف
کامل از این
بررسی
امنیتی،
safe.directory را روی
رشته *
تنظیم کنید.
این کار
اجازه
میدهد با
تمام مخازن
بهگونهای
رفتار شود
که گویی
پوشه آنها
در فهرست
safe.directory آمده
است. اگر safe.directory=*
در
پیکربندی
سیستم
تنظیم شده
باشد و
بخواهید
این محافظت
را مجدداً
فعال کنید،
فهرست خود
را با یک
مقدار خالی
پیش از
برشمردن
مخازنی که
امن
میدانید
مقداردهی
اولیه کنید.
ارائه یک
پوشه که /* به
انتهای آن
افزوده شده
است، اجازه
دسترسی به
تمام مخازن
زیر آن پوشه
مشخصشده
را میدهد.
همانطور
که توضیح
داده شد،
گیت بهطور
پیشفرض
تنها به شما
اجازه
میدهد به
مخازنی
دسترسی
داشته
باشید که
متعلق به
خودتان
هستند،
یعنی
کاربری که
گیت را اجرا
میکند. با
این حال،
هنگامی که
گیت به
عنوان root در
یک پلتفرم
غیر
ویندوزی که
sudo را ارائه
میدهد
اجرا
میشود،
متغیر
محیطی SUDO_UID را
که sudo ایجاد
میکند
بررسی کرده
و علاوه بر
شناسه root،
دسترسی به uid
ثبتشده به
عنوان
مقدار آن را
نیز مجاز
میداند.
این امر
برای تسهیل
انجام
توالی
معمول "make && sudo make
install" در طول
نصب است. یک
فرآیند گیت
که تحت sudo
اجرا
میشود، در
قالب root کار
میکند اما
دستور sudo
متغیر
محیطی را
صادر (export)
میکند تا
ثبت کند
کاربر اصلی
چه
شناسهای
داشته است.
اگر این
مورد نظر
شما نیست و
میخواهید
گیت در عوض
فقط به
مخازنی که
متعلق به root
هستند
اعتماد
کند،
میتوانید
متغیر SUDO_UID را
پیش از
فراخوانی
گیت از محیط
root حذف کنید.
sendemail.identity
یک هویت
(identity) پیکربندی.
هنگامی که
ارائه شود،
باعث
میشود
مقادیر
موجود در
زیربخش
sendemail.<identity> بر
مقادیر
موجود در
بخش sendemail
اولویت
پیدا کنند.
هویت
پیشفرض
مقدار sendemail.identity
است.
sendemail.smtpEncryption
برای
توضیحات به
git-send-email(1) مراجعه
کنید. توجه
داشته
باشید که
این تنظیم
مشمول
سازوکار
identity
نیست.
sendemail.smtpSSLCertPath
مسیر ca-certificates
(یا یک پوشه
یا یک فایل
تکی). برای
غیرفعال
کردن
اعتبارسنجی
گواهی، آن
را روی یک
رشته خالی
تنظیم
کنید.
sendemail.smtpSSLClientCert
مسیر
فایل گواهی
کلاینت که
در صورت
درخواست
سرور ارائه
میشود. این
گزینه
زمانی که
سرور برای
اعتبارسنجی
گواهیهای
کلاینت
پیکربندی
شده باشد
الزامی است.
اگر کلید
خصوصی
مربوطه در
فایل
گنجانده
نشده باشد،
باید با
استفاده از
sendemail.smtpSSLClientKey یا
گزینه --smtp-ssl-client-key
فراهم شود.
sendemail.smtpSSLClientKey
مسیر
فایل کلید
خصوصی
کلاینت که
با گواهی
کلاینت
مطابقت
دارد. برای
اجتناب از
پیکربندی
نادرست،
این
پیکربندی
باید همراه
با
sendemail.smtpSSLClientCert یا
گزینه
--smtp-ssl-client-cert
استفاده
شود. اگر
کلید
کلاینت در
گواهی
کلاینت
گنجانده
شده باشد،
انتخاب
کلید خصوصی
به فرمت
گواهی
بستگی دارد.
برای
جزئیات
بیشتر به
https://metacpan.org/pod/IO::Socket::SSL
مراجعه
کنید.
sendemail.<identity>.*
نسخههای
مختص هویت
از
پارامترهای
sendemail.* که در زیر
آمدهاند،
که در صورت
انتخاب این
هویت چه از
طریق خط
فرمان یا
sendemail.identity، بر
آنها
اولویت
دارند.
sendemail.multiEdit
اگر true
باشد
(پیشفرض)،
یک نمونه
ویرایشگر
تکی برای
ویرایش
فایلهایی
که باید
ویرایش
کنید اجرا
خواهد شد
(وصلهها
زمانی که --annotate
استفاده
شود، و
خلاصه
زمانی که --compose
استفاده
شود). اگر false
باشد،
فایلها
یکی پس از
دیگری
ویرایش
میشوند و
هر بار یک
ویرایشگر
جدید اجرا
میشود.
sendemail.confirm
پیشفرض
برای تأیید
گرفتن پیش
از ارسال را
تنظیم
میکند.
باید یکی از
موارد
always،
never،
cc،
compose یا
auto باشد. برای
مفهوم این
مقادیر، به
--confirm در
مستندات
git-send-email(1) مراجعه
کنید.
sendemail.mailmap
اگر
true
باشد، باعث
میشود
git-send-email(1)
فرض را بر
--mailmap
بگذارد، در
غیر این
صورت
--no-mailmap فرض
میشود.
بهطور
پیشفرض
False
است.
sendemail.mailmap.file
مکان یک
فایل
افزایشی mailmap
مختص
git-send-email(1).
ابتدا mailmap
پیشفرض و
mailmap.file
بارگذاری
میشوند.
بنابراین،
مدخلهای
موجود در
این فایل بر
مدخلهای
مکانهای
پیشفرض mailmap
اولویت
دارند. به
gitmailmap(5) مراجعه
کنید.
sendemail.mailmap.blob
مشابه
sendemail.mailmap.file، اما
مقدار را به
عنوان یک
مرجع به یک blob
در مخزن در
نظر
میگیرد.
مدخلهای
موجود در
sendemail.mailmap.file بر
مدخلهای
اینجا
اولویت
دارند. به
gitmailmap(5) مراجعه
کنید.
sendemail.aliasesFile
برای
اجتناب از
تایپ
نشانیهای
طولانی
ایمیل، این
متغیر را به
یک یا چند
فایل
نامهای
مستعار
ایمیل
هدایت کنید.
همچنین
باید sendemail.aliasFileType
را مشخص
نمایید.
sendemail.aliasFileType
قالب
فایل(های)
مشخصشده
در sendemail.aliasesFile. باید
یکی از
موارد
mutt،
mailrc،
pine،
elm،
gnus
یا
sendmail باشد.
شکل فایل
نام مستعار
در هر قالب
را میتوان
در مستندات
برنامه
ایمیلی با
همان نام
یافت.
تفاوتها و
محدودیتها
نسبت به
قالبهای
استاندارد
در زیر شرح
داده
شدهاند:
sendmail
•نامهای
مستعار
نقلقولشده
و
نشانیهای
نقلقولشده
پشتیبانی
نمیشوند:
خطوط حاوی
نماد "
نادیده
گرفته
میشوند.
•تغییر
مسیر به یک
فایل (/path/name) یا
لوله (|command)
پشتیبانی
نمیشود.
•شامل
کردن فایل
(:include: /path/name)
پشتیبانی
نمیشود.
•برای
هرگونه
ساختار
صریحاً
پشتیبانینشده
و هر خط
دیگری که
توسط
تجزیهکننده
شناخته
نشود،
هشدارهایی
در خروجی
خطای
استاندارد
چاپ
میشوند.
sendemail.annotate, sendemail.bcc, sendemail.cc, sendemail.ccCmd,
sendemail.chainReplyTo, sendemail.envelopeSender, sendemail.from,
sendemail.headerCmd, sendemail.signedOffByCc, sendemail.smtpPass,
sendemail.suppressCc, sendemail.suppressFrom, sendemail.to, sendemail.toCmd,
sendemail.smtpDomain, sendemail.smtpServer, sendemail.smtpServerPort,
sendemail.smtpServerOption, sendemail.smtpUser, sendemail.imapSentFolder,
sendemail.useImapOnly, sendemail.thread, sendemail.transferEncoding,
sendemail.validate, sendemail.xmailer
این
متغیرهای
پیکربندی
همگی
مقداری
پیشفرض
برای
گزینههای
خط فرمان
git-send-email(1) ارائه
میدهند.
برای
جزئیات به
مستندات آن
مراجعه
کنید.
sendemail.outlookidfix
اگر
true
باشد، باعث
میشود
git-send-email(1)
گزینه
--outlook-id-fix
را فرض کند،
و اگر
false
باشد فرض را
بر
--no-outlook-id-fix
میگذارد.
در صورت
مشخص نشدن،
به همان
شیوهای
عمل میکند
که گویی
--outlook-id-fix
مشخص نشده
است.
sendemail.signedOffCc
(منسوخشده)
نام
مستعار
منسوخشده
برای sendemail.signedOffByCc.
sendemail.smtpBatchSize
تعداد
پیامهایی
که در هر
اتصال
ارسال
میشوند،
که پس از آن
ورود مجدد
رخ خواهد
داد. اگر
مقدار
0 یا
تعریفنشده
باشد، تمام
پیامها در
یک اتصال
ارسال
میشوند.
همچنین
گزینه
--batch-size در
git-send-email(1) را
ببینید.
sendemail.smtpReloginDelay
تعداد
ثانیههای
انتظار پیش
از اتصال
مجدد به
سرور smtp.
همچنین
گزینه
--relogin-delay
در
git-send-email(1) را
ببینید.
sendemail.forbidSendmailVariables
برای
اجتناب از
خطاهای
رایج
پیکربندی
نادرست،
git-send-email(1) در صورت
وجود
هرگونه
گزینه
پیکربندی
برای
sendmail
همراه با یک
هشدار
متوقف
خواهد شد.
این متغیر
را برای دور
زدن این
بررسی
تنظیم
کنید.
sequence.editor
ویرایشگر
متنی مورد
استفاده
توسط git rebase -i
برای
ویرایش
فایل
دستورالعمل
بازپایهریزی.
این مقدار
قرار است
هنگام
استفاده
توسط پوسته
(shell) تفسیر شود.
میتواند
توسط متغیر
محیطی GIT_SEQUENCE_EDITOR
بازنویسی
شود. در صورت
پیکربندی
نشدن،
ویرایشگر
پیشفرض
پیام کامیت
به جای آن
استفاده
میشود.
showBranch.default
sideband.allowControlCharacters
بهطور
پیشفرض،
نویسههای
کنترلی که
از طریق sideband
تحویل داده
میشوند،
به استثنای
توالیهای
رنگی ANSI ماسک
(پوشانده)
میشوند.
این کار از
ارسال
توالیهای
فرار
بالقوه
ناخواسته ANSI
به ترمینال
جلوگیری
میکند. از
این تنظیم
پیکربندی
برای
بازنویسی
این رفتار
استفاده
کنید (مقدار
میتواند
فهرستی
جداشده با
کاما از
کلیدواژههای
زیر باشد):
color
توالیهای
رنگی ANSI، خطوط
جدید (line feeds) و
تبهای
افقی مجاز
باشند، اما
سایر
نویسههای
کنترلی
ماسک شوند.
این مقدار
پیشفرض
است.
cursor
توالیهای
کنترلی که
مکاننما
را جابجا
میکنند
مجاز باشند.
این حالت
بهطور
پیشفرض
غیرفعال
است.
erase
توالیهای
کنترلی که
نویسهها
را پاک
میکنند
مجاز باشند.
این حالت
بهطور
پیشفرض
غیرفعال
است.
false
تمام
نویسههای
کنترلی غیر
از خطوط
جدید و
تبهای
افقی ماسک
شوند.
true
ارسال
تمام
نویسههای
کنترلی به
ترمینال
مجاز باشد.
sideband.<url>.*
اعمال
گزینه sideband.* به
صورت
انتخابی
روی
نشانیهای
اینترنتی (URLs)
خاص. همان
منطق تطبیق URL
مانند
تنظیمات
http.<url>.*
اعمال
میشود.
sparse.expectFilesOutsideOfPatterns
معمولاً
در
دریافتهای
پراکنده (sparse
checkouts)،
فایلهایی
که با هیچ
الگوی
پراکندگی
مطابقت
ندارند با
یک بیت SKIP_WORKTREE در
ایندکس
علامتگذاری
شده و در
درخت کاری
وجود
ندارند. بر
این اساس،
گیت
معمولاً
بررسی
میکند که
آیا
فایلهای
دارای بیت
SKIP_WORKTREE بر خلاف
انتظار در
درخت کاری
وجود دارند
یا خیر. اگر
گیت موردی
پیدا کند،
آن مسیرها
را با پاک
کردن
بیتهای
مربوطه SKIP_WORKTREE
به عنوان
موجود
علامتگذاری
میکند. این
گزینه
میتواند
استفاده
شود تا به
گیت اعلام
کند چنین
فایلهای
موجود با
وجود رد شدن
(present-despite-skipped) مورد
انتظار
هستند و
بررسی برای
آنها
متوقف شود.
مقدار
پیشفرض false
است، که به
گیت اجازه
میدهد در
صورت
ناهماهنگ
شدن فهرست
فایلهای
ایندکس و
درخت کاری،
بهطور
خودکار
بازیابی
شود.
اگر در
ساختاری
هستید که یک
عامل خارجی
مسئولیت
حفظ
سازگاری
میان حضور
فایلهای
درخت کاری و
الگوهای
پراکندگی
را از دوش
گیت
برمیدارد،
این را روی
true تنظیم
کنید. به
عنوان
مثال، اگر
یک سیستم
فایل مجازی
آگاه از گیت
دارید که
سازوکار
قدرتمندی
برای
بهروز نگه
داشتن درخت
کاری و
الگوهای
پراکندگی
بر اساس
الگوهای
دسترسی
دارد.
صرفنظر
از این
تنظیم، گیت
فایلهای
موجود با
وجود رد شدن
را بررسی
نمیکند
مگر اینکه sparse
checkout فعال
باشد،
بنابراین
این گزینه
پیکربندی
هیچ اثری
ندارد مگر
اینکه core.sparseCheckout
برابر با true
باشد.
splitIndex.maxPercentChange
هنگامی
که قابلیت
ایندکس
تفکیکشده
(split index) استفاده
میشود،
این متغیر
درصد
ورودیهایی
را که
ایندکس
تفکیکشده
میتواند
در مقایسه
با تعداد کل
ورودیها
در هر دو
ایندکس
تفکیکشده
و ایندکس
مشترک (shared index)
پیش از
نوشته شدن
یک ایندکس
مشترک جدید
داشته
باشد، مشخص
میکند.
مقدار باید
بین 0 و 100 باشد.
اگر مقدار 0
باشد،
همیشه یک
ایندکس
مشترک جدید
نوشته
میشود؛
اگر 100 باشد،
هرگز یک
ایندکس
مشترک جدید
نوشته
نمیشود.
بهطور
پیشفرض،
مقدار 20 است،
بنابراین
اگر تعداد
مدخلها در
ایندکس
تفکیکشده
بیش از 20 درصد
کل تعداد
مدخلها
باشد، یک
ایندکس
مشترک جدید
نوشته
میشود. به
git-update-index(1) مراجعه
کنید.
splitIndex.sharedIndexExpire
هنگامی
که قابلیت
ایندکس
تفکیکشده
(split index) استفاده
میشود،
فایلهای
ایندکس
مشترکی که
از زمان
مشخصشده
توسط این
متغیر
تغییر
نیافتهاند،
هنگام
ایجاد یک
فایل
ایندکس
مشترک جدید
حذف خواهند
شد. مقدار "now"
تمام
مدخلها را
بلافاصله
منقضی
میکند و "never"
انقضا را
بهطور
کامل متوقف
میسازد.
مقدار
پیشفرض
"2.weeks.ago" است.
توجه داشته
باشید که یک
فایل
ایندکس
مشترک هر
بار که یک
فایل split-index جدید
بر اساس آن
ایجاد شده
یا از آن
خوانده شود
(به منظور
انقضا)
تغییریافته
در نظر
گرفته
میشود. به
git-update-index(1) مراجعه
کنید.
ssh.variant
بهطور
پیشفرض،
گیت
آرگومانهای
خط فرمان
مورد
استفاده را
بر اساس نام
پایه (basename)
دستور SSH
پیکربندیشده
(پیکربندیشده
با استفاده
از متغیر
محیطی
GIT_SSH یا
GIT_SSH_COMMAND یا
تنظیم
پیکربندی
core.sshCommand) تعیین
میکند. اگر
نام پایه
ناشناخته
باشد، گیت
با
فراخوانی
دستور SSH
پیکربندیشده
ابتدا با
گزینه
-G (چاپ
پیکربندی)
تلاش
میکند
پشتیبانی
از
گزینههای
OpenSSH را تشخیص
دهد و سپس از
گزینههای
OpenSSH (در صورت
موفقیتآمیز
بودن) یا
بدون هیچ
گزینهای
به جز
میزبان و
دستور
ریموت (در
صورت شکست)
استفاده
خواهد کرد.
متغیر
پیکربندی
ssh.variant
میتواند
برای
بازنویسی
این تشخیص
تنظیم شود.
مقادیر
معتبر
عبارتند از:
ssh (برای
استفاده از
گزینههای
OpenSSH)، plink، putty،
tortoiseplink، simple (بدون
هیچ
گزینهای
به جز
میزبان و
دستور
ریموت).
تشخیص
خودکار
پیشفرض را
میتوان
صریحاً با
استفاده از
مقدار auto
درخواست
کرد. هر
مقدار
دیگری به
عنوان ssh در
نظر گرفته
میشود. این
تنظیم
میتواند
از طریق
متغیر
محیطی GIT_SSH_VARIANT
نیز
بازنویسی
شود.
پارامترهای
خط فرمان
فعلی که
برای هر
نگارش
استفاده
میشوند به
شرح زیر
است:
•ssh - [-p port] [-4] [-6] [-o option]
[username@]host command
•simple - [username@]host command
•plink یا putty - [-P
port] [-4] [-6] [username@]host command
•tortoiseplink - [-P port] [-4] [-6] -batch
[username@]host command
به جز گونه
simple، احتمال
دارد که با
افزوده شدن
قابلیتهای
جدید به
گیت،
پارامترهای
خط فرمان
تغییر
کنند.
stash.index
اگر این
متغیر روی true
تنظیم شود،
git stash apply و
git stash
pop
بهگونهای
رفتار
خواهند کرد
که گویی
--index
داده شده
است. مقدار
پیشفرض false
است. به
توضیحات
موجود در
git-stash(1)
مراجعه
کنید.
این امر
همچنین بر
فراخوانیهای
git-stash(1) از طریق
--autostash از
دستوراتی
مانند git-merge(1)،
git-rebase(1) و git-pull(1)
تأثیر
میگذارد.
stash.showIncludeUntracked
اگر این
متغیر روی true
تنظیم شود،
دستور
git stash show
فایلهای
ردیابینشده
مربوط به یک
مدخل
ذخیرهگاه
(stash entry) را نشان
خواهد داد.
مقدار
پیشفرض false
است. به
توضیحات
دستور 'show' در
git-stash(1) مراجعه
کنید.
stash.showPatch
اگر این
متغیر روی true
تنظیم شود،
دستور
git stash show
بدون هیچ
گزینهای
مدخل
ذخیرهگاه
را در قالب
وصله نشان
میدهد.
مقدار
پیشفرض false
است. به
توضیحات
دستور 'show' در
git-stash(1) مراجعه
کنید.
stash.showStat
اگر این
متغیر روی true
تنظیم شود،
دستور
git stash show
بدون هیچ
گزینهای
یک diffstat از مدخل
ذخیرهگاه
را نشان
میدهد.
مقدار
پیشفرض true
است. به
توضیحات
دستور 'show' در
git-stash(1) مراجعه
کنید.
status.relativePaths
بهطور
پیشفرض،
git-status(1) مسیرها
را نسبی به
پوشه جاری
نشان
میدهد.
تنظیم این
متغیر روی
false
مسیرها را
نسبی به
ریشه مخزن
نشان
میدهد (این
رفتار
پیشفرض
گیت پیش از
نسخه
1.5.4 بود).
status.short
روی true
تنظیم کنید
تا
--short بهطور
پیشفرض در
git-status(1) فعال
شود. گزینه
--no-short
بر این
متغیر
اولویت
دارد.
status.branch
روی true
تنظیم کنید
تا
--branch بهطور
پیشفرض در
git-status(1) فعال
شود. گزینه
--no-branch
بر این
متغیر
اولویت
دارد.
status.aheadBehind
روی true
تنظیم کنید
تا
--ahead-behind و روی false
تنظیم کنید
تا
--no-ahead-behind
بهطور
پیشفرض در
git-status(1) برای
قالبهای
وضعیت غیر
پرسلین
فعال شوند.
مقدار
پیشفرض true
است.
status.compareBranches
فهرستی
جداشده با
فاصله از
مشخصکنندههای
مقایسه
شاخه برای
استفاده در
git-status(1). در حال
حاضر تنها
@{upstream} و
@{push}
پشتیبانی
میشوند.
آنها به
صورت
branch@{upstream} و
branch@{push} برای
شاخه جاری
تفسیر
میشوند.
در صورت
تنظیم
نشدن،
رفتار
پیشفرض
معادل @{upstream}
است، که در
برابر شاخه
ردیابی
بالادست (upstream)
پیکربندیشده
مقایسه
میکند.
مدخلها
به ترتیبی
که در
پیکربندی
ظاهر
میشوند
نمایش داده
میشوند.
مدخلهای
تکراری که
به همان
مرجع
حلوفصل
میشوند پس
از اولین
رخداد حذف
میشوند،
بنابراین
@{push} @{upstream} @{push}
حداکثر دو
مقایسه را
نشان
میدهد.
زمانی که @{upstream}
و @{push} به همان
شاخه
ردیابی
ریموت
منتهی
شوند، تنها
یک مقایسه
نشان داده
میشود.
مثال:
[status]
compareBranches = @{upstream} @{push}
این کار
مقایسهها
را هم در
برابر
شاخههای
ردیابی
بالادست و
هم ارسال
پیکربندیشده
برای شاخه
جاری نشان
میدهد.
status.displayCommentPrefix
اگر روی true
تنظیم شود،
git-status(1) پیشوند
یادداشت را
پیش از هر خط
خروجی درج
میکند
(شروع با
core.commentChar، یعنی
بهطور
پیشفرض #).
این رفتار
git-status(1) در Git
1.8.4 و
نسخههای
پیشین بود.
مقدار
پیشفرض false
است.
status.renameLimit
تعداد
فایلهایی
که هنگام
انجام
تشخیص
تغییر نام
در
git-status(1) و
git-commit(1)
در نظر
گرفته
میشوند.
مقدار
پیشفرض
برابر با
مقدار diff.renameLimit
است.
status.renames
اینکه
آیا و چگونه
گیت تغییر
نامها را
در
git-status(1) و
git-commit(1)
تشخیص دهد.
اگر روی "false"
تنظیم شود،
تشخیص
تغییر نام
غیرفعال
میشود. اگر
روی "true"
تنظیم شود،
تشخیص پایه
تغییر نام
فعال
میگردد.
اگر روی "copies"
یا "copy" تنظیم
شود، گیت
کپیها را
نیز تشخیص
خواهد داد.
مقدار
پیشفرض
برابر با
مقدار diff.renames
است.
status.showStash
اگر روی true
تنظیم شود،
git-status(1) تعداد
مدخلهای
ذخیرهشده
فعلی را
نمایش
میدهد.
مقدار
پیشفرض false
است.
status.showUntrackedFiles
بهطور
پیشفرض،
git-status(1) و
git-commit(1)
فایلهایی
را که در حال
حاضر توسط
گیت ردیابی
نمیشوند
نشان
میدهند.
پوشههایی
که تنها
حاوی
فایلهای
ردیابینشده
هستند،
تنها با نام
پوشه نمایش
داده
میشوند.
نمایش
فایلهای
ردیابینشده
به این معنی
است که گیت
باید تابع lstat()
را روی تمام
فایلها در
کل مخزن
فراخوانی
کند، که
ممکن است در
برخی
سیستمها
کند باشد.
بنابراین،
این متغیر
نحوه نمایش
فایلهای
ردیابینشده
توسط
دستورات را
کنترل
میکند.
مقادیر
ممکن
عبارتند از:
•no - هیچ
فایل
ردیابینشدهای
را نشان
ندهد.
•normal -
فایلها و
پوشههای
ردیابینشده
را نشان
دهد.
•all -
همچنین
فایلهای
تکی درون
پوشههای
ردیابینشده
را نشان
دهد.
اگر این
متغیر مشخص
نشود،
مقدار
پیشفرض آن
normal است. تمام
نگارشهای
معمول برای
مقدار بولی
true به عنوان
normal و false به
عنوان no در
نظر گرفته
میشوند.
این متغیر
میتواند
با گزینه
-u|--untracked-files در git-status(1) و
git-commit(1)
بازنویسی
شود.
status.submoduleSummary
مقدار
پیشفرض false
است. اگر این
متغیر روی
یک عدد غیر
صفر یا true
(معادل با
-1 یا
یک عدد
نامحدود)
تنظیم شود،
خلاصه
زیرماژول
فعال شده و
خلاصهای
از
کامیتها
برای
زیرماژولهای
تغییریافته
نشان داده
خواهد شد
(گزینه
--summary-limit در
git-submodule(1) را
ببینید).
لطفاً توجه
داشته
باشید که
خروجی
خلاصه برای
تمام
زیرماژولها
زمانی که
diff.ignoreSubmodules روی
all
تنظیم شده
باشد متوقف
میشود، یا
تنها برای
آن
زیرماژولهایی
که
submodule.<name>.ignore=all
باشند. تنها
استثنای
این قاعده
این است که status
و commit تغییرات
مرحلهبندیشده
(staged) زیرماژول
را نشان
خواهند داد.
برای
مشاهده
خلاصه برای
زیرماژولهای
نادیدهگرفتهشده
نیز
میتوانید
از گزینه خط
فرمان
--ignore-submodules=dirty
یا دستور
git submodule
summary استفاده
کنید، که
خروجی
مشابهی را
نشان
میدهد اما
به این
تنظیمات
توجهی
نمیکند.
submodule.<name>.url
نشانی URL
برای یک
زیرماژول.
این متغیر
از طریق
git submodule init
از فایل
.gitmodules در
پیکربندی
گیت کپی
میشود.
کاربر
میتواند URL
پیکربندیشده
را پیش از
دریافت
زیرماژول
از طریق
git submodule update
تغییر دهد.
اگر نه submodule.<name>
.active
و نه submodule.active
تنظیم نشده
باشند،
وجود این
متغیر به
عنوان یک
راهحل
جایگزین (fallback)
استفاده
میشود تا
نشان دهد
آیا
زیرماژول
مورد توجه
دستورات
گیت هست یا
خیر. برای
جزئیات به
git-submodule(1) و
gitmodules(5)
مراجعه
کنید.
submodule.<name>.update
روشی که
زیرماژول
توسط
git submodule update
بهروزرسانی
میشود، که
تنها دستور
تحت تأثیر
است و سایر
دستورات
مانند
git checkout
--recurse-submodules تحت
تأثیر قرار
نمیگیرند.
این متغیر
به دلایل
تاریخی
وجود دارد،
زمانی که
git submodule
تنها دستور
برای تعامل
با
زیرماژولها
بود؛
تنظیماتی
مانند
submodule.active و
pull.rebase خاصتر
هستند. این
مقدار توسط
git submodule init از
فایل
gitmodules(5) پر
میشود.
توضیحات
دستور
update در
git-submodule(1) را
ببینید.
submodule.<name>.branch
نام شاخه
راه دور
برای یک
زیرماژول،
که توسط
git submodule
update -emote
استفاده
میشود. این
گزینه را
برای
بازنویسی
مقدار
یافتشده
در فایل
.gitmodules
تنظیم کنید.
برای
جزئیات به
git-submodule(1) و
gitmodules(5)
مراجعه
کنید.
submodule.<name>.fetchRecurseSubmodules
این
گزینه
میتواند
برای کنترل
دریافت
بازگشتی
این
زیرماژول
استفاده
شود. با
استفاده از
گزینه خط
فرمان --[no-]recurse-submodules
در «git fetch» و «git pull»
میتوان آن
را لغو و
بازنویسی
کرد. این
تنظیم،
مقداری را
که در فایل
gitmodules(5) قرار
دارد
بازنویسی
میکند.
submodule.<name>.ignore
مشخص
میکند تحت
چه شرایطی «git
status» و
خانواده diff یک
زیرماژول
را
تغییریافته
نشان
میدهند.
وقتی روی «all»
تنظیم شود،
هرگز
زیرماژول
را
تغییریافته
در نظر
نخواهد
گرفت. با این
حال
میتوان با
استفاده از
گزینه -rce آن
را استیج
کرد که در
این صورت در
خروجی status
ظاهر خواهد
شد. هنگامی
که روی «dirty»
تنظیم شود،
تمام
تغییرات
درخت کاری
زیرماژول
را نادیده
میگیرد و
تنها
تفاوتهای
میان HEAD
زیرماژول و
کامیت
ثبتشده در
پروژه والد
را مد نظر
قرار
میدهد.
مقدار «untracked»
علاوه بر
این اجازه
میدهد
زیرماژولهایی
که
فایلهای
ردیابیشدهٔ
تغییریافته
در درخت
کاری خود
دارند نشان
داده شوند.
وقتی روی «none»
(پیشفرض)
تنظیم شود،
زیرماژولها
را حتی اگر
فایلهای
ردیابینشده
در درخت
کاری خود
داشته
باشند نیز
تغییریافته
نشان
میدهد. این
تنظیم هر
تنظیمی را
که در .gitmodules برای
این
زیرماژول
انجام شده
باشد
بازنویسی
میکند؛ هر
دو تنظیم را
میتوان در
خط فرمان با
استفاده از
گزینه «-ignore-submodules»
بازنویسی
کرد.
دستورات git submodule
تحت تأثیر
این تنظیم
قرار
نمیگیرند.
submodule.<name>.active
مقدار
بولی که
مشخص
میکند آیا
زیرماژول
مورد توجه
دستورات
گیت هست یا
خیر. این
گزینه
پیکربندی
بر گزینه
پیکربندی
submodule.active تقدم
دارد. برای
جزئیات به
gitsubmodules(7) مراجعه
کنید.
submodule.<name>.gitdir
این
گزینه مسیر
gitdir را برای
زیرماژول <name>
تنظیم
میکند. این
پیکربندی
در صورتی
رعایت
میشود که
extensions.submodulePathConfig فعال
باشد، در
غیر این
صورت هیچ
اثری ندارد.
هنگام فعال
بودن، این
پیکربندی
به تنها
منبع حقیقت
برای
مسیرهای gitdir
زیرماژول
تبدیل
میشود و در
صورت مفقود
بودن، گیت
خطا صادر
میکند.
برای
جزئیات به
git-config(1) مراجعه
کنید.
submodule.active
یک فیلد
تکرارشونده
شامل الگوی
مسیر (pathspec) که
برای تطبیق
با مسیر یک
زیرماژول
استفاده
میشود تا
مشخص کند
آیا
زیرماژول
مورد توجه
دستورات
گیت هست یا
خیر. برای
جزئیات به
gitsubmodules(7) مراجعه
کنید.
submodule.recurse
یک مقدار
بولی که
مشخص
میکند آیا
دستورات
باید گزینه
-ecurse-submodules را به
صورت
پیشفرض
فعال کنند
یا خیر.
پیشفرض false
است.
هنگامی که
روی true تنظیم
شود،
میتوان آن
را از طریق
گزینه -0-recurse-submodules
غیرفعال
کرد. توجه
داشته
باشید که
برخی از
دستورات
گیت که فاقد
این گزینه
هستند ممکن
است برخی از
دستورات
فوق را که
تحت تأثیر
submodule.recurse هستند
فراخوانی
کنند؛ برای
مثال git remote update
دستور git fetch
را
فراخوانی
میکند اما
گزینه -0-recurse-submodules
ندارد. برای
این
دستورات،
یک راهکار
موقت تغییر
مقدار
پیکربندی
با استفاده
از git -c submodule.recurse=0
است.
فهرست زیر
دستوراتی
را نشان
میدهد که
-ecurse-submodules را
میپذیرند
و اینکه آیا
توسط این
تنظیم
پشتیبانی
میشوند یا
خیر.
•دستورات
checkout، fetch، grep،
pull، push، read-tree،
reset، restore و switch
همیشه
پشتیبانی
میشوند.
•دستورات
clone و ls-files
پشتیبانی
نمیشوند.
•دستور
branch تنها در
صورتی
پشتیبانی
میشود که
submodule.propagateBranches فعال
باشد.
submodule.propagateBranches
[آزمایشی]
یک مقدار
بولی که
پشتیبانی
از
شاخهبندی
را هنگام
استفاده از
-ecurse-submodules یا submodule.recurse=true
فعال
میکند.
فعال کردن
این گزینه
به برخی
دستورات
اجازه
میدهد تا
-ecurse-submodules را
بپذیرند، و
برخی
دستورات که
از قبل -ecurse-submodules
را
میپذیرند
اکنون
شاخهها را
نیز در نظر
خواهند
گرفت.
پیشفرض false
است.
submodule.fetchJobs
مشخص
میکند چه
تعداد
زیرماژول
به طور
همزمان
دریافت/کلون
شوند. یک عدد
صحیح مثبت
اجازه
میدهد تا
آن تعداد
زیرماژول
به صورت
موازی
دریافت
شوند. مقدار 0
یک پیشفرض
معقول
تعیین
میکند. در
صورت عدم
تنظیم، به
طور
پیشفرض 1
است.
submodule.alternateLocation
مشخص
میکند
زیرماژولها
هنگام کلون
شدن چگونه alternates
(منابع
جایگزین
اشیاء) را به
دست
میآورند.
مقادیر
مجاز
عبارتند از
no و superproject. به
طور
پیشفرض no
در نظر
گرفته
میشود، که
هیچ ارجاعی
اضافه
نمیکند.
هنگامی که
مقدار روی
superproject تنظیم
شود،
زیرماژولی
که قرار است
کلون شود
مکان alternates خود
را نسبت به alternate
پروژه والد
محاسبه
میکند.
submodule.alternateErrorStrategy
مشخص
میکند با
خطاهای
مربوط به alternates
برای یک
زیرماژول
که از طریق
submodule.alternateLocation
محاسبه شده
است چگونه
برخورد شود.
مقادیر
مجاز
عبارتند از
ignore، info و die.
مقدار
پیشفرض die
است. توجه
داشته
باشید که
اگر روی ignore
یا info تنظیم
شود، و در alternate
محاسبهشده
خطایی رخ
دهد،
عملیات
کلون طوری
ادامه
مییابد که
گویی هیچ
alternateای مشخص
نشده است.
tag.forceSignAnnotated
یک مقدار
بولی برای
مشخص کردن
اینکه آیا
برچسبهای
حاشیهنویسیشده
(annotated tags)
ایجادشده
باید دارای
امضای GPG
باشند یا
خیر. اگر -nnotate
در خط فرمان
مشخص شده
باشد، بر
این گزینه
تقدم دارد.
tag.sort
این
متغیر
ترتیب
مرتبسازی
برچسبها
را هنگام
نمایش توسط
git-tag(1) کنترل
میکند.
بدون ارائه
گزینه
-rt=<value>،
مقدار این
متغیر به
عنوان
پیشفرض
استفاده
خواهد شد.
tag.gpgSign
یک مقدار
بولی برای
مشخص کردن
اینکه آیا
همه
برچسبها
باید با GPG
امضا شوند
یا خیر.
استفاده از
این گزینه
هنگام اجرا
در یک
اسکریپت
خودکار
میتواند
منجر به
امضا شدن
تعداد
زیادی
برچسب شود.
بنابراین
استفاده از
یک agent مناسب
است تا از
تایپ
چندباره
عبارت عبور GPG
خودداری
شود. توجه
داشته
باشید که
این گزینه
بر رفتار
امضای
برچسب که
توسط
گزینههای
-u <keyid> یا -
فعال شده
است تأثیری
ندارد.
tar.umask
این
متغیر
میتواند
برای محدود
کردن
بیتهای
مجوز
ورودیهای
آرشیو tar
استفاده
شود. مقدار
پیشفرض 0002
است که بیت
نوشتن
همگانی (world write bit)
را خاموش
میکند.
مقدار ویژه
«user» نشان
میدهد که umask
کاربر
آرشیوکننده
در عوض
استفاده
خواهد شد. به
umask(2) و
git-archive(1)
مراجعه
کنید.
تنظیمات
پیکربندی Trace2
فقط از
فایلهای
پیکربندی
سیستم و
سراسری (global)
خوانده
میشوند؛
فایلهای
پیکربندی
محلی مخزن و
درخت کاری (worktree)
و
آرگومانهای
خط فرمان -c
نادیده
گرفته
میشوند.
trace2.normalTarget
این
متغیر مقصد
هدف عادی (normal target)
را کنترل
میکند.
ممکن است
توسط متغیر
محیطی GIT_TRACE2
بازنویسی
شود. جدول
زیر مقادیر
ممکن را
نشان
میدهد.
trace2.perfTarget
این
متغیر مقصد
هدف کارایی
(performance target) را کنترل
میکند.
ممکن است
توسط متغیر
محیطی GIT_TRACE2_PERF
بازنویسی
شود. جدول
زیر مقادیر
ممکن را
نشان
میدهد.
trace2.eventTarget
این
متغیر مقصد
هدف رویداد
(event target) را کنترل
میکند.
ممکن است
توسط متغیر
محیطی
GIT_TRACE2_EVENT
بازنویسی
شود. جدول
زیر مقادیر
ممکن را
نشان
میدهد.
•0 یا false -
هدف را
غیرفعال
میکند.
•1 یا true -
در STDERR
مینویسد.
•[2-9] - در
توصیفگر
فایل (file descriptor) که
از قبل باز
شده
مینویسد.
•<absolute-pathname> -
در حالت
الحاق (append mode)
درون فایل
مینویسد.
اگر هدف از
قبل موجود
باشد و یک
دایرکتوری
باشد،
ردگیریها
در
فایلهایی
(یک فایل
برای هر
فرایند) زیر
دایرکتوری
دادهشده
نوشته
میشوند.
•af_unix:[<socket-type>:]<absolute-pathname>
- در یک Unix Domain Socket
مینویسد
(روی
پلتفرمهایی
که از آن
پشتیبانی
میکنند).
نوع سوکت
میتواند stream
یا dgram باشد؛
در صورت
حذف، گیت هر
دو را
امتحان
خواهد کرد.
trace2.normalBrief
بولی.
هنگامی که true
باشد،
فیلدهای time،
filename و line از
خروجی عادی
حذف
میشوند.
ممکن است
توسط متغیر
محیطی GIT_TRACE2_BRIEF
بازنویسی
شود.
پیشفرض false
است.
trace2.perfBrief
بولی.
هنگامی که true
باشد،
فیلدهای time،
filename و line از
خروجی PERF حذف
میشوند.
ممکن است
توسط متغیر
محیطی GIT_TRACE2_PERF_BRIEF
بازنویسی
شود.
پیشفرض false
است.
trace2.eventBrief
بولی.
هنگامی که true
باشد،
فیلدهای time،
filename و line از
خروجی
رویداد (event)
حذف
میشوند.
ممکن است
توسط متغیر
محیطی GIT_TRACE2_EVENT_BRIEF
بازنویسی
شود.
پیشفرض false
است.
trace2.eventNesting
عدد
صحیح. عمق
مورد نظر
ناحیههای
تودرتو را
در خروجی
رویداد
مشخص
میکند.
ناحیههای
عمیقتر از
این مقدار
حذف خواهند
شد. ممکن است
توسط متغیر
محیطی GIT_TRACE2_EVENT_NESTING
بازنویسی
شود.
پیشفرض 2
است.
trace2.configParams
فهرستی
جداشده با
کاما از
الگوهای
تنظیمات
پیکربندی
«مهم» که
باید در
خروجی trace2 ثبت
شوند. برای
مثال، core.*,remote.*.url
باعث
میشود
خروجی trace2
حاوی
رویدادهایی
باشد که هر
ریموت
پیکربندیشده
را فهرست
میکند.
ممکن است
توسط متغیر
محیطی GIT_TRACE2_CONFIG_PARAMS
بازنویسی
شود. به طور
پیشفرض
تنظیم نشده
است.
trace2.envVars
فهرستی
جداشده با
کاما از
متغیرهای
محیطی
«مهم» که
باید در
خروجی trace2 ثبت
شوند. برای
مثال، GIT_HTTP_USER_AGENT,GIT_CONFIG
باعث
میشود
خروجی trace2
حاوی
رویدادهایی
باشد که
بازنویسیهای
عامل کاربر HTTP
و مکان فایل
پیکربندی
گیت را
فهرست
میکند (به
فرض اینکه
تنظیمی
صورت گرفته
باشد). ممکن
است توسط
متغیر
محیطی GIT_TRACE2_ENV_VARS
بازنویسی
شود. به طور
پیشفرض
تنظیم نشده
است.
trace2.destinationDebug
بولی.
هنگامی که true
باشد، گیت
در صورتی که
مقصد هدف
ردگیری
نتواند
برای نوشتن
باز شود
پیامهای
خطا را چاپ
خواهد کرد.
به طور
پیشفرض،
این خطاها
نادیده
گرفته
میشوند و
ردگیری
بدون سر و
صدا
غیرفعال
میشود.
ممکن است
توسط متغیر
محیطی GIT_TRACE2_DST_DEBUG
بازنویسی
شود.
trace2.maxFiles
عدد
صحیح. هنگام
نوشتن
فایلهای
ردگیری در
یک
دایرکتوری
هدف، اگر
انجام این
کار از این
تعداد فایل
فراتر رود،
ردگیریهای
بیشتری
ننویسید. در
عوض، یک
فایل
نشانگر (sentinel file)
بنویسید که
از ادامه
ردگیری در
این
دایرکتوری
جلوگیری
کند.
پیشفرض 0
است که این
بررسی را
غیرفعال
میکند.
trailer.separators
این
گزینه مشخص
میکند چه
نویسههایی
به عنوان
جداکننده
پینوشت (trailer separator)
شناخته
شوند. به طور
پیشفرض
تنها
: به
عنوان
جداکننده
پینوشت
شناخته
میشود، با
این استثنا
که
= برای
سازگاری با
سایر
دستورات
گیت همیشه
در خط فرمان
پذیرفته
میشود.
اولین
نویسه
ارائهشده
توسط این
گزینه،
نویسه
پیشفرضی
خواهد بود
که در صورت
عدم تعیین
جداکننده
دیگر در
پیکربندی
برای این
پینوشت
استفاده
میشود.
برای
مثال، اگر
مقدار این
گزینه %=$
باشد،
آنگاه تنها
خطوطی که از
قالب <key><sep><value>
استفاده
میکنند که
در آن <sep>
شامل %، = یا
$ و سپس
فاصله
باشد، به
عنوان
پینوشت در
نظر گرفته
خواهند شد. و
% جداکننده
پیشفرض
مورد
استفاده
خواهد بود،
بنابراین
به طور
پیشفرض
پینوشتها
به این صورت
ظاهر
میشوند:
<key>% <value> (یک
علامت درصد
و یک فاصله
بین کلید و
مقدار قرار
خواهد
گرفت).
trailer.where
این
گزینه مشخص
میکند
پینوشت
جدید در کجا
اضافه
خواهد شد.
این مقدار
میتواند end
(که پیشفرض
است)، start، after
یا before باشد.
اگر end
باشد، هر
پینوشت
جدید در
انتهای
پینوشتهای
موجود ظاهر
میشود.
اگر start
باشد، هر
پینوشت
جدید به جای
انتها در
ابتدای
پینوشتهای
موجود ظاهر
خواهد شد.
اگر after
باشد، هر
پینوشت
جدید
دقیقاً پس
از آخرین
پینوشت با
همان <key>
ظاهر
میشود.
اگر before
باشد، هر
پینوشت
جدید
دقیقاً قبل
از اولین
پینوشت با
همان <key>
ظاهر
میشود.
trailer.ifexists
این
گزینه
امکان
انتخاب
عملی را
فراهم
میکند که
در صورت
وجود حداقل
یک پینوشت
با همان
<key>
در ورودی
انجام
خواهد شد.
مقادیر
معتبر برای
این گزینه
عبارتند از:
addIfDifferentNeighbor (این
مقدار
پیشفرض
است)، addIfDifferent،
add، replace یا doNothing.
با addIfDifferentNeighbor،
یک پینوشت
جدید تنها
در صورتی
اضافه
میشود که
هیچ
پینوشتی
با همان جفت
(<key>, <value>) در خط
بالاتر یا
پایینتر
از مکانی که
پینوشت
جدید اضافه
میشود
نباشد.
با addIfDifferent، یک
پینوشت
جدید تنها
در صورتی
اضافه
خواهد شد که
هیچ
پینوشتی
با همان جفت
(<key>, <value>) از
قبل در
ورودی وجود
نداشته
باشد.
با add، یک
پینوشت
جدید اضافه
خواهد شد،
حتی اگر
پینوشتهایی
با همان جفت
(<key>, <value>) از
قبل در
ورودی وجود
داشته
باشند.
با replace،
پینوشت
موجود با
همان <key> حذف
شده و
پینوشت
جدید اضافه
خواهد شد.
پینوشت
حذفشده
نزدیکترین
پینوشت (با
همان <key>) به
مکانی
خواهد بود
که پینوشت
جدید اضافه
میشود.
با doNothing، هیچ
کاری انجام
نخواهد شد؛
یعنی اگر
پینوشتی
با همان <key>
در ورودی
وجود داشته
باشد هیچ
پینوشت
جدیدی
اضافه
نمیشود.
trailer.ifmissing
این
گزینه
امکان
انتخاب
عملی را
فراهم
میکند که
در صورت عدم
وجود
هرگونه
پینوشت با
همان
<key> در
ورودی
انجام
خواهد شد.
مقادیر
معتبر برای
این گزینه
عبارتند از:
add (پیشفرض)
و doNothing.
با add، یک
پینوشت
جدید اضافه
خواهد شد.
با doNothing، هیچ
کاری انجام
نخواهد شد.
trailer.<key-alias>.key
یک
<key-alias>
را برای
<key>
تعریف
میکند.
مقدار
<key-alias>
باید یک
پیشوند
(بدون
حساسیت به
بزرگی و
کوچکی حروف)
از
<key> باشد.
برای مثال،
در
git config trailer.ack.key
«Acked-by»، مقدار
Acked-by همان
<key>
است و
ack همان
<key-alias>
میباشد.
این
پیکربندی
امکان
فراخوانی
کوتاهتر
-railer «ack:
...» را
در خط فرمان
با استفاده
از
<key-alias> «ack» به
جای عبارت
طولانیتر
-railer «Acked-by:
...»
فراهم
میکند.
در انتهای
<key>، یک
جداکننده و
سپس چند
نویسه
فاصله
میتواند
قرار گیرد.
به طور
پیشفرض
تنها
جداکننده
معتبر :
است، اما
میتوان با
استفاده از
متغیر
پیکربندی
trailer.separators آن را
تغییر داد.
اگر در
کلید
جداکنندهای
وجود داشته
باشد،
هنگام
افزودن
پینوشت،
جداکننده
پیشفرض را
بازنویسی
میکند.
trailer.<key-alias>.where
این
گزینه همان
مقادیر
متغیر
پیکربندی
trailer.where را
میپذیرد و
آنچه را که
توسط آن
گزینه برای
پینوشتهای
دارای <key-alias>
مشخصشده
تعیین شده
است
بازنویسی
میکند.
trailer.<key-alias>.ifexists
این
گزینه همان
مقادیر
متغیر
پیکربندی
trailer.ifexists را
میپذیرد و
آنچه را که
توسط آن
گزینه برای
پینوشتهای
دارای <key-alias>
مشخصشده
تعیین شده
است
بازنویسی
میکند.
trailer.<key-alias>.ifmissing
این
گزینه همان
مقادیر
متغیر
پیکربندی
trailer.ifmissing را
میپذیرد و
آنچه را که
توسط آن
گزینه برای
پینوشتهای
دارای <key-alias>
مشخصشده
تعیین شده
است
بازنویسی
میکند.
trailer.<key-alias>.command
منسوخ
شده به نفع
trailer.<key-alias>.cmd. این
گزینه به
همان شیوه
trailer.<key-alias>.cmd
رفتار
میکند، با
این استثنا
که هیچ چیز
را به عنوان
آرگومان به
دستور
مشخصشده
ارسال
نمیکند. در
عوض اولین
وقوع
زیررشته
$ARG
با
<value> که
قرار بود به
عنوان
آرگومان
ارسال شود
جایگزین
میشود.
توجه
داشته
باشید که $ARG
در دستور
کاربر فقط
یک بار
جایگزین
میشود و
روش اولیه
جایگزینی $ARG
امن نیست.
هنگامی که
هر دو گزینه
trailer.<key-alias>.cmd و
trailer.<key-alias>.command
برای یک <key-alias>
داده شوند،
trailer.<key-alias>.cmd
استفاده
میشود و
trailer.<key-alias>.command
نادیده
گرفته
خواهد شد.
trailer.<key-alias>.cmd
این
گزینه
میتواند
برای تعیین
یک دستور
پوسته
استفاده
شود که یک
بار برای
افزودن
خودکار یک
پینوشت با
<key-alias>
مشخصشده
فراخوانی
میشود، و
سپس هر بار
که یک
آرگومان
-railer
<key-alias>=<value>
برای اصلاح
<value>
پینوشتی
که این
گزینه
تولید
میکند
مشخص شود،
فراخوانی
خواهد شد.
هنگامی که
دستور
مشخصشده
برای اولین
بار جهت
افزودن یک
پینوشت با
<key-alias>
مشخصشده
فراخوانی
میشود،
رفتار به
گونهای
است که گویی
یک آرگومان
ویژه -railer
<key-alias>=<value> در
ابتدای
git-interpret-trailers(1) اضافه
شده باشد،
که در آن <value>
خروجی
استاندارد
دستور پس از
حذف
فاصلههای
خالی ابتدا
و انتها در
نظر گرفته
میشود.
اگر برخی
آرگومانهای
-railer <key-alias>=<value>
نیز در خط
فرمان
ارسال
شوند،
دستور
مجدداً
برای هر یک
از این
آرگومانها
با همان <key-alias>
یک بار
فراخوانی
میشود. و
بخش <value> این
آرگومانها،
در صورت
وجود، به
عنوان
اولین
آرگومان به
دستور
ارسال
خواهد شد. به
این ترتیب
دستور
میتواند
یک <value>
تولید کند
که از <value>
ارسالشده
در آرگومان
-railer <key-alias>=<value>
محاسبه شده
است.
transfer.credentialsInUrl
یک نشانی
URL
پیکربندیشده
میتواند
شامل
اعتبارنامههای
متنی ساده (plaintext
credentials) به شکل
<protocol>://<user>:<password>@<domain>/<path>
باشد. ممکن
است
بخواهید
درباره
استفاده از
چنین
پیکربندی
هشدار دهید
یا آن را
ممنوع کنید
(به نفع
استفاده از
git-credential(1)). این
گزینه در
git-clone(1)،
git-fetch(1)،
git-push(1)
و هرگونه
استفاده
مستقیم
دیگر از URL
پیکربندیشده
اعمال
خواهد شد.
توجه
داشته
باشید که
این ویژگی
در حال حاضر
محدود به
تشخیص
اعتبارنامهها
در
پیکربندی
remote.<name>.url
است؛ و
اعتبارنامهها
را در
پیکربندی
remote.<name>.pushurl
تشخیص
نخواهد
داد.
شاید
بخواهید
این ویژگی
را برای
جلوگیری از
افشای سهوی
اعتبارنامهها
فعال کنید،
برای مثال
به این
دلایل:
•سیستمعامل
یا سیستمی
که گیت را
روی آن اجرا
میکنید
ممکن است
راهی برای
پیکربندی
دسترسیهای
فایل
پیکربندی
که نام
کاربری و/یا
گذرواژه در
آن ذخیره
شده است
ارائه ندهد
یا به شما
اجازه این
کار را
ندهد.
•حتی اگر
این کار را
انجام دهد،
ذخیره چنین
دادههایی
به صورت
ساکن («at rest»)
ممکن است
شما را از
روشهای
دیگر در
معرض خطر
قرار دهد،
برای مثال
یک فرآیند
پشتیبانگیری
ممکن است
دادهها را
به سیستم
دیگری کپی
کند.
•برنامههای
گیت نشانی URL
کامل را به
عنوان
آرگومان در
خط فرمان به
یکدیگر
ارسال
میکنند،
به این معنی
که
اعتبارنامهها
در
سیستمهایی
که به سایر
کاربران
غیرممتاز
اجازه
میدهند
فهرست کامل
فرآیندهای
دیگران را
ببینند،
افشا خواهد
شد. در
لینوکس
تنظیم «hidepid»
که در procfs(5)
مستند شده
است امکان
پیکربندی
این رفتار
را فراهم
میکند.
اگر چنین
نگرانیهایی
در مورد شما
صدق
نمیکند،
احتمالاً
نیازی نیست
نگران
افشای
اعتبارنامهها
به دلیل
ذخیره
دادههای
حساس در
فایلهای
پیکربندی
گیت باشید.
اگر
میخواهید
از این
ویژگی
استفاده
کنید، transfer.credentialsInUrl
را روی یکی
از این
مقادیر
تنظیم
کنید:
•allow
(پیشفرض):
گیت بدون
هشدار به
فعالیت خود
ادامه
میدهد.
•warn: گیت
هنگام
تجزیه یک URL با
اعتبارنامه
متنی ساده،
یک پیام
هشدار در stderr
مینویسد.
•die: گیت
هنگام
تجزیه یک URL با
اعتبارنامه
متنی ساده،
یک پیام
شکست در stderr
مینویسد.
transfer.fsckObjects
هنگامی
که
fetch.fsckObjects یا
receive.fsckObjects تنظیم
نشده
باشند،
مقدار این
متغیر در
عوض
استفاده
میشود.
پیشفرض false
است.
هنگام
تنظیم،
عملیات fetch یا
receive در صورت
وجود شیء
معیوب یا
پیوند به یک
شیء
ناموجود
متوقف
میشود.
علاوه بر
این، مسائل
مختلف
دیگری نیز
بررسی
میشوند،
از جمله
مشکلات
موروثی (به
fsck.<msg-id>
مراجعه
کنید)، و
مسائل
امنیتی
احتمالی
مانند وجود
دایرکتوری
.GIT یا یک
فایل مخرب
.gitmodules (برای
جزئیات به
یادداشتهای
انتشار
نسخههای v2.2.1
و v2.17.1 مراجعه
کنید). سایر
بررسیهای
سلامت و
امنیت ممکن
است در
انتشارهای
آینده
اضافه
شوند.
در سمت
دریافتکننده،
ناموفق
بودن fsckObjects
باعث
غیرقابلدسترس
شدن آن
اشیاء
میشود،
بخش «QUARANTINE ENVIRONMENT»
را در git-receive-pack(1)
ببینید. در
سمت fetch،
اشیاء
معیوب در
عوض به صورت
بدون ارجاع
در مخزن
باقی
میمانند.
با توجه به
ماهیت
غیرقرنطینهای
پیادهسازی
fetch.fsckObjects،
نمیتوان
مانند receive.fsckObjects
اطمینان
داشت که
مخزن اشیاء
(object store) را تمیز
باقی
میگذارد.
از آنجا که
اشیاء
هنگام باز
شدن
بستهها در
مخزن اشیاء
نوشته
میشوند،
مواردی
وجود دارد
که در آن
اشیاء مخرب
حتی با وجود
شکست «fetch»
وارد سیستم
میشوند، و
سپس یک «fetch»
بعدی موفق
میشود
زیرا فقط
اشیاء جدید
ورودی
بررسی
میشوند،
نه آنهایی
که قبلاً در
مخزن اشیاء
نوشته
شدهاند.
نباید به
این تفاوت
در رفتار
اتکا کرد. در
آینده،
ممکن است
چنین
اشیائی
برای «fetch»
نیز
قرنطینه
شوند.
در حال
حاضر،
افراد
بسیار
محتاط در
صورتی که
محافظتی
مشابه «push»
بخواهند
باید راهی
برای
شبیهسازی
محیط
قرنطینه
بیابند. به
عنوان
مثال، در
مورد یک
آینه (mirror)
داخلی،
آینهسازی
را در دو
مرحله
انجام دهید:
یکی برای
دریافت
اشیاء
غیرقابلاعتماد،
و سپس یک «push»
دوم (که از
قرنطینه
استفاده
خواهد کرد)
به یک مخزن
داخلی
دیگر، و از
کلاینتهای
داخلی
بخواهید از
این مخزن
pushشده
استفاده
کنند؛ یا
دریافتهای
داخلی را
متوقف کنید
و تنها
زمانی به
آنها
اجازه دهید
که یک «fsck»
کامل اجرا
شده باشد (و
در این
فاصله هیچ fetch
جدیدی رخ
نداده
باشد).
transfer.hideRefs
رشته(هایی)
که
receive-pack و
upload-pack
برای
تصمیمگیری
در مورد
اینکه چه
مراجعی (refs) از
اعلانهای
اولیه
آنها حذف
شوند
استفاده
میکنند.
برای مشخص
کردن چندین
رشته
پیشوندی از
بیش از یک
تعریف
استفاده
کنید. مرجعی
که زیر
سلسلهمراتبهای
فهرستشده
در مقدار
این متغیر
باشد
مستثنی شده
و هنگام
پاسخ دادن
به
git push یا
git
fetch مخفی
میشود.
برای
نسخههای
ویژهبرنامه
این
پیکربندی
به
receive.hideRefs و
uploadpack.hideRefs
مراجعه
کنید.
همچنین
میتوانید
یک علامت ! در
ابتدای نام
مرجع قرار
دهید تا
ورودی را
نفی کنید و
صراحتاً آن
را در معرض
دید قرار
دهید، حتی
اگر یک
ورودی قبلی
آن را به
عنوان مخفی
علامتگذاری
کرده باشد.
اگر چندین
مقدار hideRefs
دارید،
ورودیهای
بعدی
ورودیهای
قبلی را
بازنویسی
میکنند (و
ورودیهای
موجود در
فایلهای
پیکربندی
خاصتر،
ورودیهای
با عمومیت
کمتر را
بازنویسی
میکنند).
اگر یک
فضای نام (namespace)
در حال
استفاده
باشد،
پیشوند
فضای نام
قبل از
تطبیق با
الگوهای
transfer.hiderefs از هر
مرجع حذف
میشود. به
منظور
تطبیق
مراجع قبل
از حذف
پیشوند، یک
^ در ابتدای
نام مرجع
اضافه کنید.
اگر ! و ^ را
ترکیب
میکنید،
ابتدا باید !
مشخص شود.
برای
مثال، اگر
refs/heads/master در transfer.hideRefs
مشخص شده
باشد و فضای
نام فعلی foo
باشد،
آنگاه
refs/namespaces/foo/refs/heads/master از
اعلانها
حذف میشود.
اگر uploadpack.allowRefInWant
تنظیم شده
باشد، upload-pack در
دستور fetch
تحت پروتکل
نسخه ۲ با want-ref
refs/heads/master طوری
برخورد
میکند که
گویی
refs/namespaces/foo/refs/heads/master
وجود
نداشته است.
از طرف
دیگر، receive-pack
همچنان
شناسه شیئی
را که مرجع
به آن اشاره
میکند
بدون ذکر
نام آن
اعلان
میکند (یک
خط
اصطلاحاً
«.have»).
حتی اگر
مراجع را
مخفی کنید،
کلاینت
ممکن است
همچنان
بتواند
اشیاء هدف
را از طریق
تکنیکهای
شرح داده
شده در بخش
«SECURITY» صفحه
راهنمای
gitnamespaces(7)
برباید؛
بهتر است
دادههای
خصوصی در یک
مخزن
جداگانه
نگهداری
شوند.
transfer.unpackLimit
هنگامی
که fetch.unpackLimit یا
receive.unpackLimit تنظیم
نشده
باشند،
مقدار این
متغیر در
عوض
استفاده
میشود.
مقدار
پیشفرض 100
است.
transfer.advertiseSID
بولی.
هنگامی که true
باشد،
فرایندهای
کلاینت و
سرور
شناسههای
یکتای نشست
(session IDs) خود را به
همتای راه
دور خود
اعلان
میکنند.
پیشفرض false
است.
transfer.bundleURI
هنگامی
که true باشد،
دستورات
محلی git clone
اطلاعات
بسته (bundle) را از
سرور راه
دور (در صورت
اعلان)
درخواست
کرده و قبل
از ادامه
شبیهسازی
از طریق
پروتکل
گیت،
بستهها را
بارگیری
میکنند.
پیشفرض false
است.
transfer.advertiseObjectInfo
هنگامی
که true باشد،
قابلیت object-info
توسط
سرورها
اعلان
میشود.
پیشفرض false
است.
uploadarchive.allowUnreachable
اگر true
باشد، به
کلاینتها
اجازه
میدهد از
git
archive -emote برای
درخواست هر
درختی، چه
از نوک
مراجع قابل
دسترس باشد
و چه نباشد،
استفاده
کنند. برای
جزئیات
بیشتر به
توضیحات
بخش «SECURITY» در
git-upload-archive(1) مراجعه
کنید.
پیشفرض
false
است.
uploadpack.hideRefs
این
متغیر
مشابه transfer.hideRefs
است، اما
تنها بر upload-pack
اعمال
میشود (و
بنابراین
تنها بر fetchها
تأثیر
میگذارد،
نه pushها). تلاش
برای fetch کردن
یک مرجع
مخفی توسط git
fetch شکست
خواهد خورد.
همچنین به
uploadpack.allowTipSHA1InWant
مراجعه
کنید.
uploadpack.allowTipSHA1InWant
هنگامی
که
uploadpack.hideRefs فعال
است، به
upload-pack
اجازه
میدهد تا
درخواست fetch
که شیئی در
نوک یک مرجع
مخفی را
میخواهد
بپذیرد (به
طور
پیشفرض،
چنین
درخواستی
رد میشود).
همچنین به
uploadpack.hideRefs مراجعه
کنید. حتی
اگر این
مقدار false
باشد، یک
کلاینت
ممکن است
بتواند از
طریق
تکنیکهای
شرح داده
شده در بخش
«SECURITY» صفحه
راهنمای
gitnamespaces(7) اشیاء
را برباید؛
بهتر است
دادههای
خصوصی در یک
مخزن
جداگانه
نگهداری
شوند.
uploadpack.allowReachableSHA1InWant
به
upload-pack
اجازه
میدهد تا
درخواست fetch
که شیئی
قابل دسترس
از هر نوک
مرجعی را
میخواهد
بپذیرد. با
این حال،
توجه داشته
باشید که
محاسبه
دسترسیپذیری
شیء از نظر
محاسباتی
سنگین است.
پیشفرض
false
است. حتی اگر
این مقدار false
باشد، یک
کلاینت
ممکن است
بتواند از
طریق
تکنیکهای
شرح داده
شده در بخش
«SECURITY» صفحه
راهنمای
gitnamespaces(7) اشیاء
را برباید؛
بهتر است
دادههای
خصوصی در یک
مخزن
جداگانه
نگهداری
شوند.
uploadpack.allowAnySHA1InWant
به upload-pack
اجازه
میدهد تا
درخواست fetch
برای هر
شیئی را
بپذیرد. این
گزینه
مستلزم
uploadpack.allowTipSHA1InWant و
uploadpack.allowReachableSHA1InWant است.
اگر روی true
تنظیم شود
هر دوی
آنها را
فعال
میکند، و
اگر روی false
تنظیم شود
هر دوی
آنها را
غیرفعال
میکند. به
طور
پیشفرض
تنظیم نشده
است.
uploadpack.keepAlive
هنگامی
که upload-pack دستور
pack-objects را آغاز
کرده باشد،
ممکن است یک
دوره سکوت
در زمانی که
pack-objects بسته را
آماده
میکند
وجود داشته
باشد. در
حالت عادی
اطلاعات
پیشرفت را
خروجی
میدهد،
اما اگر از
گزینه -quiet
برای fetch
استفاده
شده باشد،
pack-objects تا زمان
شروع ارسال
دادههای
بسته
مطلقاً
چیزی خروجی
نخواهد داد.
برخی
کلاینتها
و شبکهها
ممکن است
سرور را
متوقفشده
(hung) تلقی کرده
و ارتباط را
قطع کنند.
تنظیم این
گزینه به upload-pack
دستور
میدهد هر
uploadpack.keepAlive ثانیه
یک بسته
خالی زنده
نگهداشتن
(keepalive packet) ارسال
کند. تنظیم
این گزینه
روی 0
بستههای keepalive
را به طور
کامل
غیرفعال
میکند.
پیشفرض 5
ثانیه است.
uploadpack.packObjectsHook
اگر این
گزینه
تنظیم شده
باشد،
هنگامی که
upload-pack بخواهد
git
pack-objects را برای
ایجاد یک
فایل بسته (packfile)
برای
کلاینت
اجرا کند،
در عوض این
دستور
پوسته را
اجرا خواهد
کرد. دستور
pack-objects و
آرگومانهایی
که
میبایست
اجرا
میشدند
(شامل
git pack-objects
در ابتدا) به
انتهای
دستور
پوسته
ضمیمه
میشوند.
ورودی
استاندارد
(stdin) و خروجی
استاندارد
(stdout) قلاب به
گونهای
مدیریت
میشوند که
گویی خود
pack-objects
اجرا شده
است؛ یعنی
upload-pack ورودی در
نظر
گرفتهشده
برای
pack-objects را
به قلاب
میدهد و
انتظار یک
فایل بسته
کامل را در stdout
دارد.
توجه
داشته
باشید که
این متغیر
پیکربندی
تنها زمانی
رعایت
میشود که
در
پیکربندی
محافظتشده
مشخص شده
باشد (بخش
موسوم به
“SCOPES” را
ببینید). این
یک اقدام
ایمنی در
برابر
دریافت از
مخازن
غیرقابلاعتماد
است.
uploadpack.allowFilter
اگر این
گزینه
تنظیم شود،
upload-pack از کلون
جزئی (partial clone) و
فیلتر کردن
اشیاء در
دریافت
جزئی (partial fetch)
پشتیبانی
خواهد کرد.
uploadpackfilter.allow
یک مقدار
پیشفرض
برای
فیلترهای
شیء
تعییننشده
ارائه
میدهد
(متغیر
پیکربندی
زیر را
ببینید). اگر
روی true تنظیم
شود، همه
فیلترهایی
را که در
آینده
اضافه
میشوند
نیز فعال
خواهد کرد.
پیشفرض true
است.
uploadpackfilter.<filter>.allow
صراحتاً
فیلتر شیء
متناظر با
<filter> را مجاز
یا ممنوع
میکند، که
در آن <filter>
میتواند
یکی از
موارد زیر
باشد: blob:none،
blob:limit، object:type، tree،
sparse:oid یا combine. در
صورت
استفاده از
فیلترهای
ترکیبی، هم
combine و هم تمام
انواع
فیلترهای
تودرتو
باید مجاز
باشند.
پیشفرض
uploadpackfilter.allow است.
uploadpackfilter.tree.maxDepth
تنها
زمانی -lter=tree:<n>
را مجاز
میداند که
<n> بیشتر از
مقدار uploadpackfilter.tree.maxDepth
نباشد. در
صورت
تنظیم، این
گزینه
همچنین
مستلزم
uploadpackfilter.tree.allow=true است،
مگر اینکه
این متغیر
پیکربندی
از قبل
تنظیم شده
باشد. در
صورت عدم
تنظیم هیچ
اثری
ندارد.
uploadpack.allowRefInWant
اگر این
گزینه
تنظیم شود،
upload-pack از
قابلیت ref-in-want
دستور fetch در
پروتکل
نسخه ۲
پشتیبانی
خواهد کرد.
این قابلیت
به نفع
سرورهای با
موازنهبار
(load-balanced) در نظر
گرفته شده
است که ممکن
است به دلیل
تأخیر در
همانندسازی
(replication delay)، دیدگاه
یکسانی از
اینکه
مراجع
آنها به چه
OIDهایی اشاره
میکنند
نداشته
باشند.
url.<base>.insteadOf
هر نشانی
URL که با این
مقدار شروع
شود
بازنویسی
میشود تا
در عوض با <base>
شروع شود. در
مواردی که
یک سایت
تعداد
زیادی مخزن
را میزبانی
میکند و
آنها را با
چندین روش
دسترسی
ارائه
میدهد، و
برخی
کاربران
نیاز به
استفاده از
روشهای
دسترسی
متفاوتی
دارند، این
قابلیت به
افراد
اجازه
میدهد هر
یک از URLهای
معادل را
مشخص کنند و
گیت به طور
خودکار URL را
به بهترین
جایگزین
برای آن
کاربر خاص
بازنویسی
کند، حتی
برای مخزنی
در آن سایت
که قبلاً
هرگز دیده
نشده است.
هنگامی که
بیش از یک
رشته insteadOf با یک
URL مطابقت
داشته
باشد،
طولانیترین
تطابق
استفاده
میشود.
توجه
داشته
باشید که
هرگونه
محدودیت
پروتکل بر URL
بازنویسیشده
اعمال
خواهد شد.
اگر
بازنویسی، URL
را برای
استفاده از
یک پروتکل
سفارشی یا
دستیار راه
دور (remote helper)
تغییر دهد،
ممکن است
لازم باشد
پیکربندی
protocol.*.allow را برای
مجاز کردن
درخواست
تنظیم کنید.
به ویژه،
پروتکلهایی
که انتظار
دارید برای
زیرماژولها
استفاده
کنید باید
به جای
مقدار
پیشفرض user
روی always
تنظیم شوند.
توضیحات
protocol.allow در بالا
را ببینید.
url.<base>.pushInsteadOf
به هر
نشانی URL که با
این مقدار
شروع شود
دادهای push
نخواهد شد؛
در عوض،
بازنویسی
میشود تا
با <base> شروع
شود، و به URL
حاصل push انجام
میشود. در
مواردی که
یک سایت
تعداد
زیادی مخزن
را با چندین
روش دسترسی
میزبانی
میکند، که
برخی از
آنها
اجازه push را
نمیدهند،
این قابلیت
به افراد
اجازه
میدهد یک URL
فقط-دریافتی
(pull-only) مشخص کنند
و گیت به طور
خودکار از
یک URL مناسب
برای push
استفاده
کند، حتی
برای مخزنی
در آن سایت
که قبلاً
هرگز دیده
نشده است.
هنگامی که
بیش از یک
رشته pushInsteadOf با
یک URL مطابقت
داشته
باشد،
طولانیترین
تطابق
استفاده
میشود. اگر
یک ریموت
دارای یک pushurl
صریح باشد،
گیت این
تنظیم را
برای آن
ریموت
نادیده
خواهد
گرفت.
user.name, user.email, author.name, author.email, committer.name,
committer.email
متغیرهای
user.name و
user.email
تعیین
میکنند چه
مقادیری در
فیلدهای
author
(نویسنده) و
committer
(ثبتکننده)
اشیاء
کامیت قرار
گیرند. اگر
نیاز دارید
که
author یا
committer
متفاوت
باشند،
میتوان
متغیرهای
author.name،
author.email،
committer.name
یا
committer.email را
تنظیم کرد.
همه این
موارد را
میتوان با
متغیرهای
محیطی
GIT_AUTHOR_NAME،
GIT_AUTHOR_EMAIL،
GIT_COMMITTER_NAME،
GIT_COMMITTER_EMAIL و
EMAIL
بازنویسی
کرد.
توجه
داشته
باشید که
اشکال name
این
متغیرها به
طور معمول
به نوعی نام
شخصی اشاره
دارند. برای
اطلاعات
بیشتر در
مورد این
تنظیمات به
git-commit(1) و بخش
متغیرهای
محیطی در git(1)
مراجعه
کنید، و در
صورتی که به
دنبال
اعتبارنامههای
احراز هویت
هستید، به
گزینه credential.username
نگاه کنید.
user.useConfigOnly
به گیت
دستور
میدهد از
تلاش برای
حدس زدن
مقادیر
پیشفرض
برای user.email و user.name
خودداری
کند، و در
عوض مقادیر
را تنها از
پیکربندی
بازیابی
کند. برای
مثال، اگر
چندین
نشانی
ایمیل
دارید و
مایلید
برای هر
مخزن از یک
ایمیل
متفاوت
استفاده
کنید، با
تنظیم این
گزینه
پیکربندی
روی true در
پیکربندی
سراسری
همراه با یک
نام، گیت
قبل از
ایجاد
کامیتهای
جدید در یک
مخزن تازه
کلونشده
از شما
درخواست
میکند
ایمیلی را
تنظیم کنید.
پیشفرض false
است.
user.signingKey
اگر
git-tag(1)
یا
git-commit(1) هنگام
ایجاد یک
برچسب یا
کامیت
امضاشده
کلیدی را که
میخواهید
به طور
خودکار
انتخاب
نمیکند،
میتوانید
انتخاب
پیشفرض را
با این
متغیر
بازنویسی
کنید. این
گزینه بدون
تغییر به
پارامتر
-rmat
روی
ssh تنظیم
شده باشد،
این مقدار
میتواند
حاوی مسیر
کلید خصوصی ssh
شما یا کلید
عمومی در
هنگام
استفاده از
ssh-agent باشد. به
عنوان
جایگزین،
میتواند
مستقیماً
حاوی یک
کلید عمومی
با پیشوند
key::
باشد (مانند:
«key::ssh-rsa XXXXXX identifier»).
کلید خصوصی
باید از
طریق ssh-agent در
دسترس باشد.
اگر تنظیم
نشده باشد،
گیت gpg.ssh.defaultKeyCommand را
فراخوانی
میکند
(مانند: «
ssh-add -L»)
و تلاش
میکند از
اولین کلید
موجود
استفاده
کند. برای
سازگاری با
گذشته،
کلید خامی
که با «
-ssh»
شروع شود،
مانند «ssh-rsa XXXXXX
identifier»، به صورت
«key::ssh-rsa XXXXXX identifier» در
نظر گرفته
میشود،
اما این
قالب منسوخ
شده است؛ در
عوض از قالب
key:: استفاده
کنید.
versionsort.prereleaseSuffix (deprecated)
نام
مستعار
منسوخشده
برای versionsort.suffix. در
صورت تنظیم
بودن versionsort.suffix
نادیده
گرفته
میشود.
versionsort.suffix
حتی
زمانی که
مرتبسازی
نسخهای در
git-tag(1) استفاده
میشود،
نام
برچسبهای
دارای نسخه
پایه یکسان
اما
پسوندهای
متفاوت
همچنان به
صورت
لغتنامهای
(lexicographically) مرتب
میشوند،
که برای
مثال منجر
به ظاهر شدن
برچسبهای
پیشانتشار
پس از
انتشار
اصلی
میشود
(مانند «
1.0-rc1»
بعد از «
1.0»).
این متغیر
را میتوان
برای تعیین
ترتیب
مرتبسازی
برچسبهای
دارای
پسوندهای
مختلف مشخص
کرد.
با تعیین
یک پسوند
منفرد در
این متغیر،
هر نام
برچسب شامل
آن پسوند
قبل از
انتشار
اصلی
مربوطه
ظاهر خواهد
شد. برای
مثال، اگر
این متغیر
روی «-rc»
تنظیم شود،
تمام
برچسبهای
«1.0-rcX» قبل از
«1.0» ظاهر
میشوند. در
صورت تعیین
چندباره،
هر بار برای
یک پسوند،
ترتیب
پسوندها در
پیکربندی،
ترتیب
مرتبسازی
نام
برچسبهای
دارای آن
پسوندها را
تعیین
خواهد کرد.
برای مثال،
اگر «-pre» قبل
از «-rc» در
پیکربندی
ظاهر شود،
تمام
برچسبهای
«1.0-preX» قبل از
هر برچسب
«1.0-rcX» فهرست
میشوند.
جایگاه
برچسب
انتشار
اصلی نسبت
به
برچسبهای
دارای
پسوندهای
گوناگون را
میتوان با
تعیین
پسوند خالی
در میان آن
پسوندهای
دیگر تعیین
کرد. برای
مثال اگر
پسوندهای
«-rc»، «»، «-ck»
و «-bfs» به
همین ترتیب
در
پیکربندی
ظاهر شوند،
ابتدا همه
برچسبهای
«v4.8-rcX» فهرست
میشوند،
پس از آن
«v4.8»، سپس
«v4.8-ckX» و در
نهایت «v4.8-bfsX».
اگر بیش از
یک پسوند با
یک نام
برچسب
مطابقت
داشته
باشد، آن
نام برچسب
بر اساس
پسوندی
مرتب
میشود که
در اولین
موقعیت در
نام برچسب
آغاز
میشود. اگر
بیش از یک
پسوند
منطبق در آن
اولین
موقعیت
آغاز شوند،
آنگاه آن
نام برچسب
بر اساس
طولانیترین
پسوند از
میان آن
پسوندها
مرتب خواهد
شد. اگر
پسوندها در
چندین فایل
پیکربندی
باشند،
ترتیب
مرتبسازی
میان
پسوندهای
مختلف
نامشخص
است.
web.browser
یک
مرورگر وب
را مشخص
میکند که
ممکن است
توسط برخی
دستورات
استفاده
شود. در حال
حاضر فقط
git-instaweb(1) و
git-help(1)
ممکن است از
آن استفاده
کنند.
worktree.guessRemote
اگر هیچ
شاخهای
مشخص نشده
باشد و
هیچکدام
از -b، -B یا -etach
استفاده
نشده
باشند، git worktree
add به طور
پیشفرض یک
شاخه جدید
از HEAD ایجاد
میکند. اگر
worktree.guessRemote روی true
تنظیم شده
باشد، worktree add
تلاش
میکند یک
شاخه
ردیابی راه
دور (remote-tracking branch) را
پیدا کند که
نام آن به
طور یکتا با
نام شاخه
جدید
مطابقت
داشته باشد.
اگر چنین
شاخهای
وجود داشته
باشد، checkout شده
و به عنوان
«upstream» برای
شاخه جدید
تنظیم
میشود. اگر
چنین
تطابقی
یافت نشود،
به ایجاد یک
شاخه جدید
از HEAD فعلی
بازمیگردد.
worktree.useRelativePaths
پیوند
دادن
درختهای
کاری با
استفاده از
مسیرهای
نسبی
(هنگامی که
«
true») یا
مسیرهای
مطلق
(هنگامی که
«
false»). این
امر به ویژه
برای
ساختارهایی
مفید است که
در آنها
مخزن و
درختهای
کاری ممکن
است بین
مکانها یا
محیطهای
مختلف
جابهجا
شوند.
پیشفرض
«
false» است.
توجه
داشته
باشید که
تنظیم worktree.useRelativePaths
روی «true» به
معنای
فعالسازی
پیکربندی
extensions.relativeWorktrees است
(به git-config(1)
مراجعه
کنید)، که در
نتیجه آن را
با
نسخههای
قدیمیتر
گیت
ناسازگار
میسازد.