git-sh-setup - کدهای
راهاندازی
مشترک برای
اسکریپتهای
شل گیت
. "$(git --exec-path)/git-sh-setup"
این
دستوری
نیست که
کاربر
نهایی
بخواهد آن
را اجرا
کند؛ هرگز.
این
مستندات
برای
افرادی است
که در حال
بررسی
اسکریپتهای
سطح کاربری
(Porcelain) هستند یا
اسکریپتهای
جدید
مینویسند.
اسکریپت git
sh-setup طوری
طراحی شده
است که توسط
سایر
اسکریپتهای
شل سورس (source با
استفاده از .)
شود تا
متغیرهایی
اشارهکننده
به
دایرکتوریهای
عادی گیت و
چند تابع
کمکی شل را
تنظیم کند.
پیش از
سورس کردن
آن،
اسکریپت
شما باید
چند متغیر
را
مقداردهی
کند؛ متغیر
USAGE (و در صورت
وجود LONG_USAGE)
برای تعریف
پیامی که
توسط تابع
شل usage() ارائه
میشود
استفاده
میشود.
متغیر SUBDIRECTORY_OK
در صورتی
قابل تنظیم
است که
اسکریپت
بتواند از
یک زیرپوشه
درون درخت
کاری اجرا
شود (برخی
دستورات
این امکان
را ندارند).
این
اسکریپت
متغیرهای
شل GIT_DIR و GIT_OBJECT_DIRECTORY
را
مقداردهی
میکند،
اما آنها
را در محیط
صادر (export)
نمیکند.
die
پس از
ارسال پیام
خطای
مشخصشده
به جریان
خطای
استاندارد،
خارج
میشود.
usage
با چاپ
پیام
راهنمای
نحوه
استفاده (usage)
متوقف
میشود.
set_reflog_action
متغیر
محیطی GIT_REFLOG_ACTION
را به رشته
دادهشده
(معمولاً
نام برنامه)
تنظیم
میکند،
مگر اینکه
قبلاً
تنظیم شده
باشد. هر
زمان که
اسکریپت
دستوری از git
را اجرا کند
که
ارجاعها (refs)
را
بهروزرسانی
میکند، یک
مدخل در reflog با
استفاده از
مقدار این
رشته ایجاد
میشود تا
سابقهای
از اینکه چه
دستوری
ارجاع را
بهروزرسانی
کرده باقی
بماند.
git_editor
ویرایشگر
انتخابی
کاربر (GIT_EDITOR،
core.editor، VISUAL یا EDITOR) را
روی یک فایل
مشخص اجرا
میکند،
اما در
صورتی که
هیچ
ویرایشگری
مشخص نشده
باشد و
ترمینال
فاقد
قابلیتهای
لازم (dumb)
باشد، با
خطا متوقف
میشود.
is_bare_repository
مقدار true
یا false را به
جریان
خروجی
استاندارد
ارسال
میکند تا
مشخص شود که
آیا مخزن یک
مخزن خام (bare
repository، یعنی
بدون درخت
کاری مرتبط)
است یا خیر.
cd_to_toplevel
دستور chdir
را برای
رفتن به
بالاترین
سطح درخت
کاری اجرا
میکند.
require_work_tree
بررسی
میکند که
آیا
دایرکتوری
فعلی درون
درخت کاری
مخزن قرار
دارد یا
خیر، و در
غیر این
صورت متوقف
میشود.
require_work_tree_exists
بررسی
میکند که
آیا درخت
کاری مرتبط
با مخزن
وجود دارد
یا خیر، و در
غیر این
صورت متوقف
میشود. این
کار اغلب
قبل از
فراخوانی
cd_to_toplevel انجام
میشود،
زیرا اگر
درخت کاری
وجود
نداشته
باشد،
اجرای آن
غیرممکن
است.
require_clean_work_tree <action> [<hint>]
بررسی
میکند که
درخت کاری و
نمایه (index)
مرتبط با
مخزن،
تغییرات
کامیتنشده
در
فایلهای
ردیابیشده
نداشته
باشند. در
غیر این
صورت یک
پیام خطا به
قالب
Cannot <action>:
<reason>.
<hint>،
صادر کرده و
متوقف
میشود.
مثال:
require_clean_work_tree rebase "Please commit or stash them."
get_author_ident_from_commit
کدی را
برای
استفاده
همراه با eval
خروجی
میدهد تا
متغیرهای
GIT_AUTHOR_NAME، GIT_AUTHOR_EMAIL و GIT_AUTHOR_DATE
را برای یک
کامیت مشخص
مقداردهی
کند.
create_virtual_base
فایل اول
را طوری
ویرایش
میکند که
تنها خطوط
مشترک با
فایل دوم
باقی
بمانند. اگر
محتوای
مشترک کافی
نباشد،
فایل اول
خالی باقی
میماند.
نتیجه به
عنوان یک
ورودی پایه
مجازی
مناسب برای
ادغام
سهطرفه (3-way merge)
قابل
استفاده
است.