'\" t .\" Title: git-fast-import .\" 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 "GIT\-FAST\-IMPORT" "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-fast-import \- واردکننده سریع داده‌های گیت از سایر سامانه‌های کنترل نسخه .SH "خلاصه دستور (SYNOPSIS)" .sp .nf frontend | \fIgit fast\-import\fR [<\fIگزینه‌ها\fR>] .fi .sp .SH "توضیحات (DESCRIPTION)" .sp این برنامه معمولاً چیزی نیست که کاربر نهایی بخواهد مستقیماً آن را اجرا کند\&. بیشتر کاربران نهایی مایلند از یکی از برنامه‌های پیشانی (frontend) موجود استفاده کنند که نوع خاصی از منبع خارجی را تجزیه کرده و محتویات ذخیره‌شده در آن را به \fIgit fast\-import\fR تحویل می‌دهد\&. .sp دستور fast\-import یک جریان ترکیبی از دستور/داده را از ورودی استاندارد می‌خواند و یک یا چند فایل بسته (packfile) را مستقیماً در مخزن جاری می‌نویسد\&. هنگامی که EOF در ورودی استاندارد دریافت می‌شود، fast import ارجاع‌های به‌روزشده شاخه و برچسب را می‌نویسد و مخزن جاری را با داده‌های تازه واردشده کاملاً به‌روز می‌کند\&. .sp بخش پشتیبان (backend) ابزار fast\-import می‌تواند داده‌ها را به درون یک مخزن خالی (مخزنی که پیش‌تر توسط \fIgit init\fR مقداردهی اولیه شده است) وارد کند یا یک مخزن پرشده موجود را به‌صورت افزایشی به‌روزرسانی نماید\&. اینکه آیا واردسازی افزایشی از یک منبع خارجی خاص پشتیبانی می‌شود یا خیر، به برنامه پیشانی مورد استفاده بستگی دارد\&. .SH "گزینه‌ها (OPTIONS)" .PP \-\-force .RS 4 به‌روزرسانی شاخه‌های تغییریافته موجود را اجبار می‌کند، حتی اگر این کار سبب از دست رفتن کامیت‌ها شود (زیرا کامیت جدید شامل کامیت قدیمی نیست)\&. .RE .PP \-\-quiet .RS 4 خروجی نمایش‌داده‌شده توسط \-\-stats را غیرفعال می‌کند و باعث می‌شود fast\-import معمولاً در صورت موفقیت‌آمیز بودن، بی‌صدا باشد\&. با این حال، اگر جریان واردسازی دارای دستورالعمل‌هایی باشد که برای نمایش خروجی به کاربر در نظر گرفته شده‌اند (مانند دستورالعمل‌های \fBprogress\fR)، پیام‌های مربوطه همچنان نمایش داده خواهند شد\&. .RE .PP \-\-stats .RS 4 برخی آمارهای اولیه را درباره اشیایی که fast\-import ایجاد کرده است، فایل‌های بسته‌ای که در آن‌ها ذخیره شده‌اند، و میزان حافظه استفاده‌شده توسط fast\-import در طول این اجرا نمایش می‌دهد\&. نمایش این خروجی در حال حاضر پیش‌فرض است، اما می‌توان آن را با \-\-quiet غیرفعال کرد\&. .RE .PP \-\-allow\-unsafe\-features .RS 4 بسیاری از گزینه‌های خط فرمان را می‌توان به عنوان بخشی از خود جریان fast\-import با استفاده از دستورات \fBfeature\fR یا \fBoption\fR ارائه داد\&. با این حال، برخی از این گزینه‌ها ناامن هستند (برای مثال، به fast\-import اجازه می‌دهند به سیستم فایل خارج از مخزن دسترسی داشته باشد)\&. این گزینه‌ها به‌طور پیش‌فرض غیرفعال هستند، اما می‌توان با ارائه این گزینه در خط فرمان اجازه استفاده از آن‌ها را صادر کرد\&. این موضوع در حال حاضر تنها بر دستورات ویژگیِ \fBexport\-marks\fR، \fBimport\-marks\fR و \fBimport\-marks\-if\-exists\fR تأثیر می‌گذارد\&. .sp این گزینه را تنها در صورتی فعال کنید که به برنامه تولیدکننده جریان fast\-import اعتماد دارید! این گزینه به‌طور خودکار برای برنامه‌های کمکی دوردست (remote\-helpers) که از قابلیت \fBimport\fR استفاده می‌کنند فعال می‌شود، چرا که آن‌ها از قبل برای اجرای کد خود مورد اعتماد هستند\&. .RE .PP \fB\-\-signed\-tags=\fR\fI\fR .RS 4 نحوه رسیدگی به برچسب‌های امضاشده را مشخص می‌کند\&. رفتاری مشابه با \fB\-\-signed\-commits=\fR\fI\fR در زیر دارد\&. مانند کامیت‌های امضاشده، حالت پیش‌فرض \fBverbatim\fR است\&. .RE .PP \fB\-\-signed\-commits=\fR\fI\fR .RS 4 نحوه رسیدگی به کامیت‌های امضاشده را مشخص می‌کند\&. حالت‌های زیر پشتیبانی می‌شوند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBverbatim\fR، که پیش‌فرض است، امضاهای کامیت را در سکوت وارد می‌کند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBwarn\-verbatim\fR آن‌ها را وارد می‌کند، اما یک هشدار نمایش می‌دهد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBabort\fR هنگام مواجهه با یک کامیت امضاشده، اجرای این برنامه را متوقف می‌کند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBstrip\fR در سکوت کامیت‌ها را بدون امضا می‌کند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBwarn\-strip\fR آن‌ها را بدون امضا می‌کند، اما یک هشدار نمایش می‌دهد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBstrip\-if\-invalid\fR امضاها را بررسی می‌کند و چنانچه نامعتبر باشند، آن‌ها را حذف کرده و یک هشدار نمایش می‌دهد\&. اعتبارسنجی به همان روشی انجام می‌شود که در \fBgit-verify-commit\fR(1) انجام می‌گیرد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBsign\-if\-invalid\fR[\fB=\fR\fI\fR]، مشابه \fBstrip\-if\-invalid\fR، امضاهای کامیت را بررسی می‌کند و امضاهای نامعتبر را با امضاهای تازه ایجادشده جایگزین می‌نماید\&. امضاهای معتبر دست‌نخورده باقی می‌مانند\&. اگر \fI\fR ارائه شود، از آن کلید برای امضا استفاده می‌شود؛ در غیر این صورت از کلید امضای پیش‌فرض پیکربندی‌شده استفاده خواهد شد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBabort\-if\-invalid\fR هنگام مواجهه با یک کامیت امضاشده که اعتبارسنجی آن امکان‌پذیر نباشد، اجرای این برنامه را متوقف خواهد کرد\&. .RE .RE .SS "گزینه‌های برنامه‌های پیشانی (Options for Frontends)" .PP \-\-cat\-blob\-fd= .RS 4 پاسخ‌های مربوط به پرس‌وجوهای \fBget\-mark\fR، \fBcat\-blob\fR و \fBls\fR را به جای \fBstdout\fR در توصیف‌کننده فایل می‌نویسد\&. این کار اجازه می‌دهد خروجی \fBprogress\fR که برای کاربر نهایی در نظر گرفته شده است، از سایر خروجی‌ها تفکیک شود\&. .RE .PP \-\-date\-format= .RS 4 نوع تاریخ‌هایی را که برنامه پیشانی در دستورات \fBauthor\fR، \fBcommitter\fR و \fBtagger\fR به fast\-import ارائه می‌دهد مشخص می‌کند\&. برای جزئیات بیشتر درباره قالب‌های پشتیبانی‌شده و نحو آن‌ها، بخش \(lqقالب‌های تاریخ (Date Formats)\(rq در ادامه را ببینید\&. .RE .PP \-\-done .RS 4 چنانچه دستور \fBdone\fR در انتهای جریان وجود نداشته باشد، با خطا پایان می‌یابد\&. این گزینه می‌تواند برای تشخیص خطاهایی که باعث پایان زودهنگام برنامه پیشانی پیش از آغاز نوشتن جریان می‌شوند مفید باشد\&. .RE .SS "مکان‌های فایل‌های نشان (Locations of Marks Files)" .PP \-\-export\-marks= .RS 4 پس از اتمام کار، جدول نشان‌های داخلی را در تخلیه می‌کند\&. نشان‌ها در هر خط به صورت \fB:markid\fR \fBSHA\-1\fR نوشته می‌شوند\&. برنامه‌های پیشانی می‌توانند از این فایل برای اعتبارسنجی واردسازی‌ها پس از تکمیل، یا ذخیره جدول نشان‌ها در طول اجراهای افزایشی استفاده کنند\&. از آنجا که تنها در زمان نقطه بازرسی (یا تکمیل کار) باز و کوتاه (truncate) می‌شود، همان مسیر را می‌توان با اطمینان به \-\-import\-marks نیز داد\&. .RE .PP \-\-import\-marks= .RS 4 پیش از پردازش هر ورودی، نشان‌های مشخص‌شده در را بارگذاری می‌کند\&. فایل ورودی باید وجود داشته باشد، قابل خواندن باشد، و از همان قالبی استفاده کند که توسط \-\-export\-marks تولید می‌شود\&. برای وارد کردن بیش از یک مجموعه نشان، می‌توان گزینه‌های متعددی را مشخص کرد\&. اگر یک نشان با مقادیر متفاوتی تعریف شده باشد، مقدار آخرین فایل اولویت خواهد داشت\&. .RE .PP \-\-import\-marks\-if\-exists= .RS 4 مشابه با \-\-import\-marks است، اما به جای ایجاد خطا، در صورتی که فایل وجود نداشته باشد در سکوت از آن صرف‌نظر می‌کند\&. .RE .PP \-\-relative\-marks, \-\-no\-relative\-marks .RS 4 پس از مشخص کردن \-\-relative\-marks، مسیرهای مشخص‌شده با \-\-import\-marks= و \-\-export\-marks= نسبت به یک دایرکتوری داخلی در مخزن جاری، نسبی در نظر گرفته می‌شوند\&. در git\-fast\-import این بدان معناست که مسیرها نسبت به دایرکتوری \&.git/info/fast\-import نسبی هستند\&. با این حال، سایر واردکننده‌ها ممکن است از مکان متفاوتی استفاده کنند\&. .sp نشان‌های نسبی و غیرنسبی را می‌توان با درهم‌آمیختن گزینه‌های \-\-(no\-)\-relative\-marks با گزینه‌های \-\-(import|export)\-marks= ترکیب کرد\&. .RE .SS "بازنویسی زیرماژول (Submodule Rewriting)" .PP \-\-rewrite\-submodules\-from=:, \-\-rewrite\-submodules\-to=: .RS 4 شناسه‌های شیء (object IDs) را برای زیرماژول مشخص‌شده توسط ، از مقادیر استفاده‌شده در مبدأ به مقادیر استفاده‌شده در مقصد بازنویسی می‌کند\&. نشان‌های مبدأ (from) باید توسط \fBgit\fR \fBfast\-export\fR ایجاد شده باشند، و نشان‌های مقصد (to) باید توسط \fBgit\fR \fBfast\-import\fR هنگام واردسازی همان زیرماژول ایجاد شده باشند\&. .sp پارامتر می‌تواند هر رشته دلخواهی باشد که فاقد نویسه دونقطه است، اما هنگام مشخص کردن نشان‌های متناظر باید از مقدار یکسانی در هر دو گزینه استفاده شود\&. می‌توان زیرماژول‌های متعددی را با مقادیر متفاوتی برای مشخص کرد\&. استفاده نکردن از این گزینه‌ها در جفت‌های متناظر یک خطا به شمار می‌آید\&. .sp این گزینه‌ها در وهله اول هنگام تبدیل یک مخزن از یک الگوریتم درهم‌سازی به الگوریتمی دیگر مفید هستند؛ بدون آن‌ها، اگر fast\-import با یک زیرماژول روبه‌رو شود با شکست مواجه خواهد شد، چرا که راهی برای نوشتن شناسه شیء در الگوریتم درهم‌سازی جدید ندارد\&. .RE .SS "تنظیم کارایی و فشرده‌سازی (Performance and Compression Tuning)" .PP \-\-active\-branches= .RS 4 حداکثر تعداد شاخه‌هایی که می‌توان هم‌زمان فعال نگه داشت\&. برای جزئیات، بخش \(lqمصرف حافظه (MEMORY UTILIZATION)\(rq در زیر را ببینید\&. مقدار پیش‌فرض ۵ است\&. .RE .PP \-\-big\-file\-threshold= .RS 4 حداکثر اندازه حبابی (blob) که fast\-import تلاش خواهد کرد برای آن دلتا بسازد، بیان‌شده به بایت\&. مقدار پیش‌فرض 512m (۵۱۲ مبی‌بایت) است\&. برخی از واردکننده‌ها ممکن است در سیستم‌هایی با حافظه محدود بخواهند این مقدار را کاهش دهند\&. .RE .PP \-\-depth= .RS 4 حداکثر عمق دلتا، برای دلتاسازی حباب و درخت\&. مقدار پیش‌فرض ۵۰ است\&. .RE .PP \-\-export\-pack\-edges= .RS 4 پس از ایجاد یک فایل بسته (packfile)، خطی از داده‌ها را در چاپ می‌کند که نام فایل بسته و آخرین کامیت در هر شاخه‌ای را که در آن فایل بسته نوشته شده است فهرست می‌کند\&. این اطلاعات ممکن است پس از واردسازی پروژه‌هایی که کل مجموعه اشیاء آن‌ها از محدودیت ۴ گیبی‌بایتیِ فایل بسته فراتر می‌رود، مفید باشد؛ زیرا این کامیت‌ها را می‌توان به عنوان نقاط لبه در حین فراخوانی‌های \fIgit pack\-objects\fR به کار برد\&. .RE .PP \-\-max\-pack\-size= .RS 4 حداکثر اندازه هر فایل بسته خروجی\&. مقدار پیش‌فرض نامحدود است\&. .RE .PP fastimport\&.unpackLimit .RS 4 به \fBgit-config\fR(1) مراجعه کنید\&. .RE .SH "کارایی (PERFORMANCE)" .sp طراحی fast\-import به آن امکان می‌دهد پروژه‌های بزرگ را با کمترین میزان مصرف حافظه و زمان پردازش وارد کند\&. با فرض اینکه فرانت‌اند بتواند پابه‌پای fast\-import پیش رود و جریانی مداوم از داده‌ها را به آن تغذیه کند، زمان واردسازی برای پروژه‌هایی با بیش از ۱۰ سال تاریخچه و حاوی بیش از ۱۰۰٬۰۰۰ کامیت مجزا، معمولاً تنها در ۱ تا ۲ ساعت روی سخت‌افزاری کاملاً متوسط (حدود ۲٬۰۰۰ دلار در سال ۲۰۰۷) به پایان می‌رسد\&. .sp بیشتر گلوگاه‌ها در دسترسی به داده‌های مبدأ خارجی (مبدأ صرفاً نمی‌تواند بازبینی‌ها را به اندازه کافی سریع استخراج کند) یا ورودی/خروجی دیسک (fast\-import با همان سرعتی که دیسک داده‌ها را می‌پذیرد می‌نویسد) رخ می‌دهند\&. در صورتی که داده‌های مبدأ روی درایوی متفاوت از مخزن مقصد گیت ذخیره شده باشند (به دلیل تداخل کمتر در ورودی/خروجی)، فرایند واردسازی سریع‌تر اجرا خواهد شد\&. .SH "هزینه توسعه (DEVELOPMENT COST)" .sp یک فرانت‌اند معمولی برای fast\-import معمولاً در حدود ۲۰۰ خط کد Perl/Python/Ruby است\&. بیشتر توسعه‌دهندگان توانسته‌اند تنها در عرض چند ساعت واردکننده‌هایی کارآمد ایجاد کنند، حتی با وجود اینکه این نخستین مواجهه آن‌ها با fast\-import و گاهی حتی با گیت بوده است\&. با توجه به اینکه بیشتر ابزارهای تبدیل یک‌بارمصرف هستند (یک بار استفاده می‌شوند و دیگر به سراغ آن‌ها بازنمی‌گردند)، این یک وضعیت ایده‌آل است\&. .SH "عملیات موازی (PARALLEL OPERATION)" .sp همانند \fIgit push\fR یا \fIgit fetch\fR، واردسازی‌های مدیریت‌شده توسط fast\-import را می‌توان با خیال راحت در کنار فراخوانی‌های موازی \fBgit\fR \fBrepack\fR \fB\-a\fR \fB\-d\fR یا \fBgit\fR \fBgc\fR، یا هر عملیات دیگر گیت (از جمله \fIgit prune\fR، زیرا اشیاء شل هرگز توسط fast\-import استفاده نمی‌شوند) اجرا کرد\&. .sp ابزار fast\-import ارجاعات شاخه یا برچسبی را که فعالانه در حال وارد کردن آن‌هاست قفل نمی‌کند\&. پس از واردسازی، در طول مرحله به‌روزرسانی ارجاع، fast\-import هر یک از ارجاعات موجود شاخه را بررسی می‌کند تا مطمئن شود به‌روزرسانی از نوع رو به جلو (fast\-forward) خواهد بود (کامیت ذخیره‌شده در ارجاع در تاریخچه جدید کامیتی که قرار است نوشته شود گنجانده شده باشد)\&. اگر به‌روزرسانی از نوع رو به جلو نباشد، fast\-import از به‌روزرسانی آن ارجاع صرف‌نظر می‌کند و در عوض یک پیام هشدار چاپ می‌نماید\&. ابزار fast\-import همیشه تلاش خواهد کرد تا تمام ارجاعات شاخه را به‌روزرسانی کند و با اولین شکست متوقف نمی‌شود\&. .sp به‌روزرسانی‌های شاخه را می‌توان با \-\-force اجبار کرد، اما توصیه می‌شود که این کار تنها در مخزنی انجام شود که در غیر این صورت آرام و بدون فعالیت دیگر است\&. استفاده از \-\-force برای واردسازی اولیه در یک مخزن خالی ضروری نیست\&. .SH "بحث فنی (TECHNICAL DISCUSSION)" .sp ابزار fast\-import مجموعه‌ای از شاخه‌ها را در حافظه دنبال می‌کند\&. هر شاخه‌ای را می‌توان در هر نقطه‌ای از فرایند واردسازی با ارسال دستور \fBcommit\fR در جریان ورودی ایجاد یا اصلاح کرد\&. این طراحی به یک برنامه فرانت‌اند اجازه می‌دهد تعداد نامحدودی از شاخه‌ها را به طور هم‌زمان پردازش کند و کامیت‌ها را به ترتیبی که از داده‌های مبدأ در دسترس قرار می‌گیرند تولید نماید\&. این کار همچنین برنامه‌های فرانت‌اند را به میزان قابل توجهی ساده می‌سازد\&. .sp ابزار fast\-import از دایرکتوری کاری فعلی یا هر فایلی درون آن استفاده نکرده و آن را تغییر نمی‌دهد\&. (با این حال، مخزن فعلی گیت را، همان‌طور که توسط \fBGIT_DIR\fR ارجاع داده شده، به‌روزرسانی می‌کند\&.) بنابراین یک فرانت‌اند واردسازی می‌تواند از دایرکتوری کاری برای اهداف خود، مانند استخراج بازبینی‌های فایل از منبع خارجی استفاده کند\&. این نادیده گرفتن دایرکتوری کاری همچنین به fast\-import امکان می‌دهد بسیار سریع اجرا شود، زیرا هنگام جابه‌جایی میان شاخه‌ها نیازی به انجام هیچ عملیات پرهزینه به‌روزرسانی فایل ندارد\&. .SH "قالب ورودی (INPUT FORMAT)" .sp به استثنای داده‌های خام فایل (که گیت آن‌ها را تفسیر نمی‌کند)، قالب ورودی fast\-import مبتنی بر متن (ASCII) است\&. این قالب متنی، توسعه و اشکال‌زدایی برنامه‌های فرانت‌اند را، به‌ویژه هنگامی که از زبانی سطح بالاتر مانند Perl، Python یا Ruby استفاده می‌شود، ساده می‌کند\&. .sp ابزار fast\-import درباره ورودی خود بسیار سخت‌گیر است\&. هر جا در زیر SP می‌گوییم، منظور \fBدقیقاً\fR یک فاصله است\&. به همین ترتیب LF به معنای یک (و فقط یک) خط‌شکن (linefeed) و HT به معنای یک (و فقط یک) تب افقی (horizontal tab) است\&. ارائه نویسه‌های فضای خالی اضافی باعث نتایج غیرمنتظره خواهد شد، مانند نام‌های شاخه یا نام‌های فایل با فاصله‌های ابتدایی یا انتهایی در نامشان، یا توقف زودهنگام fast\-import هنگامی که با ورودی غیرمنتظره روبه‌رو می‌شود\&. .SS "توضیحات جریان (Stream Comments)" .sp به منظور کمک به اشکال‌زدایی فرانت‌اندها، fast\-import هر خطی را که با # (پوند/هش در ASCII) آغاز شود تا انتهای خط شامل \fBLF\fR نادیده می‌گیرد\&. یک خط توضیح می‌تواند شامل هر دنباله‌ای از بایت‌ها باشد که شامل LF نباشد و بنابراین می‌تواند برای گنجاندن هرگونه اطلاعات دقیق اشکال‌زدایی که ممکن است مختص فرانت‌اند بوده و هنگام بررسی جریان داده fast\-import مفید باشد، استفاده شود\&. .SS "قالب‌های تاریخ (Date Formats)" .sp قالب‌های تاریخ زیر پشتیبانی می‌شوند\&. یک فرانت‌اند باید قالبی را که برای این واردسازی به کار خواهد برد، با ارسال نام قالب در گزینه خط فرمان \-\-date\-format= انتخاب کند\&. .PP \fBraw\fR .RS 4 این قالب بومی گیت است و به صورت \fI