'\" t .\" Title: git-sh-setup .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026-06-29 .\" Manual: Git Manual .\" Source: Git 2.55.0 .\" Language: English .\" .TH "GIT\-SH\-SETUP" "1" "2026\-06\-29" "Git 2\&.55\&.0" "Git Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" git-sh-setup \- کدهای راه‌اندازی مشترک برای اسکریپت‌های شل گیت .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fI\&. "$(git \-\-exec\-path)/git\-sh\-setup"\fR .fi .sp .SH "توضیحات (DESCRIPTION)" .sp این دستوری نیست که کاربر نهایی بخواهد آن را اجرا کند؛ هرگز. این مستندات برای افرادی است که در حال بررسی اسکریپت‌های سطح کاربری (Porcelain) هستند یا اسکریپت‌های جدید می‌نویسند. .sp اسکریپت \fIgit sh\-setup\fR طوری طراحی شده است که توسط سایر اسکریپت‌های شل سورس (source با استفاده از \&.) شود تا متغیرهایی اشاره‌کننده به دایرکتوری‌های عادی گیت و چند تابع کمکی شل را تنظیم کند. .sp پیش از سورس کردن آن، اسکریپت شما باید چند متغیر را مقداردهی کند؛ متغیر \fBUSAGE\fR (و در صورت وجود \fBLONG_USAGE\fR) برای تعریف پیامی که توسط تابع شل \fBusage\fR() ارائه می‌شود استفاده می‌شود. متغیر \fBSUBDIRECTORY_OK\fR در صورتی قابل تنظیم است که اسکریپت بتواند از یک زیرپوشه درون درخت کاری اجرا شود (برخی دستورات این امکان را ندارند). .sp این اسکریپت متغیرهای شل \fBGIT_DIR\fR و \fBGIT_OBJECT_DIRECTORY\fR را مقداردهی می‌کند، اما آن‌ها را در محیط صادر (\fBexport\fR) نمی‌کند. .SH "توابع (FUNCTIONS)" .PP die .RS 4 پس از ارسال پیام خطای مشخص‌شده به جریان خطای استاندارد، خارج می‌شود. .RE .PP usage .RS 4 با چاپ پیام راهنمای نحوه استفاده (usage) متوقف می‌شود. .RE .PP set_reflog_action .RS 4 متغیر محیطی \fBGIT_REFLOG_ACTION\fR را به رشته داده‌شده (معمولاً نام برنامه) تنظیم می‌کند، مگر اینکه قبلاً تنظیم شده باشد. هر زمان که اسکریپت دستوری از \fBgit\fR را اجرا کند که ارجاع‌ها (refs) را به‌روزرسانی می‌کند، یک مدخل در reflog با استفاده از مقدار این رشته ایجاد می‌شود تا سابقه‌ای از اینکه چه دستوری ارجاع را به‌روزرسانی کرده باقی بماند. .RE .PP git_editor .RS 4 ویرایشگر انتخابی کاربر (GIT_EDITOR، core\&.editor، VISUAL یا EDITOR) را روی یک فایل مشخص اجرا می‌کند، اما در صورتی که هیچ ویرایشگری مشخص نشده باشد و ترمینال فاقد قابلیت‌های لازم (dumb) باشد، با خطا متوقف می‌شود. .RE .PP is_bare_repository .RS 4 مقدار \fBtrue\fR یا \fBfalse\fR را به جریان خروجی استاندارد ارسال می‌کند تا مشخص شود که آیا مخزن یک مخزن خام (bare repository، یعنی بدون درخت کاری مرتبط) است یا خیر. .RE .PP cd_to_toplevel .RS 4 دستور chdir را برای رفتن به بالاترین سطح درخت کاری اجرا می‌کند. .RE .PP require_work_tree .RS 4 بررسی می‌کند که آیا دایرکتوری فعلی درون درخت کاری مخزن قرار دارد یا خیر، و در غیر این صورت متوقف می‌شود. .RE .PP require_work_tree_exists .RS 4 بررسی می‌کند که آیا درخت کاری مرتبط با مخزن وجود دارد یا خیر، و در غیر این صورت متوقف می‌شود. این کار اغلب قبل از فراخوانی cd_to_toplevel انجام می‌شود، زیرا اگر درخت کاری وجود نداشته باشد، اجرای آن غیرممکن است. .RE .PP require_clean_work_tree [] .RS 4 بررسی می‌کند که درخت کاری و نمایه (index) مرتبط با مخزن، تغییرات کامیت‌نشده در فایل‌های ردیابی‌شده نداشته باشند. در غیر این صورت یک پیام خطا به قالب \fBCannot\fR \fI\fR\fB:\fR \fI\fR\&. \fI\fR، صادر کرده و متوقف می‌شود. مثال: .sp .if n \{\ .RS 4 .\} .nf require_clean_work_tree rebase "Please commit or stash them\&." .fi .if n \{\ .RE .\} .sp .RE .PP get_author_ident_from_commit .RS 4 کدی را برای استفاده همراه با eval خروجی می‌دهد تا متغیرهای GIT_AUTHOR_NAME، GIT_AUTHOR_EMAIL و GIT_AUTHOR_DATE را برای یک کامیت مشخص مقداردهی کند. .RE .PP create_virtual_base .RS 4 فایل اول را طوری ویرایش می‌کند که تنها خطوط مشترک با فایل دوم باقی بمانند. اگر محتوای مشترک کافی نباشد، فایل اول خالی باقی می‌ماند. نتیجه به عنوان یک ورودی پایه مجازی مناسب برای ادغام سه‌طرفه (3\-way merge) قابل استفاده است. .RE .SH "گیت (GIT)" .sp بخشی از مجموعه \fBgit\fR(1)