'\" t .\" Title: gitprotocol-capabilities .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026-06-29 .\" Manual: راهنمای گیت .\" Source: Git 2.55.0 .\" Language: Persian .\" .TH "GITPROTOCOL\-CAPABILITIES" "5" "2026\-06\-29" "Git 2\&.55\&.0" "راهنمای گیت" .\" ----------------------------------------------------------------- .\" * 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)" gitprotocol-capabilities \- قابلیت‌های نسخه 0 و 1 پروتکل گیت .SH "خلاصه پروتکل (SYNOPSIS)" .sp .nf .fi .sp .SH "توضیحات (DESCRIPTION)" .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br .sp این سند قابلیت‌های نسخه‌های ۰ و ۱ پروتکل بسته (pack protocol) را شرح می‌دهد. برای نسخه ۲، لطفاً به سند \fBgitprotocol-v2\fR(5) مراجعه کنید. .sp .5v .RE .sp کارسازها (سرورها) باید (SHOULD) از تمام قابلیت‌های تعریف‌شده در این سند پشتیبانی کنند. .sp در نخستین خط از پاسخ اولیه کارساز در هر یک از دستورهای receive\-pack و upload\-pack، پس از اولین مرجع (reference) یک بایت NUL و سپس فهرستی از قابلیت‌های کارساز که با فاصله از هم جدا شده‌اند می‌آید. این قابلیت‌ها به کارساز امکان می‌دهد آنچه را که می‌تواند یا نمی‌تواند پشتیبانی کند به کلاینت اعلام نماید. .sp سپس کلاینت فهرستی از قابلیت‌های مدنظر خود را که با فاصله از یکدیگر جدا شده‌اند ارسال می‌کند. کلاینت «نباید» (MUST NOT) قابلیت‌هایی را که کارساز پشتیبانی از آن‌ها را اعلام نکرده است درخواست کند. .sp کارساز «باید» (MUST) در صورت ارسال قابلیت‌هایی که درک نمی‌کند، خطا را تشخیص داده و عملیات را متوقف سازد. کارساز «نباید» (MUST NOT) قابلیت‌هایی را که کلاینت درخواست کرده و کارساز تبلیغ نموده نادیده بگیرد. در نتیجه این قوانین، کارساز «نباید» قابلیت‌هایی را که نمی‌شناسد تبلیغ کند. .sp قابلیت‌های \fIatomic\fR، \fIreport\-status\fR، \fIreport\-status\-v2\fR، \fIdelete\-refs\fR، \fIquiet\fR و \fIpush\-cert\fR توسط فرایند receive\-pack (ارسال به کارساز / push) ارسال و شناسایی می‌شوند. .sp قابلیت‌های \fIofs\-delta\fR و \fIside\-band\-64k\fR توسط هر دو پروتکل upload\-pack و receive\-pack ارسال و شناسایی می‌شوند. قابلیت‌های \fIagent\fR و \fIsession\-id\fR نیز ممکن است به صورت اختیاری در هر دو پروتکل ارسال گردند. .sp سایر قابلیت‌ها فقط توسط فرایند upload\-pack (دریافت از کارساز / fetch) شناسایی می‌شوند. .SH "MULTI_ACK" .sp قابلیت \fImulti_ack\fR به کارساز اجازه می‌دهد به محض یافتن یک کامیت که بتواند به عنوان مبنای مشترک (common base) بین مجموعه‌های wants و have کلاینت استفاده شود، پاسخ "ACK obj\-id continue" را بازگرداند. .sp با ارسال زودهنگام این پیام، کارساز می‌تواند مانع از پیمایش بیشتر کلاینت در آن شاخه خاص از تاریخچه مخزن شود. کلاینت ممکن است همچنان نیاز داشته باشد شاخه‌های دیگر را پیمایش کرده و خطوط have را برای آن‌ها ارسال کند تا زمانی که کارساز یک برش کامل روی DAG به دست آورد یا کلاینت اعلام "done" کند. .sp بدون multi_ack، کلاینت خطوط have را با ترتیب \-\-date\-order ارسال می‌کند تا زمانی که کارساز یک مبنای مشترک پیدا کند. این بدان معناست که کلاینت خطوط haveای را می‌فرستد که کارساز از قبل می‌داند مشترک هستند، زیرا از نظر زمانی با شاخه دیگری که کارساز هنوز مبنای مشترکی برای آن نیافته، هم‌پوشانی دارند. .sp برای مثال فرض کنید کلاینت کامیت‌هایی با حروف بزرگ دارد که کارساز فاقد آن‌هاست، و کارساز کامیت‌هایی با حروف کوچک دارد که کلاینت فاقد آن‌هاست، مانند نمودار زیر: .sp .if n \{\ .RS 4 .\} .nf +\-\-\-\- u \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- x / +\-\-\-\-\- y / / a \-\- b \-\- c \-\- d \-\- E \-\- F \e +\-\-\- Q \-\- R \-\- S .fi .if n \{\ .RE .\} .sp اگر کلاینت x و y را بخواهد و با گفتن have F,S شروع کند، کارساز نمی‌داند F و S چیستند. سرانجام کلاینت "have d" را اعلام می‌کند و کارساز "ACK d continue" می‌فرستد تا به کلاینت اطلاع دهد پیمایش آن خط را متوقف کند (بنابراین c\-b\-a را ارسال نکند)، اما هنوز کار تمام نشده است و نیاز به یک مبنا برای x دارد. کلاینت با S\-R\-Q ادامه می‌دهد تا به a برسد؛ در این نقطه کارساز یک مبنای مشخص دارد و فرایند خاتمه می‌یابد. .sp بدون multi_ack، کلاینت به هر حال آن زنجیره c\-b\-a را در لابلای S\-R\-Q ارسال می‌کرد. .SH "MULTI_ACK_DETAILED" .sp این افزونه‌ای برای multi_ack است که به کلاینت اجازه می‌دهد وضعیت درون‌حافظه‌ای کارساز را بهتر درک کند. برای اطلاعات بیشتر به بخش "Packfile Negotiation" در \fBgitprotocol-pack\fR(5) مراجعه کنید. .SH "NO\-DONE" .sp این قابلیت فقط باید با پروتکل smart HTTP استفاده شود. اگر هر دو قابلیت multi_ack_detailed و no\-done وجود داشته باشند، فرستنده مجاز است بلافاصله پس از اولین پیام "ACK obj\-id ready" بسته (pack) را ارسال کند. .sp بدون no\-done در پروتکل smart HTTP، نشست کارساز به پایان می‌رسید و کلاینت مجبور بود قبل از ارسال بسته توسط کارساز، یک رفت و برگشت دیگر برای ارسال "done" انجام دهد. no\-done این رفت و برگشت نهایی را حذف کرده و تا حدی تأخیر (latency) را کاهش می‌دهد. .SH "THIN\-PACK" .sp یک «بسته کم‌حجم» (thin pack) بسته‌ای شامل دلتاهایی است که به اشیای مبنایی خارج از بسته اشاره می‌کنند (اما مشخص است که در طرف دریافت‌کننده وجود دارند). این کار می‌تواند ترافیک شبکه را به میزان قابل توجهی کاهش دهد، اما نیازمند آن است که طرف دریافت‌کننده بداند چگونه با افزودن اشیای مبنای گم‌شده، این بسته‌ها را «کامل» (thicken) کند. .sp کارساز upload\-pack زمانی \fIthin\-pack\fR را تبلیغ می‌کند که بتواند یک بسته کم‌حجم تولید و ارسال کند. کلاینت زمانی قابلیت \fIthin\-pack\fR را درخواست می‌کند که بداند چگونه آن را کامل کند، و بدین وسیله به کارساز اعلام می‌کند که توانایی دریافت چنین بسته‌ای را دارد. کلاینت «نباید» (MUST NOT) قابلیت \fIthin\-pack\fR را درخواست کند مگر اینکه بتواند یک thin pack را به یک بسته مستقل و خودکفا تبدیل نماید. .sp از سوی دیگر، به طور پیش‌فرض فرض می‌شود که receive\-pack قادر به پردازش بسته‌های کم‌حجم است، اما می‌تواند با اعلام قابلیت \fIno\-thin\fR از کلاینت بخواهد از این ویژگی استفاده نکند. در صورتی که کارساز قابلیت \fIno\-thin\fR را اعلام کند، کلاینت «نباید» (MUST NOT) بسته کم‌حجم ارسال نماید. .sp دلایل این عدم تقارن، تاریخی است. برنامه receive\-pack تا پس از ابداع thin pack وجود نداشت، بنابراین از لحاظ تاریخی پیاده‌سازی مرجع receive\-pack همیشه thin pack را درک می‌کرد. اضافه شدن قابلیت \fIno\-thin\fR در ادامه به receive\-pack اجازه داد تا این ویژگی را با حفظ سازگاری رو به عقب غیرفعال کند. .SH "SIDE\-BAND, SIDE\-BAND\-64K" .sp این قابلیت به این معنی است که کارساز می‌تواند گزارش‌های پیشرفت چندگانه (multiplexed) و اطلاعات خطا را به صورت درهم‌آمیخته با خود پرونده بسته (packfile) ارسال کند و کلاینت قادر به درک آن است. .sp این دو گزینه مانعةالجمع (mutually exclusive) هستند. یک کلاینت مدرن همیشه \fIside\-band\-64k\fR را ترجیح می‌دهد. .sp هر دو حالت نشان می‌دهند که داده‌های packfile به صورت قطعاتی حداکثر تا ۱۰۰۰ بایت در حالت \fIside_band\fR یا ۶۵۵۲۰ بایت در حالت \fIside_band_64k\fR جاری‌سازی (stream) می‌شوند. هر بسته شامل یک پیشوند ۴ بایتی pkt\-line برای طول داده درون بسته، یک بایت کد جریان (stream code) و سپس داده‌های واقعی است. .sp کد جریان می‌تواند یکی از موارد زیر باشد: .sp .if n \{\ .RS 4 .\} .nf 1 \- داده‌های بسته (pack data) 2 \- پیام‌های پیشرفت (progress messages) 3 \- پیام خطای مهلک پیش از توقف جریان (fatal error message) .fi .if n \{\ .RE .\} .sp قابلیت "side\-band\-64k" به عنوان راهکاری برای کلاینت‌های جدیدتر پدید آمد تا بتوانند بسته‌های بسیار بزرگ‌تر و تقریباً پر را درخواست کنند، در حالی که سازگاری رو به عقب برای کلاینت‌های قدیمی‌تر حفظ شود. .sp علاوه بر این، در side\-band با پیام‌های حداکثر ۱۰۰۰ بایتی، در واقع ۹۹۹ بایت بار داده (payload) و ۱ بایت برای کد جریان اختصاص دارد. در side\-band\-64k نیز به همین ترتیب، حداکثر ۶۵۵۱۹ بایت داده و ۱ بایت برای کد جریان وجود دارد. .sp کلاینت «باید» (MUST) فقط یکی از "side\-band" یا "side\-band\-64k" را ارسال کند. در صورتی که کلاینت هر دو را درخواست نماید، کارساز «باید» (MUST) آن را به عنوان خطا تشخیص دهد. .SH "OFS\-DELTA" .sp کارساز می‌تواند PACKv2 را با دلتایی ارسال کند که به جای obj\-id، بر اساس موقعیت در بسته (offset) به شیء مبنای خود اشاره دارد و کلاینت قادر به درک آن است. به عبارت دیگر، آن‌ها می‌توانند OBJ_OFS_DELTA (معروف به نوع ۶) را در یک packfile ارسال کنند یا بخوانند. .SH "AGENT" .sp کارساز ممکن است به صورت اختیاری قابلیتی به فرم \fBagent=X\fR ارسال کند تا به کلاینت اطلاع دهد که کارساز نسخه \fBX\fR را اجرا می‌کند. کلاینت نیز می‌تواند به صورت اختیاری با ارسال قابلیت \fBagent=Y\fR رشته عامل (agent) خود را بازگرداند (اما اگر کارساز به قابلیت agent اشاره نکرده باشد، کلاینت «نباید» این کار را انجام دهد). رشته‌های \fBX\fR و \fBY\fR می‌توانند شامل هر نویسه اسکی قابل چاپ به جز فاصله باشند (یعنی محدوده بایتی 32 < x < 127) و معمولاً به صورت "package/version" (مانند "git/1.8.3.1") هستند. رشته‌های عامل صرفاً جنبه اطلاع‌رسانی برای آمارگیری و اشکال‌زدایی دارند و «نباید» (MUST NOT) برای استنتاج برنامه‌نویسی‌شده از وجود یا عدم وجود ویژگی‌های خاص استفاده شوند. .SH "OBJECT\-FORMAT" .sp این قابلیت که یک الگوریتم درهم‌سازی (hash algorithm) را به عنوان آرگومان می‌گیرد، نشان می‌دهد که کارساز از الگوریتم‌های درهم‌سازی داده‌شده پشتیبانی می‌کند. این قابلیت ممکن است چند بار ارسال شود؛ در این صورت، اولین مورد ذکرشده همان مقداری است که در اعلان مراجع (ref advertisement) استفاده می‌شود. .sp هنگامی که توسط کلاینت ارائه شود، نشان می‌دهد که قصد دارد از الگوریتم درهم‌سازی داده‌شده برای ارتباط استفاده کند. الگوریتم ارائه‌شده باید یکی از الگوریتم‌های پشتیبانی‌شده توسط کارساز باشد. .sp اگر این قابلیت ارائه نشود، فرض بر این است که تنها الگوریتم پشتیبانی‌شده SHA\-1 است. .SH "SYMREF" .sp این قابلیت پارامتریک برای اطلاع دادن به گیرنده در این مورد به کار می‌رود که کدام مرجع نمادین (symbolic ref) به کدام مرجع اشاره می‌کند؛ برای مثال، "symref=HEAD:refs/heads/master" به گیرنده می‌گوید که HEAD به master اشاره دارد. این قابلیت می‌تواند برای نمایش چندین symref تکرار شود. .sp کارسازها در صورتی که HEAD یکی از مراجع در حال ارسال باشد، «باید» (SHOULD) این قابلیت را برای مرجع نمادین HEAD بگنجانند. .sp کلاینت‌ها «می‌توانند» (MAY) از پارامترهای این قابلیت برای انتخاب شاخه اولیه مناسب هنگام کلون کردن یک مخزن استفاده کنند. .SH "SHALLOW" .sp این قابلیت دستورهای "deepen"، "shallow" و "unshallow" را به پروتکل fetch\-pack/upload\-pack اضافه می‌کند تا کلاینت‌ها بتوانند کلون‌های کم‌عمق (shallow clones) را درخواست کنند. .SH "DEEPEN\-SINCE" .sp این قابلیت دستور "deepen\-since" را به پروتکل fetch\-pack/upload\-pack اضافه می‌کند تا کلاینت بتواند کلون‌های کم‌عمقی را درخواست کند که به جای عمق، بر اساس یک زمان مشخص برش خورده‌اند. از نظر درونی این کار معادل اجرای "rev\-list \-\-max\-age=" در سمت کارساز است. "deepen\-since" نمی‌تواند همراه با "deepen" استفاده شود. .SH "DEEPEN\-NOT" .sp این قابلیت دستور "deepen\-not" را به پروتکل fetch\-pack/upload\-pack اضافه می‌کند تا کلاینت بتواند کلون‌های کم‌عمقی را درخواست کند که به جای عمق، در یک بازنگری (revision) خاص برش خورده‌اند. از نظر درونی این کار معادل اجرای "rev\-list \-\-not " در سمت کارساز است. "deepen\-not" نمی‌تواند همراه با "deepen" استفاده شود، اما می‌تواند با "deepen\-since" به کار رود. .SH "DEEPEN\-RELATIVE" .sp در صورت درخواست این قابلیت توسط کلاینت، معناشناسی دستور "deepen" تغییر می‌کند. آرگومان "depth" به جای عمق نسبت به مراجع دوردست، عمق نسبت به مرز کم‌عمق فعلی خواهد بود. .SH "NO\-PROGRESS" .sp کلاینت با دستور "git clone \-q" یا دستوری مشابه شروع به کار کرده و نیازی به باند جانبی ۲ (side band 2) ندارد. در واقع کلاینت اعلام می‌کند که «من تمایلی به دریافت جریان ۲ روی sideband ندارم، بنابراین آن را برای من ارسال نکنید و اگر ارسال کنید، آن را نادیده گرفته و دور می‌ریزم». با این حال، کانال جانبی ۳ همچنان برای پاسخ‌های خطا استفاده می‌شود. .SH "INCLUDE\-TAG" .sp قابلیت \fIinclude\-tag\fR مربوط به ارسال برچسب‌های دارای یادداشت (annotated tags) در صورتی است که اشیایی که به آن‌ها اشاره دارند در حال ارسال باشند. اگر شیئی را برای کلاینت بسته‌بندی کنیم و یک شیء برچسب دقیقاً به همان شیء اشاره کند، شیء برچسب را نیز بسته‌بندی می‌کنیم. به طور کلی این قابلیت به کلاینت اجازه می‌دهد تا تمام برچسب‌های یادداشت‌دار جدید را هنگام دریافت یک شاخه، در قالب یک اتصال شبکه واحد دریافت کند. .sp کلاینت‌ها «می‌توانند» (MAY) زمانی که کارساز این قابلیت را تبلیغ می‌کند، همیشه include\-tag را در درخواست ارسال کنند. تصمیم کلاینت برای درخواست include\-tag صرفاً به تمایل کلاینت برای دریافت داده‌های برچسب بستگی دارد، بدون توجه به اینکه آیا کارساز اشیایی را در فضای نام refs/tags/* تبلیغ کرده است یا خیر. .sp کارسازها در صورتی که شیء مرجع برچسب بسته‌بندی شده باشد و کلاینت include\-tags را درخواست کرده باشد، «باید» (MUST) برچسب‌ها را بسته‌بندی کنند. .sp کلاینت‌ها «باید» (MUST) برای حالتی که کارساز include\-tag را نادیده گرفته و برچسب‌ها را در بسته ارسال نکرده است آماده باشند. در چنین مواردی کلاینت «باید» (SHOULD) یک درخواست fetch بعدی برای به دست آوردن برچسب‌هایی که در غیر این صورت include\-tag به کلاینت می‌داد، ارسال کند. .sp کارساز در صورت پشتیبانی از include\-tag «باید» (SHOULD) آن را ارسال کند، بدون در نظر گرفتن اینکه آیا برچسبی در دسترس هست یا خیر. .SH "REPORT\-STATUS" .sp فرایند receive\-pack می‌تواند قابلیت \fIreport\-status\fR را دریافت کند که نشان می‌دهد کلاینت گزارشی از اتفاقات پس از بارگذاری packfile و به‌روزرسانی مراجع می‌خواهد. اگر کلاینت ارسال‌کننده (pushing client) این قابلیت را درخواست کند، پس از باز کردن بسته و به‌روزرسانی مراجع، کارساز با وضعیت موفقیت‌آمیز بودن باز شدن بسته و به‌روزرسانی تک‌تک مراجع پاسخ خواهد داد. اگر هر یک از آن‌ها ناموفق باشد، پیام خطایی بازمی‌گرداند. برای پیام‌های نمونه به \fBgitprotocol-pack\fR(5) مراجعه کنید. .SH "REPORT\-STATUS\-V2" .sp قابلیت \fIreport\-status\-v2\fR با افزودن دستورالعمل‌های جدید "option"، قابلیت \fIreport\-status\fR را گسترش می‌دهد تا از مراجع بازنویسی‌شده توسط قلاب (hook) موسوم به "proc\-receive" پشتیبانی کند. قلاب "proc\-receive" ممکن است فرمانی را برای یک شبه‌مرجع (pseudo\-reference) پردازش کند که مرجعی با نام دیگر، new\-oid و old\-oid متفاوت ایجاد یا به‌روزرسانی نماید، در حالی که قابلیت \fIreport\-status\fR قادر به گزارش‌دهی برای چنین حالتی نیست. برای جزئیات به \fBgitprotocol-pack\fR(5) مراجعه کنید. .SH "DELETE\-REFS" .sp در صورتی که کارساز قابلیت \fIdelete\-refs\fR را بازگرداند، به این معنی است که قادر به پذیرش مقدار صفر (zero\-id) به عنوان مقدار هدف برای به‌روزرسانی مرجع است. این قابلیت توسط کلاینت بازگردانده نمی‌شود، بلکه صرفاً به کلاینت اطلاع می‌دهد که می‌تواند مقادیر zero\-id را برای حذف مراجع ارسال کند. .SH "QUIET" .sp اگر کارساز receive\-pack قابلیت \fIquiet\fR را تبلیغ کند، قادر به متوقف کردن خروجی پیشرفت خوانا برای انسان است که در غیر این صورت هنگام پردازش بسته دریافتی نمایش داده می‌شد. کلاینت send\-pack باید در صورتی که گزارش پیشرفت محلی نیز متوقف شده است (مثلاً از طریق \fBpush\fR \fB\-q\fR، یا اگر خروجی خطای استاندارد stderr به tty متصل نباشد)، با قابلیت \fIquiet\fR پاسخ دهد تا گزارش پیشرفت در سمت کارساز را سرکوب کند. .SH "ATOMIC" .sp اگر کارساز قابلیت \fIatomic\fR را ارسال کند، قادر به پذیرش ارسال‌های اتمیک (atomic pushes) است. اگر کلاینت ارسال‌کننده این قابلیت را درخواست کند، کارساز مراجع را در یک تراکنش اتمیک به‌روزرسانی خواهد کرد؛ به این معنی که یا همه مراجع به‌روزرسانی می‌شوند یا هیچ‌کدام. .SH "PUSH\-OPTIONS" .sp اگر کارساز قابلیت \fIpush\-options\fR را ارسال کند، قادر است گزینه‌های push را پس از ارسال دستورهای به‌روزرسانی اما پیش از جاری‌سازی packfile بپذیرد. در صورتی که کلاینت ارسال‌کننده این قابلیت را درخواست کند، کارساز این گزینه‌ها را به قلاب‌های pre\-receive و post\-receive که این درخواست push را پردازش می‌کنند، منتقل خواهد کرد. .SH "ALLOW\-TIP\-SHA1\-IN\-WANT" .sp اگر کارساز upload\-pack این قابلیت را تبلیغ کند، fetch\-pack ممکن است خطوط "want" را با نام اشیایی ارسال کند که در کارساز وجود دارند اما توسط upload\-pack تبلیغ نشده‌اند. به دلایل تاریخی، نام این قابلیت شامل "sha1" است. نام‌های اشیاء همیشه با استفاده از قالب شیء توافق‌شده از طریق قابلیت \fIobject\-format\fR مشخص می‌شوند. .SH "ALLOW\-REACHABLE\-SHA1\-IN\-WANT" .sp اگر کارساز upload\-pack این قابلیت را تبلیغ کند، fetch\-pack می‌تواند خطوط "want" را با نام اشیایی که در کارساز قابل دسترسی هستند اما مستقیماً توسط upload\-pack تبلیغ نشده‌اند ارسال کند. به دلایل تاریخی، نام این قابلیت شامل "sha1" است. نام‌های اشیاء همیشه با استفاده از قالب شیء توافق‌شده از طریق قابلیت \fIobject\-format\fR ارائه می‌شوند. .SH "PUSH\-CERT=" .sp کارساز receive\-pack که این قابلیت را تبلیغ می‌کند، مایل به پذیرش گواهی push امضاشده است و درخواست می‌کند که در گواهی push گنجانده شود. کلاینت send\-pack «نباید» (MUST NOT) بسته push\-cert ارسال کند مگر اینکه کارساز receive\-pack این قابلیت را تبلیغ کرده باشد. .SH "FILTER" .sp در صورتی که کارساز upload\-pack قابلیت \fIfilter\fR را تبلیغ کند، fetch\-pack می‌تواند دستورهای "filter" را برای درخواست یک کلون جزئی (partial clone) یا دریافت جزئی (partial fetch) ارسال کند و از کارساز بخواهد که اشیای مختلفی را از packfile حذف کند. .SH "SESSION\-ID=" .sp کارساز ممکن است یک شناسه نشست (session ID) را تبلیغ کند که می‌تواند برای شناسایی این فرایند در میان چندین درخواست استفاده شود. کلاینت نیز می‌تواند شناسه نشست خود را به کارساز اعلام کند. .sp شناسه‌های نشست باید برای یک فرایند مشخص، یکتا باشند. آن‌ها باید در یک packet\-line جا شوند و نباید حاوی نویسه‌های غیرقابل‌چاپ یا فاصله باشند. پیاده‌سازی فعلی از شناسه‌های نشست trace2 استفاده می‌کند (برای جزئیات به \m[blue]\fBapi\-trace2\fR\m[]\&\s-2\u[1]\d\s+2 مراجعه کنید)، اما این ممکن است تغییر کند و کاربرانِ شناسه نشست نباید به این موضوع اتکا کنند. .SH "گیت (GIT)" .sp بخشی از مجموعه \fBgit\fR(1) .SH "یادداشت‌ها (NOTES)" .IP " 1." 4 api-trace2 .RS 4 \%file:///usr/share/doc/git-doc/technical/api-trace2.html .RE