'\" t .\" Title: githooks .\" 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: Persian .\" .TH "GITHOOKS" "5" "2026\-06\-29" "Git 2\&.55\&.0" "راهنمای Git" .\" ----------------------------------------------------------------- .\" * 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)" githooks \- قلاب‌های مورد استفاده توسط Git .SH "خلاصه دستور (SYNOPSIS)" .sp $GIT_DIR/hooks/* (یا `git config core\&.hooksPath`/*) .SH "توضیحات (DESCRIPTION)" .sp قلاب‌ها (Hooks) برنامه‌هایی هستند که می‌توانید آن‌ها را در دایرکتوری قلاب‌ها قرار دهید تا در نقاط خاصی از اجرای Git، اقداماتی را راه‌اندازی و اجرا کنند. قلاب‌هایی که بیت قابل اجرا (executable bit) برای آن‌ها تنظیم نشده باشد، نادیده گرفته می‌شوند. .sp به‌طور پیش‌فرض دایرکتوری قلاب‌ها \fB$GIT_DIR/hooks\fR است، اما این مسیر را می‌توان از طریق متغیر پیکربندی \fBcore\&.hooksPath\fR تغییر داد (به \fBgit-config\fR(1) مراجعه کنید). .sp پیش از این‌که Git یک قلاب را فراخوانی کند، دایرکتوری کاری خود را به $GIT_DIR در یک مخزن خام (bare) یا به ریشهٔ درخت کاری (working tree) در یک مخزن معمولی تغییر می‌دهد. استثنا قلاب‌هایی هستند که در حین عملیات push اجرا می‌شوند (\fIpre\-receive\fR، \fIupdate\fR، \fIpost\-receive\fR، \fIpost\-update\fR، \fIpush\-to\-checkout\fR) که همواره در $GIT_DIR اجرا می‌گردند. .sp متغیرهای محیطی، مانند \fBGIT_DIR\fR، \fBGIT_WORK_TREE\fR و غیره صادر (export) می‌شوند تا دستورهای Git اجرا شده توسط قلاب بتوانند مخزن را به‌درستی شناسایی و مکان‌یابی کنند. اگر قلاب شما نیاز دارد دستورهای Git را در یک مخزن خارجی یا در درخت کاری متفاوتی از همان مخزن فراخوانی کند، باید این متغیرهای محیطی را پاک کند تا با عملیات Git در مکان خارجی تداخل نداشته باشند. برای مثال: .sp .if n \{\ .RS 4 .\} .nf local_desc=$(git describe) foreign_desc=$(unset $(git rev\-parse \-\-local\-env\-vars); git \-C \&.\&./foreign\-repo describe) .fi .if n \{\ .RE .\} .sp .sp قلاب‌ها می‌توانند آرگومان‌های خود را از طریق محیط، آرگومان‌های خط فرمان و ورودی استاندارد (stdin) دریافت کنند. برای جزئیات به مستندات مربوط به هر قلاب در ادامه مراجعه کنید. .sp دستور \fBgit\fR \fBinit\fR ممکن است بسته به پیکربندی خود، قلاب‌ها را در مخزن جدید کپی کند. برای جزئیات به بخش "TEMPLATE DIRECTORY" در \fBgit-init\fR(1) مراجعه کنید. هرگاه در ادامه این سند به «قلاب‌های پیش‌فرض» اشاره می‌شود، منظور قالب پیش‌فرضی است که همراه با Git عرضه می‌گردد. .sp قلاب‌هایی که در حال حاضر پشتیبانی می‌شوند در ادامه شرح داده شده‌اند. .SH "قلاب‌ها (HOOKS)" .SS "applypatch\-msg" .sp این قلاب توسط \fBgit-am\fR(1) فراخوانی می‌شود. یک پارامتر منفرد می‌گیرد که نام فایلی است که پیام پیشنهادی لاگ کامیت را نگه می‌دارد. خروج با وضعیتی غیر از صفر باعث می‌شود \fBgit\fR \fBam\fR قبل از اعمال وصله (patch) عملیات را لغو کند. .sp قلاب مجاز است فایل پیام را در جا ویرایش کند و می‌توان از آن برای استانداردسازی پیام به یک قالب تعریف‌شده در پروژه استفاده کرد. همچنین می‌توان پس از بررسی فایل پیام، از آن برای رد کردن کامیت استفاده نمود. .sp قلاب پیش‌فرض \fIapplypatch\-msg\fR در صورت فعال بودن، در صورتی که قلاب \fIcommit\-msg\fR نیز فعال باشد، آن را اجرا می‌کند. .SS "pre\-applypatch" .sp این قلاب توسط \fBgit-am\fR(1) فراخوانی می‌شود. هیچ پارامتری دریافت نمی‌کند و پس از اعمال وصله، اما قبل از ثبت کامیت فراخوانی می‌گردد. .sp اگر با وضعیت غیر صفر خارج شود، درخت کاری پس از اعمال وصله کامیت نخواهد شد. .sp از این قلاب می‌توان برای بررسی درخت کاری فعلی و امتناع از ثبت کامیت در صورت عدم موفقیت در آزمون‌های خاص استفاده کرد. .sp قلاب پیش‌فرض \fIpre\-applypatch\fR در صورت فعال بودن، قلاب \fIpre\-commit\fR را اجرا می‌کند (چنانچه فعال باشد). .SS "post\-applypatch" .sp این قلاب توسط \fBgit-am\fR(1) فراخوانی می‌شود. پارامتری دریافت نمی‌کند و پس از اعمال وصله و ایجاد یک کامیت فراخوانی می‌شود. .sp این قلاب عمدتاً برای اطلاع‌رسانی در نظر گرفته شده است و نمی‌تواند بر نتیجهٔ \fBgit\fR \fBam\fR تأثیر بگذارد. .SS "pre\-commit" .sp این قلاب توسط \fBgit-commit\fR(1) فراخوانی می‌شود و با گزینهٔ \fB\-\-no\-verify\fR می‌توان آن را نادیده گرفت. هیچ پارامتری دریافت نمی‌کند و قبل از دریافت پیام لاگ کامیت پیشنهادی و ایجاد کامیت فراخوانی می‌گردد. خروج با وضعیت غیر صفر از این اسکریپت باعث می‌شود دستور \fBgit\fR \fBcommit\fR پیش از ایجاد کامیت متوقف شود. .sp تمام قلاب‌های مربوط به \fBgit\fR \fBcommit\fR در صورتی که دستور قرار نباشد ویرایشگری را برای اصلاح پیام کامیت باز کند، با متغیر محیطی \fBGIT_EDITOR=:\fR فراخوانی می‌شوند. .sp قلاب پیش‌فرض \fIpre\-commit\fR در صورت فعال بودن، از افزودن نام فایل‌های غیر ASCII و خطوط دارای فاصله‌های خالی انتهایی (trailing whitespace) جلوگیری می‌کند. بررسی نام‌های غیر ASCII را می‌توان با تنظیم گزینهٔ پیکربندی \fBhooks\&.allownonascii\fR روی \fBtrue\fR غیرفعال کرد. .SS "pre\-merge\-commit" .sp این قلاب توسط \fBgit-merge\fR(1) فراخوانی می‌شود و می‌توان با گزینهٔ \fB\-\-no\-verify\fR آن را نادیده گرفت. هیچ پارامتری دریافت نمی‌کند و پس از انجام موفقیت‌آمیز ادغام و قبل از دریافت پیام پیشنهادی لاگ برای ثبت کامیت فراخوانی می‌شود. خروج با وضعیت غیر صفر باعث می‌شود دستور \fBgit\fR \fBmerge\fR قبل از ثبت کامیت لغو شود. .sp قلاب پیش‌فرض \fIpre\-merge\-commit\fR در صورت فعال بودن، قلاب \fIpre\-commit\fR را (در صورت فعال بودن) اجرا می‌کند. .sp این قلاب در صورتی که دستور یک ویرایشگر را برای ویرایش پیام کامیت باز نکند، با متغیر محیطی \fBGIT_EDITOR=:\fR فراخوانی می‌شود. .sp اگر ادغام نتواند به‌صورت خودکار انجام شود، تعارض‌ها باید حل شده و نتیجه به‌صورت جداگانه کامیت شود (به \fBgit-merge\fR(1) مراجعه کنید). در این حالت، این قلاب اجرا نخواهد شد، اما قلاب \fIpre\-commit\fR در صورت فعال بودن اجرا می‌گردد. .SS "prepare\-commit\-msg" .sp این قلاب بلافاصله پس از آماده‌سازی پیام لاگ پیش‌فرض و قبل از باز شدن ویرایشگر توسط \fBgit-commit\fR(1) فراخوانی می‌شود. .sp این قلاب یک تا سه پارامتر دریافت می‌کند. اولی نام فایلی است که پیام لاگ کامیت را در خود دارد. دومی منبع پیام کامیت است و می‌تواند یکی از موارد زیر باشد: \fBmessage\fR (اگر گزینهٔ \fB\-m\fR یا \fB\-F\fR داده شده باشد)؛ \fBtemplate\fR (اگر گزینهٔ \fB\-t\fR داده شده باشد یا متغیر پیکربندی \fBcommit\&.template\fR تنظیم شده باشد)؛ \fBmerge\fR (اگر کامیت حاصل یک ادغام باشد یا فایل \fB\&.git/MERGE_MSG\fR وجود داشته باشد)؛ \fBsquash\fR (اگر فایل \fB\&.git/SQUASH_MSG\fR وجود داشته باشد)؛ یا \fBcommit\fR که به دنبال آن یک نام شیء کامیت می‌آید (اگر گزینهٔ \fB\-c\fR، \fB\-C\fR یا \fB\-\-amend\fR داده شده باشد). .sp اگر وضعیت خروج غیر صفر باشد، \fBgit\fR \fBcommit\fR لغو خواهد شد. .sp هدف از این قلاب، ویرایش فایل پیام در جا است و با گزینهٔ \fB\-\-no\-verify\fR نادیده گرفته نمی‌شود. خروج با مقدار غیر صفر به منزله شکست قلاب است و کامیت را لغو می‌کند. نباید از این قلاب به عنوان جایگزینی برای قلاب pre-commit استفاده شود. .sp قلاب نمونهٔ \fBprepare\-commit\-msg\fR که همراه Git ارائه می‌شود، پیام راهنمای موجود در بخش‌های کامنت‌شده قالب کامیت را حذف می‌کند. .SS "commit\-msg" .sp این قلاب توسط \fBgit-commit\fR(1) و \fBgit-merge\fR(1) فراخوانی می‌شود و با گزینهٔ \fB\-\-no\-verify\fR قابل نادیده‌گیری است. این قلاب یک پارامتر دریافت می‌کند: نام فایلی که پیام لاگ کامیت پیشنهادی را در خود دارد. خروج با وضعیت غیر صفر موجب لغو دستور می‌شود. .sp قلاب مجاز است فایل پیام را در جا ویرایش کند و می‌توان از آن برای استانداردسازی پیام به فرمت خاص پروژه استفاده کرد. همچنین می‌توان پس از بررسی محتوای فایل پیام، از ایجاد کامیت ممانعت به عمل آورد. .sp قلاب پیش‌فرض \fIcommit\-msg\fR در صورت فعال بودن، تریلرهای تکراری \fBSigned\-off\-by\fR را شناسایی کرده و در صورت یافتن، کامیت را لغو می‌کند. .SS "post\-commit" .sp این قلاب توسط \fBgit-commit\fR(1) فراخوانی می‌شود. هیچ پارامتری نمی‌گیرد و پس از ایجاد کامیت فراخوانی می‌شود. .sp هدف اصلی این قلاب اطلاع‌رسانی است و نمی‌تواند بر نتیجهٔ نهایی \fBgit\fR \fBcommit\fR تأثیر بگذارد. .SS "pre\-rebase" .sp این قلاب توسط \fBgit-rebase\fR(1) فراخوانی می‌شود و می‌توان از آن برای جلوگیری از بازپایه‌ریزی (rebase) یک شاخه استفاده کرد. قلاب ممکن است با یک یا دو پارامتر فراخوانی شود. پارامتر اول شاخه بالادستی (upstream) است که مجموعه تغییرات از آن منشعب شده است. پارامتر دوم شاخه‌ای است که در حال بازپایه‌ریزی است؛ این مقدار هنگام بازپایه‌ریزی شاخهٔ فعلی تنظیم نمی‌شود. .SS "post\-checkout" .sp این قلاب هنگامی فراخوانی می‌شود که پس از به‌روزرسانی درخت کاری، دستور \fBgit-checkout\fR(1) یا \fBgit-switch\fR(1) اجرا شود. سه پارامتر به قلاب داده می‌شود: ارجاع HEAD قبلی، ارجاع HEAD جدید (که ممکن است تغییر کرده یا نکرده باشد) و یک پرچم که نشان می‌دهد آیا خروج مربوط به یک شاخه بوده است (تغییر شاخه، پرچم=1) یا مربوط به یک فایل (بازیابی فایل از نمایه/ایندکس، پرچم=0). این قلاب نمی‌تواند بر نتیجهٔ \fBgit\fR \fBswitch\fR یا \fBgit\fR \fBcheckout\fR تأثیری بگذارد، به جز این‌که وضعیت خروج قلاب تبدیل به وضعیت خروج این دو دستور می‌شود. .sp این قلاب همچنین پس از اجرای \fBgit-clone\fR(1) اجرا می‌شود، مگر این‌که گزینهٔ \fB\-\-no\-checkout\fR (\fB\-n\fR) استفاده شده باشد. اولین پارامتر داده‌شده به قلاب null-ref است، دومی ارجاع HEAD جدید و مقدار پرچم همواره 1 است. به‌طور مشابه برای دستور \fBgit\fR \fBworktree\fR \fBadd\fR نیز اجرا می‌شود مگر این‌که \fB\-\-no\-checkout\fR استفاده شده باشد. .sp از این قلاب می‌توان برای بررسی اعتبارسنجی مخزن، نمایش خودکار تفاوت‌ها با HEAD قبلی (در صورت تغییر)، یا تنظیم خصوصیات متادیتای دایرکتوری کاری استفاده کرد. .SS "post\-merge" .sp این قلاب توسط \fBgit-merge\fR(1) فراخوانی می‌شود، که هنگام اجرای \fBgit\fR \fBpull\fR روی یک مخزن محلی رخ می‌دهد. قلاب یک پارامتر می‌گیرد: یک پرچم وضعیت که مشخص می‌کند آیا ادغام انجام‌شده از نوع فشرده‌سازی (squash merge) بوده است یا خیر. این قلاب نمی‌تواند بر نتیجهٔ نهایی \fBgit\fR \fBmerge\fR تأثیر بگذارد و در صورتی که ادغام به دلیل وجود تعارض‌ها با شکست مواجه شود، اجرا نخواهد شد. .sp از این قلاب می‌توان در ترکیب با یک قلاب متناظر pre-commit برای ذخیره و بازیابی هر شکلی از متادیتای مرتبط با درخت کاری (مانند دسترسی‌ها/مالکیت، ACLها و غیره) استفاده کرد. برای مشاهده یک نمونه از نحوه انجام این کار، به contrib/hooks/setgitperms.perl مراجعه کنید. .SS "pre\-push" .sp این قلاب توسط \fBgit-push\fR(1) فراخوانی می‌شود و می‌تواند برای جلوگیری از ارسال تغییرات (push) به کار رود. قلاب با دو پارامتر فراخوانی می‌شود که نام و آدرس مخزن ریموت مقصد را ارائه می‌دهند؛ در صورتی که از یک ریموت نام‌گذاری‌شده استفاده نشود، هر دو مقدار یکسان خواهند بود. .sp اطلاعات مربوط به آنچه قرار است ارسال شود در ورودی استاندارد (stdin) قلاب با خطوطی به فرمت زیر ارائه می‌شود: .sp .if n \{\ .RS 4 .\} .nf SP SP SP LF .fi .if n \{\ .RE .\} .sp برای مثال، اگر دستور \fBgit push origin master:foreign\fR اجرا شود، قلاب خطی مانند زیر دریافت می‌کند: .sp .if n \{\ .RS 4 .\} .nf refs/heads/master 67890 refs/heads/foreign 12345 .fi .if n \{\ .RE .\} .sp اگرچه نام کامل شیء ارائه خواهد شد. اگر مرجع ریموت هنوز وجود نداشته باشد، مقدار \fI\fR شیء کاملاً صفر خواهد بود. اگر قرار باشد مرجعی حذف شود، \fI\fR به‌صورت (\fBdelete\fR) و مقدار \fI\fR شیء تماماً صفر ارسال می‌شود. اگر کامیت محلی با چیزی غیر از نامی که بتوان آن را گسترش داد مشخص شده باشد (مانند \fBHEAD~\fR یا نام شیء)، به همان صورتی که در ابتدا داده شده بود، ارسال خواهد شد. .sp اگر این قلاب با وضعیت غیر صفر خارج شود، \fBgit\fR \fBpush\fR بدون ارسال هیچ داده‌ای متوقف خواهد شد. اطلاعات مربوط به علت رد شدن push می‌تواند با نوشتن روی خروجی استاندارد خطا (stderr) به کاربر نشان داده شود. .SS "pre\-receive" .sp این قلاب توسط \fBgit-receive-pack\fR(1) هنگامی فراخوانی می‌شود که در واکنش به \fBgit\fR \fBpush\fR، مرجع‌ها را در مخزن خود به‌روزرسانی می‌کند. این قلاب درست قبل از شروع به‌روزرسانی مرجع‌ها در مخزن ریموت فراخوانی می‌شود. وضعیت خروج آن موفقیت یا شکست عملیات به‌روزرسانی را تعیین می‌کند. .sp این قلاب یک‌بار برای کل عملیات دریافت اجرا می‌شود. هیچ آرگومانی دریافت نمی‌کند، اما برای هر مرجعی که قرار است به‌روزرسانی شود، خطی با فرمت زیر از ورودی استاندارد دریافت می‌کند: .sp .if n \{\ .RS 4 .\} .nf SP SP LF .fi .if n \{\ .RE .\} .sp که در آن \fI\fR نام شیء قدیمی ذخیره‌شده در مرجع، \fI\fR نام شیء جدید برای ذخیره در مرجع، و \fI\fR نام کامل مرجع است. هنگام ایجاد یک مرجع جدید، \fI\fR یک شیء تماماً صفر است. .sp اگر قلاب با وضعیت غیر صفر خارج شود، هیچ‌کدام از مرجع‌ها به‌روزرسانی نخواهند شد. اگر با صفر خارج شود، همچنان می‌توان از به‌روزرسانی مرجع‌های تکی توسط قلاب \fIupdate\fR جلوگیری کرد. .sp هر دو خروجی استاندارد (stdout) و خروجی خطای استاندارد (stderr) به دستور \fBgit\fR \fBsend\-pack\fR در سمت دیگر ارسال می‌شوند، بنابراین می‌توانید به‌سادگی با استفاده از \fBecho\fR پیام‌هایی را برای کاربر نمایش دهید. .sp تعداد گزینه‌های push مشخص‌شده در خط فرمان \fBgit\fR \fBpush\fR \fB\-\-push\-option=\&.\fR\&.\&. را می‌توان از متغیر محیطی \fBGIT_PUSH_OPTION_COUNT\fR خواند و خود گزینه‌ها در \fBGIT_PUSH_OPTION_0\fR، \fBGIT_PUSH_OPTION_1\fR و غیره یافت می‌شوند. در صورتی که در مذاکره توافق شود که از فاز گزینه‌های push استفاده نشود، این متغیرهای محیطی تنظیم نخواهند شد. اگر کلاینت استفاده از گزینه‌های push را انتخاب کند اما هیچ گزینه‌ای ارسال نکند، متغیر شمارنده روی صفر تنظیم می‌شود (\fBGIT_PUSH_OPTION_COUNT=0\fR). .sp برای آگاهی از برخی نکات و هشدارها، به بخش "Quarantine Environment" در \fBgit-receive-pack\fR(1) مراجعه کنید. .SS "update" .sp این قلاب توسط \fBgit-receive-pack\fR(1) هنگامی فراخوانی می‌شود که در واکنش به \fBgit\fR \fBpush\fR، مرجع‌ها را در مخزن خود به‌روزرسانی می‌کند. قلاب درست قبل از به‌روزرسانی مرجع در مخزن ریموت فراخوانی می‌شود. وضعیت خروج آن موفقیت یا شکست به‌روزرسانی مرجع را مشخص می‌کند. .sp قلاب یک‌بار به ازای هر مرجعی که قرار است به‌روز شود اجرا می‌گردد و سه پارامتر دریافت می‌کند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} نام مرجعی که در حال به‌روزرسانی است، .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} نام شیء قدیمی ذخیره‌شده در مرجع، .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} و نام شیء جدید که قرار است در مرجع ذخیره شود. .RE .sp خروج با کد صفر از قلاب update اجازه می‌دهد تا مرجع به‌روزرسانی شود. خروج با وضعیت غیر صفر مانع از به‌روزرسانی آن مرجع توسط \fBgit\fR \fBreceive\-pack\fR می‌شود. .sp از این قلاب می‌توان برای جلوگیری از به‌روزرسانی‌های اجباری (\fIforced\fR) روی مرجع‌های خاص استفاده کرد تا اطمینان حاصل شود که نام شیء، یک شیء کامیت است که از نسل شیء کامیت مشخص‌شده با نام شیء قدیمی می‌باشد؛ به این معنی که سیاست «فقط رو به جلو» (fast-forward only) اعمال گردد. .sp همچنین می‌توان از آن برای ثبت وقایع وضعیت old..new استفاده کرد. با این حال، چون این قلاب کل مجموعه شاخه‌ها را نمی‌شناسد، استفاده ساده‌لوحانه از آن باعث ارسال یک ایمیل به ازای هر مرجع می‌شود. قلاب \fIpost\-receive\fR برای این منظور مناسب‌تر است. .sp در محیطی که دسترسی کاربران فقط به دستورهای git از طریق شبکه محدود شده است، می‌توان از این قلاب برای پیاده‌سازی کنترل دسترسی بدون وابستگی به مالکیت فایل‌سیستم و عضویت در گروه‌ها استفاده کرد. برای چگونگی استفاده از شل ورود به منظور محدود کردن دسترسی کاربر به دستورهای git، به \fBgit-shell\fR(1) مراجعه کنید. .sp هر دو خروجی استاندارد و خروجی خطای استاندارد به \fBgit\fR \fBsend\-pack\fR در سمت دیگر ارسال می‌شوند، بنابراین می‌توانید پیام‌ها را به‌سادگی با \fBecho\fR به کاربر برسانید. .sp قلاب پیش‌فرض \fIupdate\fR در صورت فعال بودن \(em و در حالتی که گزینهٔ پیکربندی \fBhooks\&.allowunannotated\fR تنظیم نشده یا روی false باشد \(em از push شدن تگ‌های بدون حاشیه‌نویسی (unannotated tags) جلوگیری می‌کند. .SS "proc\-receive" .sp این قلاب توسط \fBgit-receive-pack\fR(1) فراخوانی می‌شود. اگر سرور متغیر پیکربندی چندمقداری \fBreceive\&.procReceiveRefs\fR را تنظیم کرده باشد و دستورات ارسال‌شده به \fIreceive\-pack\fR با نام‌های مرجع مطابقت داشته باشند، این دستورات به جای تابع داخلی \fBexecute_commands\fR() توسط این قلاب اجرا خواهند شد. این قلاب مسئول به‌روزرسانی مرجع‌های مربوطه و گزارش نتایج به \fIreceive\-pack\fR است. .sp این قلاب یک‌بار برای عملیات دریافت اجرا می‌شود. هیچ آرگومانی نمی‌گیرد، اما از پروتکل با فرمت pkt-line برای برقراری ارتباط با \fIreceive\-pack\fR جهت خواندن دستورها، گزینه‌های push و ارسال نتایج استفاده می‌کند. در مثال زیر برای این پروتکل، حرف \fIS\fR نمایندهٔ \fIreceive\-pack\fR و حرف \fIH\fR نمایندهٔ این قلاب است. .sp .if n \{\ .RS 4 .\} .nf # مذاکره نسخه و ویژگی‌ها\&. S: PKT\-LINE(version=1\e0push\-options atomic\&.\&.\&.) S: flush\-pkt H: PKT\-LINE(version=1\e0push\-options\&.\&.\&.) H: flush\-pkt .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf # ارسال دستورها از سرور به قلاب\&. S: PKT\-LINE( ) S: \&.\&.\&. \&.\&.\&. S: flush\-pkt # ارسال push-options تنها در صورتی که ویژگی \*(Aqpush-options\*(Aq فعال باشد\&. S: PKT\-LINE(push\-option) S: \&.\&.\&. \&.\&.\&. S: flush\-pkt .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf # دریافت نتایج از قلاب\&. # وضعیت OK: دستور با موفقیت اجرا شد\&. H: PKT\-LINE(ok ) # وضعیت NO: دستور رد شد\&. H: PKT\-LINE(ng ) # عبور دادن: اجازه دهید خود \*(Aqreceive-pack\*(Aq آن را اجرا کند\&. H: PKT\-LINE(ok ) H: PKT\-LINE(option fall\-through) # وضعیت OK اما با یک مرجع جایگزین\&. نام مرجع جایگزین # و سایر وضعیت‌ها را می‌توان در دستورالعمل‌های option مشخص کرد\&. H: PKT\-LINE(ok ) H: PKT\-LINE(option refname ) H: PKT\-LINE(option old\-oid ) H: PKT\-LINE(option new\-oid ) H: PKT\-LINE(option forced\-update) H: \&.\&.\&. \&.\&.\&. H: flush\-pkt .fi .if n \{\ .RE .\} .sp هر دستور برای قلاب \fIproc\-receive\fR ممکن است به یک شبه‌مرجع اشاره کند و همیشه دارای یک old-oid صفر است، در حالی که قلاب \fIproc\-receive\fR ممکن است یک مرجع جایگزین را به‌روزرسانی کند که از قبل با یک old-oid غیر صفر وجود دارد. در این حالت، این قلاب از دستورالعمل‌های "option" برای گزارش ویژگی‌های توسعه‌یافته برای مرجعِ مشخص‌شده در دستور "ok" قبلی استفاده می‌کند. .sp گزارش دستورهای این قلاب باید همان ترتیبی را داشته باشد که در ورودی دریافت شده است. وضعیت خروج قلاب \fIproc\-receive\fR تنها موفقیت یا شکست کل گروه دستورهای ارسال‌شده به آن را تعیین می‌کند، مگر اینکه push اتمیک (atomic) در حال استفاده باشد. .SS "post\-receive" .sp این قلاب توسط \fBgit-receive-pack\fR(1) در واکنش به \fBgit\fR \fBpush\fR و به‌روزرسانی مرجع‌ها در مخزن فراخوانی می‌شود. این قلاب یک‌بار در مخزن ریموت پس از پردازش تمام به‌روزرسانی‌های مرجع و در صورتی که حداقل یک مرجع به‌روز شده باشد، اجرا می‌گردد. .sp قلاب هیچ آرگومانی نمی‌گیرد. به ازای هر مرجعی که با موفقیت به‌روزرسانی شده باشد، یک خط با همان ساختار و فرمت قلاب \fIpre\-receive\fR از طریق ورودی استاندارد دریافت می‌کند. .sp این قلاب بر نتیجهٔ \fBgit\fR \fBreceive\-pack\fR تأثیری ندارد، زیرا پس از انجام کار اصلی فراخوانی می‌شود. .sp این قلاب جایگزین پیشرفته‌تری برای قلاب \fIpost\-update\fR است، چرا که علاوه بر نام مرجع‌ها، هر دو مقدار قدیمی و جدید آن‌ها را نیز دریافت می‌کند. .sp هر دو خروجی استاندارد و خروجی خطای استاندارد به \fBgit\fR \fBsend\-pack\fR ارسال می‌شوند، بنابراین می‌توانید پیام‌های مورد نظر را با \fBecho\fR به کاربر نمایش دهید. .sp قلاب پیش‌فرض \fIpost\-receive\fR خالی است، اما یک اسکریپت نمونه به نام \fBpost\-receive\-email\fR در دایرکتوری \fBcontrib/hooks\fR توزیع Git ارائه شده است که قابلیت ارسال ایمیل‌های کامیت را پیاده‌سازی می‌کند. .sp تعداد گزینه‌های push داده‌شده در خط فرمان \fBgit\fR \fBpush\fR \fB\-\-push\-option=\&.\fR\&.\&. را می‌توان از متغیر محیطی \fBGIT_PUSH_OPTION_COUNT\fR خواند و گزینه‌ها در \fBGIT_PUSH_OPTION_0\fR، \fBGIT_PUSH_OPTION_1\fR و غیره در دسترس هستند. اگر توافق شود که از این مرحله استفاده نشود، متغیرها تنظیم نخواهند شد. اگر کلاینت استفاده از گزینه‌ها را فعال کند اما هیچ مقداری نفرستد، شمارنده صفر می‌شود (\fBGIT_PUSH_OPTION_COUNT=0\fR). .sp برای جزئیات بیشتر به بخش "post\-receive" در \fBgit-receive-pack\fR(1) مراجعه کنید. .SS "post\-update" .sp این قلاب توسط \fBgit-receive-pack\fR(1) در واکنش به \fBgit\fR \fBpush\fR و پس از به‌روزرسانی مرجع‌ها در مخزن ریموت فراخوانی می‌شود. این قلاب یک‌بار پس از به‌روز شدن تمام مرجع‌ها اجرا می‌گردد. .sp تعداد متغیری پارامتر دریافت می‌کند که هر یک از آن‌ها نام مرجعی است که واقعاً به‌روزرسانی شده است. .sp این قلاب در درجه اول برای اطلاع‌رسانی است و نمی‌تواند بر نتیجهٔ نهایی \fBgit\fR \fBreceive\-pack\fR تأثیر بگذارد. .sp قلاب \fIpost\-update\fR می‌تواند مشخص کند که چه شاخه‌هایی push شده‌اند، اما مقادیر اصلی و به‌روزشده آن‌ها را نمی‌داند؛ بنابراین برای ثبت وقایع old..new مناسب نیست. در عوض، قلاب \fIpost\-receive\fR هم مقادیر اصلی و هم مقادیر جدید را دریافت می‌کند؛ اگر به این مقادیر نیاز دارید بهتر است از آن استفاده کنید. .sp قلاب پیش‌فرض \fIpost\-update\fR در صورت فعال بودن، دستور \fBgit\fR \fBupdate\-server\-info\fR را اجرا می‌کند تا اطلاعات مورد استفاده توسط پروتکل‌های انتقال ساده (مانند HTTP) به‌روز نگه داشته شود. اگر مخزنی را منتشر می‌کنید که از طریق HTTP قابل دسترسی است، احتمالاً باید این قلاب را فعال کنید. .sp هر دو خروجی استاندارد و خطای استاندارد به \fBgit\fR \fBsend\-pack\fR در سمت دیگر ارسال می‌شوند. .SS "reference\-transaction" .sp این قلاب توسط هر دستور Git که به‌روزرسانی مرجع‌ها را انجام می‌دهد فراخوانی می‌شود. هر زمان که یک تراکنش مرجع در وضعیت آماده‌سازی (preparing)، آماده‌شده (prepared)، کامیت‌شده (committed) یا لغوشده (aborted) قرار گیرد، اجرا می‌شود و بنابراین ممکن است چندین بار فراخوانی گردد. این قلاب همچنین از به‌روزرسانی مرجع‌های نمادین (symbolic references) پشتیبانی می‌کند. .sp این قلاب دقیقاً یک آرگومان می‌گیرد که همان وضعیت فعلی تراکنش مرجع است: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} "preparing": تمام به‌روزرسانی‌های مرجع در صف تراکنش قرار گرفته‌اند اما هنوز روی دیسک قفل نشده‌اند. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} "prepared": تمام به‌روزرسانی‌های مرجع در صف تراکنش قرار گرفته و مرجع‌ها روی دیسک قفل شده‌اند. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} "committed": تراکنش مرجع نهایی (کامیت) شد و تمام مرجع‌ها اکنون مقادیر جدید خود را دارند. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} "aborted": تراکنش مرجع لغو شد، هیچ تغییری اعمال نگردید و قفل‌ها آزاد شدند. .RE .sp برای هر به‌روزرسانی مرجعی که به تراکنش اضافه شده است، قلاب خطی با فرمت زیر را در ورودی استاندارد دریافت می‌کند: .sp .if n \{\ .RS 4 .\} .nf SP SP LF .fi .if n \{\ .RE .\} .sp که در آن \fI\fR نام شیء قدیمی ارسال‌شده به تراکنش مرجع، \fI\fR نام شیء جدید برای ذخیره در مرجع، و \fI\fR نام کامل مرجع است. هنگام به‌روزرسانی اجباری مرجع بدون در نظر گرفتن مقدار فعلی آن، یا زمانی که مرجع باید از نو ایجاد شود، \fI\fR یک شیء تماماً صفر است. برای تمایز این موارد، می‌توانید مقدار فعلی \fI\fR را از طریق \fBgit\fR \fBrev\-parse\fR بررسی کنید. در طول وضعیت "preparing"، مرجع‌های نمادین حل نمی‌شوند: \fI\fR خود مرجع نمادین را منعکس می‌کند نه شیئی که به آن اشاره دارد. .sp برای به‌روزرسانی‌های مرجع نمادین، فیلدهای و \fI\fR می‌توانند به جای اشیاء، نشان‌دهنده مرجع‌ها باشند. یک مرجع با پیشوند \fIref:\fR مشخص می‌شود، مانند \fBref:\fR\fI\fR. .sp وضعیت خروج قلاب برای هر وضعیتی به جز حالت‌های "preparing" و "prepared" نادیده گرفته می‌شود. در این دو وضعیت، خروج با وضعیت غیر صفر موجب لغو شدن تراکنش خواهد شد. در این حالت قلاب با وضعیت "aborted" فراخوانی نخواهد شد. .SS "push\-to\-checkout" .sp این قلاب توسط \fBgit-receive-pack\fR(1) فراخوانی می‌شود هنگامی که به \fBgit\fR \fBpush\fR واکنش نشان داده و مرجع‌ها را در مخزن خود به‌روزرسانی می‌کند، و زمانی که دستور push تلاش می‌کند شاخه‌ای را که در حال حاضر دریافت (checkout) شده به‌روز کند و متغیر پیکربندی \fBreceive\&.denyCurrentBranch\fR روی \fBupdateInstead\fR تنظیم شده باشد. چنین ارسال‌هایی به‌طور پیش‌فرض در صورتی که درخت کاری و نمایه مخزن ریموت تفاوتی با کامیت فعال فعلی داشته باشند، رد می‌شوند؛ اگر هر دو درخت کاری و نمایه با کامیت فعلی مطابقت داشته باشند، به‌روزرسانی می‌شوند تا با نوک جدید شاخه همگام شوند. این قلاب برای بازنویسی و تغییر این رفتار پیش‌فرض استفاده می‌شود. .sp این قلاب کامیتی را دریافت می‌کند که قرار است نوک شاخه فعلی به آن به‌روز شود. می‌تواند با وضعیت غیر صفر خارج شود تا از push جلوگیری کند (در این صورت نباید نمایه یا درخت کاری را تغییر دهد). یا می‌تواند هرگونه تغییر لازم را در درخت کاری و نمایه اعمال کند تا به محض به‌روزرسانی شاخه به کامیت جدید، به وضعیت دلخواه برسند و سپس با وضعیت صفر خارج شود. .sp به عنوان مثال، قلاب می‌تواند دستور \fBgit\fR \fBread\-tree\fR \fB\-u\fR \fB\-m\fR \fBHEAD\fR "$1" را اجرا کند تا رفتار دستور \fBgit\fR \fBfetch\fR معکوس‌شده با \fBgit\fR \fBpush\fR را شبیه‌سازی کند؛ زیرا فرمت دو درختی \fBgit\fR \fBread\-tree\fR \fB\-u\fR \fB\-m\fR اساساً همان کار \fBgit\fR \fBswitch\fR یا \fBgit\fR \fBcheckout\fR را انجام می‌دهد که ضمن حفظ تغییرات محلی در درخت کاری (در صورتی که با تفاوت بین شاخه‌ها تداخل نداشته باشند)، شاخه‌ها را تعویض می‌کند. .SS "pre\-auto\-gc" .sp این قلاب توسط \fBgit\fR \fBgc\fR \fB\-\-auto\fR فراخوانی می‌شود (به \fBgit-gc\fR(1) مراجعه کنید). هیچ پارامتری دریافت نمی‌کند و خروج با وضعیت غیر صفر از این اسکریپت باعث متوقف شدن اجرای \fBgit\fR \fBgc\fR \fB\-\-auto\fR می‌شود. .SS "post\-rewrite" .sp این قلاب توسط دستورهایی فراخوانی می‌شود که کامیت‌ها را بازنویسی می‌کنند (\fBgit-commit\fR(1) هنگامی که با \fB\-\-amend\fR فراخوانی شود و \fBgit-rebase\fR(1)؛ با این حال، ابزارهای بازنویسی کل تاریخچه مانند \fBgit-fast-import\fR(1) یا \m[blue]\fBgit\-filter\-repo\fR\m[]\&\s-2\u[1]\d\s+2 معمولاً آن را فراخوانی نمی‌کنند!). اولین آرگومان آن دستوری را مشخص می‌کند که قلاب را فراخوانی کرده است: در حال حاضر یکی از مقادیر \fBamend\fR یا \fBrebase\fR. آرگومان‌های وابسته به دستور دیگر ممکن است در آینده اضافه شوند. .sp قلاب لیستی از کامیت‌های بازنویسی‌شده را در stdin به فرمت زیر دریافت می‌کند: .sp .if n \{\ .RS 4 .\} .nf SP [ SP ] LF .fi .if n \{\ .RE .\} .sp مقدار \fIextra\-info\fR نیز وابسته به دستور فراخوان است. اگر خالی باشد، کاراکتر SP قبلی نیز حذف می‌شود. در حال حاضر هیچ دستوری مقدار \fIextra\-info\fR ارسال نمی‌کند. .sp قلاب همیشه پس از کپی خودکار یادداشت‌ها (notes) اجرا می‌شود (به "notes\&.rewrite\&." در \fBgit-config\fR(1) مراجعه کنید) و بنابراین به این یادداشت‌ها دسترسی دارد. .sp توضیحات خاص زیر در مورد دستورها اعمال می‌شود: .PP rebase .RS 4 برای عملیات‌های \fIsquash\fR و \fIfixup\fR، تمام کامیت‌هایی که فشرده شده‌اند به عنوان بازنویسی‌شده به کامیت فشرده نهایی فهرست می‌شوند. این بدان معناست که چندین خط وجود خواهند داشت که دارای یک \fInew\-object\-name\fR مشترک هستند. .sp تضمین می‌شود که کامیت‌ها به همان ترتیبی که توسط rebase پردازش شده‌اند فهرست شوند. .RE .SS "sendemail\-validate" .sp این قلاب توسط \fBgit-send-email\fR(1) فراخوانی می‌شود. .sp این قلاب آرگومان‌های خط فرمان زیر را می‌گیرد: ۱. نام فایلی که محتوای ایمیل ارسالی را نگه می‌دارد. ۲. نام فایلی که هدرهای SMTP ایمیل را در خود دارد. .sp هدرهای SMTP دقیقاً به همان روشی ارسال می‌شوند که به عامل انتقال ایمیل (MTA) کاربر ارسال می‌گردند. در واقع، ایمیل ارائه‌شده به MTA کاربر، محتوای $2 و به دنبال آن محتوای $1 است. .sp نمونه‌ای از چند هدر رایج در زیر نشان داده شده است. به حروف بزرگ و کوچک و ساختار چندخطی Tab توجه داشته باشید. .sp .if n \{\ .RS 4 .\} .nf From: Example To: to@example\&.com Cc: cc@example\&.com, A , One , two@example\&.com Subject: PATCH\-STRING .fi .if n \{\ .RE .\} .sp خروج با وضعیت غیر صفر باعث می‌شود \fBgit\fR \fBsend\-email\fR قبل از ارسال هرگونه ایمیل لغو شود. .sp متغیرهای محیطی زیر هنگام اجرای قلاب تنظیم می‌شوند: .PP \fBGIT_SENDEMAIL_FILE_COUNTER\fR .RS 4 شمارنده‌ای بر مبنای ۱ که برای هر فایل حاوی ایمیل ارسالی (به استثنای FIFOها) یکی افزایش می‌یابد. این شمارنده از الگوی شماره‌گذاری سری وصله‌ها پیروی نمی‌کند؛ همواره از ۱ شروع شده و در GIT_SENDEMAIL_FILE_TOTAL خاتمه می‌یابد. .RE .PP \fBGIT_SENDEMAIL_FILE_TOTAL\fR .RS 4 تعداد کل فایل‌هایی که ارسال خواهند شد (به استثنای FIFOها). این شمارنده از الگوی سری وصله‌ها پیروی نمی‌کند؛ صرف‌نظر از وجود یا عدم وجود cover letter، همواره با تعداد فایل‌های ارسالی برابر خواهد بود. .RE .sp این متغیرها برای مثال می‌توانند جهت اعتبارسنجی سری وصله‌ها به کار روند. .sp قلاب نمونهٔ \fBsendemail\-validate\fR که همراه با Git عرضه می‌شود، بررسی می‌کند که تمام وصله‌های ارسالی (به استثنای نامه‌پوششی یا cover letter) بدون تعارض بر روی شاخه پیش‌فرض مخزن بالادست اعمال شوند. بخش‌هایی نیز برای مراحل اعتبارسنجی تکمیلی پس از اعمال تمام وصله‌های یک سری در نظر گرفته شده است. .SS "fsmonitor\-watchman" .sp این قلاب زمانی فراخوانی می‌شود که متغیر پیکربندی \fBcore\&.fsmonitor\fR بر روی \fB\&.git/hooks/fsmonitor\-watchman\fR یا \fB\&.git/hooks/fsmonitor\-watchmanv2\fR (بسته به نسخه قلاب مورد استفاده) تنظیم شده باشد. .sp نسخه ۱ دو آرگومان می‌گیرد: نسخه (1) و زمان سپری‌شده بر حسب نانوثانیه از نیمه‌شب ۱ ژانویه ۱۹۷۰. .sp نسخه ۲ دو آرگومان می‌گیرد: نسخه (2) و یک توکن که برای شناسایی تغییرات از زمان آن توکن استفاده می‌شود. برای watchman این مقدار یک شناسه ساعت (clock id) خواهد بود. این نسخه باید توکن جدید و به دنبال آن یک بایت NUL را قبل از فهرست فایل‌ها در stdout چاپ کند. .sp قلاب باید فهرست تمام فایل‌های موجود در دایرکتوری کاری را که ممکن است از زمان درخواستی تغییر کرده باشند در stdout بنویسد. منطق باید فراگیر باشد تا هیچ تغییر احتمالی را از دست ندهد. مسیرها باید نسبت به ریشهٔ دایرکتوری کاری بوده و با یک کاراکتر NUL از یکدیگر جدا شوند. .sp اشکالی ندارد اگر فایل‌هایی که واقعاً تغییر نکرده‌اند نیز در فهرست گنجانده شوند. تمام تغییرات از جمله فایل‌های جدید ایجاد‌شده و حذف‌شده باید لحاظ گردند. در صورت تغییر نام فایل‌ها، هر دو نام قدیمی و جدید باید ذکر شوند. .sp گیت بررسی فایل‌ها و همچنین بررسی دایرکتوری‌ها برای یافتن فایل‌های ردگیری‌نشده (untracked) را بر اساس نام مسیرهای داده‌شده محدود می‌کند. .sp یک روش بهینه‌سازی‌شده برای اینکه به git بگویید «همه فایل‌ها تغییر کرده‌اند»، بازگرداندن نام فایل \fB/\fR است. .sp وضعیت خروج تعیین می‌کند که آیا git از داده‌های قلاب برای محدود کردن جستجوی خود استفاده کند یا خیر. در صورت بروز خطا، به بررسی سنتی تمام فایل‌ها و پوشه‌ها بازمی‌گردد. .SS "p4\-changelist" .sp این قلاب توسط \fBgit\-p4\fR \fBsubmit\fR فراخوانی می‌شود. .sp قلاب \fBp4\-changelist\fR پس از این‌که پیام changelist توسط کاربر ویرایش شد اجرا می‌گردد. با گزینهٔ \fB\-\-no\-verify\fR می‌توان آن را نادیده گرفت. یک پارامتر منفرد می‌گیرد: نام فایلی که متن پیشنهادی changelist را نگه می‌دارد. خروج با وضعیت غیر صفر موجب لغو دستور می‌شود. .sp قلاب مجاز است فایل changelist را ویرایش کند و می‌توان از آن برای استانداردسازی متن به فرمت پروژه استفاده نمود. همچنین می‌توان پس از بازرسی فایل پیام، عملیات Submit را لغو کرد. .sp برای جزئیات بیشتر دستور \fBgit\-p4\fR \fBsubmit\fR \fB\-\-help\fR را اجرا کنید. .SS "p4\-prepare\-changelist" .sp این قلاب توسط \fBgit\-p4\fR \fBsubmit\fR فراخوانی می‌شود. .sp قلاب \fBp4\-prepare\-changelist\fR درست پس از آماده‌سازی پیام پیش‌فرض changelist و قبل از باز شدن ویرایشگر اجرا می‌شود. یک پارامتر دریافت می‌کند: نام فایلی که متن changelist را در خود دارد. خروج با وضعیت غیر صفر از اسکریپت باعث توقف فرآیند خواهد شد. .sp هدف از قلاب ویرایش فایل پیام در جا است و توسط گزینهٔ \fB\-\-no\-verify\fR لغو نمی‌شود. این قلاب حتی در صورت تنظیم بودن \fB\-\-prepare\-p4\-only\fR نیز فراخوانی می‌شود. .sp برای جزئیات بیشتر \fBgit\-p4\fR \fBsubmit\fR \fB\-\-help\fR را اجرا کنید. .SS "p4\-post\-changelist" .sp این قلاب توسط \fBgit\-p4\fR \fBsubmit\fR فراخوانی می‌شود. .sp قلاب \fBp4\-post\-changelist\fR پس از انجام موفقیت‌آمیز ثبت (submit) در P4 فراخوانی می‌شود. پارامتری دریافت نمی‌کند و اساساً برای اعلان و اطلاع‌رسانی است و نمی‌تواند بر نتیجه نهایی اقدام git p4 submit تأثیر بگذارد. .sp برای جزئیات بیشتر \fBgit\-p4\fR \fBsubmit\fR \fB\-\-help\fR را اجرا کنید. .SS "p4\-pre\-submit" .sp این قلاب توسط \fBgit\-p4\fR \fBsubmit\fR فراخوانی می‌شود. هیچ پارامتری دریافت نمی‌کند و هیچ داده‌ای از ورودی استاندارد نمی‌خواند. خروج با وضعیت غیر صفر از این اسکریپت از شروع اجرای \fBgit\-p4\fR \fBsubmit\fR جلوگیری می‌کند. می‌توان آن را با گزینه خط فرمان \fB\-\-no\-verify\fR نادیده گرفت. برای جزئیات \fBgit\-p4\fR \fBsubmit\fR \fB\-\-help\fR را اجرا کنید. .SS "post\-index\-change" .sp این قلاب هنگامی فراخوانی می‌شود که ایندکس (نمایه) در read-cache.c do_write_locked_index نوشته شود. .sp اولین پارامتر ارسالی به قلاب، نشانگری برای به‌روزرسانی دایرکتوری کاری است؛ "1" یعنی دایرکتوری کاری به‌روزرسانی شده و "0" یعنی به‌روزرسانی نشده است. .sp دومین پارامتر ارسالی به قلاب، نشانگری است برای اینکه آیا ایندکس به‌روز شده و بیت skip-worktree ممکن است تغییر کرده باشد یا خیر؛ "1" به معنای احتمال به‌روز شدن بیت‌های skip-worktree است و "0" به معنی عدم تغییر آن‌هاست. .sp هنگام اجرای قلاب فقط یکی از پارامترها باید روی "1" تنظیم باشد. اجرای قلاب با ارسال همزمان "1", "1" امکان‌پذیر نیست. .SH "همچنین ببینید (SEE ALSO)" .sp \fBgit-hook\fR(1) .SH "گیت (GIT)" .sp بخشی از مجموعهٔ \fBgit\fR(1) .SH "یادداشت‌ها (NOTES)" .IP " 1." 4 git-filter-repo .RS 4 \%https://github.com/newren/git-filter-repo .RE