'\" t
.\" Title: git-p4
.\" 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 "GIT\-P4" "1" "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)"
git-p4 \- وارد کردن از و ارسال به مخازن Perforce
.SH "خلاصه دستور (SYNOPSIS)"
.sp
.nf
\fIgit p4 clone\fR [<گزینههای\-همگامسازی>] [<گزینههای\-شبیهسازی>] <مسیر\-انبار\-p4>\&...
\fIgit p4 sync\fR [<گزینههای\-همگامسازی>] [<مسیر\-انبار\-p4>\&...]
\fIgit p4 rebase\fR
\fIgit p4 submit\fR [<گزینههای\-ارسال>] [<نام\-شاخه\-اصلی>]
.fi
.sp
.SH "توضیحات (DESCRIPTION)"
.sp
این دستور راهکاری برای تعامل با مخازن p4 با استفاده از گیت فراهم میکند\&.
.sp
با استفاده از \fIgit p4 clone\fR و دادن یک یا چند مسیر انبار (depot) p4 به آن، یک مخزن گیت جدید از یک مخزن موجود p4 بسازید\&. کامیتهای جدید ناشی از تغییرات p4 را با استفاده از \fIgit p4 sync\fR ادغام و وارد کنید\&. دستور \fIsync\fR همچنین برای افزودن شاخههای جدید از سایر مسیرهای انبار p4 استفاده میشود\&. تغییرات گیت را با استفاده از \fIgit p4 submit\fR به p4 برگردانید و ارسال کنید\&. دستور \fIgit p4 rebase\fR یک عملیات sync به علاوه بازنشانی پایه (rebase) شاخه کنونی روی شاخه دوردست بهروزشدهٔ p4 انجام میدهد\&.
.SH "مثالها (EXAMPLES)"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
شبیهسازی یک مخزن:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 clone //depot/path/project
.fi
.if n \{\
.RE
.\}
.sp
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
انجام مقداری کار در مخزن گیت تازه ایجاد شده:
.sp
.if n \{\
.RS 4
.\}
.nf
$ cd project
$ vi foo\&.h
$ git commit \-a \-m "edited foo\&.h"
.fi
.if n \{\
.RE
.\}
.sp
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
بهروزرسانی مخزن گیت با تغییرات اخیر از p4، و بازنشانی پایهٔ (rebase) کار شما روی آن:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 rebase
.fi
.if n \{\
.RE
.\}
.sp
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
ارسال کامیتهای شما به p4:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 submit
.fi
.if n \{\
.RE
.\}
.sp
.RE
.SH "دستورها (COMMANDS)"
.SS "شبیهسازی (Clone)"
.sp
به طور کلی، \fIgit p4 clone\fR برای ایجاد یک دایرکتوری گیت جدید از یک مخزن موجود p4 استفاده میشود:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 clone //depot/path/project
.fi
.if n \{\
.RE
.\}
.sp
.sp
این کار:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 1." 4.2
.\}
یک مخزن خالی گیت در یک زیردایرکتوری به نام
\fIproject\fR
ایجاد میکند\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 2." 4.2
.\}
محتوای کامل نسخهٔ سر (head revision) را از مسیر انبار p4 دادهشده به صورت یک تککامیت در شاخه گیت
\fIrefs/remotes/p4/master\fR
وارد میکند\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 3." 4.2
.\}
یک شاخه محلی به نام
\fImaster\fR
از این شاخهٔ دوردست ایجاد کرده و آن را تحویل (checkout) میگیرد\&.
.RE
.sp
برای بازتولید تمام تاریخچه p4 در گیت، از تغییردهندهٔ \fI@all\fR در مسیر انبار استفاده کنید:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 clone //depot/path/project@all
.fi
.if n \{\
.RE
.\}
.sp
.SS "همگامسازی (Sync)"
.sp
همانطور که توسعه در مخزن p4 ادامه مییابد، آن تغییرات را میتوان با استفاده از دستور زیر در مخزن گیت گنجاند:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 sync
.fi
.if n \{\
.RE
.\}
.sp
.sp
این دستور تغییرات جدید را در p4 پیدا کرده و آنها را به عنوان کامیتهای گیت وارد میکند\&.
.sp
مخازن p4 را میتوان با استفاده از \fIgit p4 sync\fR به یک مخزن موجود گیت نیز افزود:
.sp
.if n \{\
.RS 4
.\}
.nf
$ mkdir repo\-git
$ cd repo\-git
$ git init
$ git p4 sync //path/in/your/perforce/depot
.fi
.if n \{\
.RE
.\}
.sp
.sp
این کار انبار مشخصشده را در \fIrefs/remotes/p4/master\fR در یک مخزن موجود گیت وارد میکند\&. گزینهٔ \fB\-\-branch\fR میتواند برای تعیین یک شاخهٔ متفاوت جهت استفاده برای محتوای p4 به کار رود\&.
.sp
اگر یک مخزن گیت شامل شاخههای \fIrefs/remotes/origin/p4\fR باشد، این شاخهها در طول یک عملیات \fIgit p4 sync\fR ابتدا واکشی شده و مورد ارجاع قرار میگیرند\&. از آنجا که وارد کردن مستقیم از p4 به مراتب کندتر از واکشی تغییرات از یک مخزن دوردست گیت است، این قابلیت میتواند در یک محیط با چند توسعهدهنده مفید باشد\&.
.sp
اگر چندین شاخه وجود داشته باشد، اجرای \fIgit p4 sync\fR به طور خودکار از الگوریتم «تشخیص شاخه» (BRANCH DETECTION) برای تلاش جهت تفکیک تغییرات جدید به شاخه درست استفاده میکند\&. این رفتار را میتوان با گزینهٔ \fB\-\-branch\fR لغو کرد تا تنها یک شاخه برای بهروزرسانی مشخص شود\&.
.SS "تغییر پایه (Rebase)"
.sp
یک الگوی کاری رایج، واکشی آخرین تغییرات از انبار p4 و ادغام آنها با تغییرات محلی ثبتنشده (uncommitted) است\&. اغلب اوقات، مخزن p4 مکان نهایی تمام کدها است، از این رو یک گردش کار بازنشانی پایه (rebase) منطقی به نظر میرسد\&. این دستور یک \fIgit p4 sync\fR و به دنبال آن یک \fIgit rebase\fR را اجرا میکند تا کامیتهای محلی را به بالای تغییرات بهروزشدهٔ p4 منتقل کند\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 rebase
.fi
.if n \{\
.RE
.\}
.sp
.SS "ارسال (Submit)"
.sp
ارسال تغییرات از یک مخزن گیت به مخزن p4 نیازمند یک فضای کاری کلاینت (client workspace) مجزای p4 است\&. این مورد باید با استفاده از متغیر محیطی \fBP4CLIENT\fR یا متغیر پیکربندی گیت \fIgit\-p4\&.client\fR مشخص شود\&. کلاینت p4 باید وجود داشته باشد، اما اگر ریشه کلاینت (client root) هنوز وجود نداشته باشد، ایجاد شده و فایلها در آن پر میشوند\&.
.sp
برای ارسال تمام تغییراتی که در شاخه فعلی گیت هستند اما در شاخهٔ \fIp4/master\fR نیستند، از دستور زیر استفاده کنید:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 submit
.fi
.if n \{\
.RE
.\}
.sp
.sp
برای مشخص کردن شاخهای غیر از شاخه فعلی، از دستور زیر استفاده کنید:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 submit topicbranch
.fi
.if n \{\
.RE
.\}
.sp
.sp
برای مشخص کردن یک کامیت منفرد یا یک محدوده از کامیتها، از دستور زیر استفاده کنید:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 submit \-\-commit
$ git p4 submit \-\-commit
.fi
.if n \{\
.RE
.\}
.sp
.sp
مرجع بالادستی (upstream reference) به طور کلی \fIrefs/remotes/p4/master\fR است، اما میتواند با استفاده از گزینهٔ خط فرمان \fB\-\-origin=\fR بازنویسی شود\&.
.sp
تغییرات p4 با هویت کاربری که \fIgit p4 submit\fR را اجرا میکند ایجاد خواهند شد\&. گزینهٔ \fB\-\-preserve\-user\fR باعث میشود مالکیت با توجه به پدیدآورندهٔ (author) کامیت گیت تغییر یابد\&. این گزینه نیازمند دسترسیهای مدیر در p4 است که میتواند با استفاده از \fIp4 protect\fR اعطا شود\&.
.sp
برای قفسهبندی (shelve / تعلیق موقت) تغییرات به جای ارسال، از \fB\-\-shelve\fR و \fB\-\-update\-shelve\fR استفاده کنید:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 submit \-\-shelve
$ git p4 submit \-\-update\-shelve 1234 \-\-update\-shelve 2345
.fi
.if n \{\
.RE
.\}
.sp
.SS "خروج از قفسه (Unshelve)"
.sp
عملیات Unshelving یک لیست تغییرات (changelist) تعلیقشده در P4 را دریافت کرده و کامیت معادل گیت را در شاخهٔ refs/remotes/p4\-unshelved/ تولید میکند\&.
.sp
کامیت گیت نسبت به نسخه مبدا فعلی (به طور پیشفرض HEAD) ایجاد میشود\&. یک کامیت والد بر اساس مبدا ایجاد شده و سپس کامیت unshelve بر اساس آن ساخته میشود\&.
.sp
نسخه مبدا را میتوان با گزینهٔ "\-\-origin" تغییر داد\&.
.sp
اگر شاخه هدف در refs/remotes/p4\-unshelved از قبل وجود داشته باشد، شاخه قدیمی تغییر نام خواهد یافت\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git p4 sync
$ git p4 unshelve 12345
$ git show p4\-unshelved/12345
$ git p4 unshelve 12345
.fi
.if n \{\
.RE
.\}
.sp
.SH "گزینهها (OPTIONS)"
.SS "گزینههای عمومی (General options)"
.sp
همه دستورها به جز clone این گزینهها را میپذیرند\&.
.PP
\-\-git\-dir
.RS 4
تنظیم متغیر محیطی
\fBGIT_DIR\fR\&.
راهنمای
\fBgit\fR(1)
را ببینید\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
ارائه اطلاعات بیشتر درباره روند پیشرفت\&.
.RE
.SS "گزینههای همگامسازی (Sync options)"
.sp
این گزینهها را میتوان در \fIclone\fR اولیه و همچنین در عملیاتهای بعدی \fIsync\fR استفاده کرد\&.
.PP
\-\-branch [
.RS 4
وارد کردن تغییرات به ][ به جای refs/remotes/p4/master\&. اگر ][ با refs/ آغاز شود، همانطور که هست استفاده میشود\&. در غیر این صورت، اگر با p4/ آغاز نشود، این پیشوند به آن افزوده میشود\&.
.sp
به طور پیشفرض، یک ][ که با refs/ آغاز نشود به عنوان نام یک شاخه ردیابی دوردست (تحت refs/remotes/) در نظر گرفته میشود\&. این رفتار را میتوان با استفاده از گزینهٔ \-\-import\-local تغییر داد\&.
.sp
مقدار پیشفرض ][ برابر "master" است\&.
.sp
این مثال یک شاخه دوردست جدید "p4/proj2" را به یک مخزن موجود گیت وارد میکند:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git init
$ git p4 sync \-\-branch=refs/remotes/p4/proj2 //depot/proj2
.fi
.if n \{\
.RE
.\}
.sp
.RE
.PP
\-\-detect\-branches
.RS 4
استفاده از الگوریتم تشخیص شاخه برای یافتن مسیرهای جدید در p4\&. در بخش "تشخیص شاخه (BRANCH DETECTION)" در زیر مستند شده است\&.
.RE
.PP
\-\-changesfile
.RS 4
وارد کردن دقیقاً همان شماره تغییرات p4 که در
\fIfile\fR
فهرست شدهاند، در هر خط یکی\&. به طور معمول،
\fIgit p4\fR
وضعیت کنونی مخزن p4 را بررسی کرده و تغییراتی را که باید وارد شوند تشخیص میدهد\&.
.RE
.PP
\-\-silent
.RS 4
عدم چاپ هرگونه اطلاعات پیشرفت\&.
.RE
.PP
\-\-detect\-labels
.RS 4
پرسوجو از p4 برای برچسبهای (labels) مرتبط با مسیرهای انبار، و افزودن آنها به عنوان تگ (tag) در گیت\&. به دلیل آنکه تنها برچسبهای مرتبط با changelistهای جدید را وارد میکند کاربرد محدودی دارد\&. منسوخ شده است\&.
.RE
.PP
\-\-import\-labels
.RS 4
وارد کردن برچسبها از p4 به گیت\&.
.RE
.PP
\-\-import\-local
.RS 4
به طور پیشفرض، شاخههای p4 در
\fIrefs/remotes/p4/\fR
ذخیره میشوند، جایی که توسط
\fBgit-branch\fR(1)
و سایر دستورات به عنوان شاخههای ردیابی دوردست (remote\-tracking) در نظر گرفته خواهند شد\&. این گزینه در عوض شاخههای p4 را در
\fIrefs/heads/p4/\fR
قرار میدهد\&. توجه داشته باشید که عملیاتهای همگامسازی آینده نیز باید
\fB\-\-import\-local\fR
را مشخص کنند تا بتوانند شاخههای p4 را در refs/heads بیابند\&.
.RE
.PP
\-\-max\-changes
.RS 4
وارد کردن حداکثر
\fIn\fR
تغییر، به جای کل بازه تغییرات موجود در شناسه نسخه دادهشده\&. یک کاربرد معمول استفاده از
\fI@all\fR
به عنوان مشخصکننده نسخه، اما سپس استفاده از
\fI\-\-max\-changes 1000\fR
برای وارد کردن تنها ۱۰۰۰ نسخه آخر به جای کل تاریخچه نسخهها خواهد بود\&.
.RE
.PP
\-\-changes\-block\-size
.RS 4
اندازه بلوک داخلی برای استفاده هنگام تبدیل یک مشخصکننده نسخه مانند
\fI@all\fR
به فهرستی از شمارههای تغییر خاص\&. به جای استفاده از یک فراخوانی منفرد به
\fIp4 changes\fR
برای یافتن فهرست کامل تغییرات جهت تبدیل، دنبالهای از فراخوانیها به
\fIp4 changes \-m\fR
انجام میشود که هر کدام یک بلوک از تغییرات را به اندازه دادهشده درخواست میکند\&. اندازه بلوک پیشفرض ۵۰۰ است که معمولاً مناسب است\&.
.RE
.PP
\-\-keep\-path
.RS 4
نگاشت نام فایلها از مسیر انبار p4 به گیت به طور پیشفرض شامل حذف کل مسیر انبار است\&. با این گزینه، مسیر کامل انبار p4 در گیت حفظ میشود\&. برای مثال، مسیر
\fI//depot/main/foo/bar\&.c\fR،
هنگامی که از
\fI//depot/main/\fR
وارد میشود، به
\fIfoo/bar\&.c\fR
تبدیل میشود\&. با
\fB\-\-keep\-path\fR،
مسیر در گیت به جای آن برابر
\fIdepot/main/foo/bar\&.c\fR
خواهد بود\&.
.RE
.PP
\-\-use\-client\-spec
.RS 4
استفاده از یک مشخصات کلاینت (client spec) برای یافتن فهرست فایلهای مورد نظر در p4\&. بخش "مشخصات کلاینت (CLIENT SPEC)" را در زیر ببینید\&.
.RE
.PP
\-/
.RS 4
مستثنی کردن مسیرهای انبار انتخابشده هنگام شبیهسازی یا همگامسازی\&.
.RE
.SS "گزینههای شبیهسازی (Clone options)"
.sp
این گزینهها را میتوان در یک \fIclone\fR اولیه به همراه گزینههای \fIsync\fR که در بالا توضیح داده شدند استفاده کرد\&.
.PP
\-\-destination
.RS 4
محل ایجاد مخزن گیت\&. در صورت ارائه نشدن، آخرین مولفه در مسیر انبار p4 برای ایجاد یک دایرکتوری جدید استفاده میشود\&.
.RE
.PP
\-\-bare
.RS 4
انجام یک شبیهسازی خام (bare clone)\&. راهنمای
\fBgit-clone\fR(1)
را ببینید\&.
.RE
.SS "گزینههای ارسال (Submit options)"
.sp
این گزینهها میتوانند برای اصلاح رفتار \fIgit p4 submit\fR استفاده شوند\&.
.PP
\-\-origin
.RS 4
مکان بالادستی که کامیتها از آن برای ارسال به p4 شناسایی میشوند\&. به طور پیشفرض، این جدیدترین کامیت p4 قابل دستیابی از
\fBHEAD\fR
است\&.
.RE
.PP
\-M
.RS 4
تشخیص تغییر نامها\&. راهنمای
\fBgit-diff\fR(1)
را ببینید\&. تغییر نامها در p4 با استفاده از عملیاتهای صریح
\fImove\fR
نمایش داده خواهند شد\&. گزینه متناظری برای تشخیص کپیها وجود ندارد، اما متغیرهایی برای هر دو مورد جابهجایی و کپی وجود دارد\&.
.RE
.PP
\-\-preserve\-user
.RS 4
بازنویسی پدیدآورنده تغییرات p4 پیش از ارسال به p4\&. این گزینه نیازمند دسترسیهای مدیر در p4 است\&.
.RE
.PP
\-\-export\-labels
.RS 4
صادر کردن تگها از گیت به عنوان برچسبهای p4\&. تگهای یافتشده در گیت بر روی دایرکتوری کاری perforce اعمال میشوند\&.
.RE
.PP
\-n, \-\-dry\-run
.RS 4
تنها نشان دادن اینکه چه کامیتهایی به p4 ارسال خواهند شد؛ وضعیت را در گیت یا p4 تغییر ندهید\&.
.RE
.PP
\-\-prepare\-p4\-only
.RS 4
اعمال یک کامیت روی فضای کاری p4، با باز کردن، افزودن و حذف فایلها در p4 همانند یک عملیات عادی submit\&. اما دستور نهایی "p4 submit" صادر نمیشود، بلکه در عوض پیامی درباره نحوه ارسال دستی یا بازگرداندن (revert) چاپ میشود\&. این گزینه همیشه پس از اولین (قدیمیترین) کامیت متوقف میشود\&. تگهای گیت به p4 صادر نمیشوند\&.
.RE
.PP
\-\-shelve
.RS 4
به جای ارسال، ایجاد مجموعهای از فهرستهای تغییرات تعلیقشده (shelved changelists)\&. پس از ایجاد هر shelve، فایلهای مربوطه بازگردانی/حذف (reverted/deleted) میشوند\&. اگر چندین کامیت در انتظار داشته باشید، چندین shelve ایجاد خواهد شد\&.
.RE
.PP
\-\-update\-shelve CHANGELIST
.RS 4
بهروزرسانی یک لیست تغییرات تعلیقشدهٔ موجود با این کامیت\&. مستلزم گزینه \-\-shelve است\&. برای چندین changelist تعلیقشده تکرار کنید\&.
.RE
.PP
\-\-conflict=(ask|skip|quit)
.RS 4
هنگام اعمال یک کامیت روی p4 ممکن است تعارض رخ دهد\&. وقتی این اتفاق میافتد، رفتار پیشفرض ("ask") این است که سوال شود آیا این کامیت نادیده گرفته شده و ادامه یابد، یا خارج شود\&. این گزینه میتواند برای دور زدن این اعلان استفاده شود و باعث شود کامیتهای دارای تعارض به طور خودکار نادیده گرفته شوند، یا اینکه تلاش برای اعمال کامیتها بدون درخواست تایید متوقف گردد\&.
.RE
.PP
\-\-branch
.RS 4
پس از ارسال، همگامسازی این شاخه نامگذاریشده به جای شاخه پیشفرض p4/master\&. برای اطلاعات بیشتر بخش "گزینههای همگامسازی (Sync options)" در بالا را ببینید\&.
.RE
.PP
\-\-commit (|\&.\&.)
.RS 4
تنها ارسال کامیت یا محدوده کامیتهای مشخصشده، به جای فهرست کامل تغییراتی که در شاخه فعلی گیت وجود دارد\&.
.RE
.PP
\-\-disable\-rebase
.RS 4
غیرفعال کردن بازنشانی پایه خودکار پس از اینکه تمام کامیتها با موفقیت ارسال شدند\&. همچنین میتواند با git\-p4\&.disableRebase تنظیم شود\&.
.RE
.PP
\-\-disable\-p4sync
.RS 4
غیرفعال کردن همگامسازی خودکار p4/master از Perforce پس از ارسال کامیتها\&. مستلزم گزینه \-\-disable\-rebase است\&. همچنین میتواند با git\-p4\&.disableP4Sync تنظیم شود\&. همگامسازی با origin/master در صورت امکان همچنان انجام میشود\&.
.RE
.SH "قلابها برای ارسال (HOOKS FOR SUBMIT)"
.SS "p4\-pre\-submit"
.sp
قلاب \fBp4\-pre\-submit\fR در صورت وجود و قابل اجرا بودن اجرا میشود\&. این قلاب هیچ پارامتری دریافت نمیکند و هیچ چیزی از ورودی استاندارد نمیگیرد\&. خروج با وضعیت غیر صفر از این اسکریپت مانع از اجرای \fBgit\-p4\fR \fBsubmit\fR میشود\&. این قلاب را میتوان با گزینه خط فرمان \fB\-\-no\-verify\fR دور زد\&.
.sp
یک سناریوی کاربردی اجرای آزمونهای واحد (unit tests) در این قلاب است\&.
.SS "p4\-prepare\-changelist"
.sp
قلاب \fBp4\-prepare\-changelist\fR درست پس از آمادهسازی پیام پیشفرض changelist و قبل از شروع ویرایشگر اجرا میشود\&. این قلاب یک پارامتر دریافت میکند که نام فایلی است که متن changelist را در بر دارد\&. خروج با وضعیت غیر صفر از اسکریپت فرآیند را متوقف خواهد کرد\&.
.sp
هدف از این قلاب، ویرایش درجا (in place) فایل پیام است و با گزینه \fB\-\-no\-verify\fR غیرفعال نمیشود\&. این قلاب حتی در صورت تنظیم \fB\-\-prepare\-p4\-only\fR نیز فراخوانی میشود\&.
.SS "p4\-changelist"
.sp
قلاب \fBp4\-changelist\fR پس از اینکه پیام changelist توسط کاربر ویرایش شد اجرا میشود\&. این قلاب میتواند با گزینه \fB\-\-no\-verify\fR دور زده شود\&. این قلاب یک پارامتر واحد دریافت میکند که نام فایلی است که متن پیشنهادی changelist را نگهداری میکند\&. خروج با وضعیت غیر صفر باعث لغو دستور میشود\&.
.sp
این قلاب مجاز به ویرایش فایل changelist است و میتواند برای یکدستسازی متن به قالبی استاندارد در پروژه استفاده شود\&. همچنین میتواند پس از بازبینی فایل پیام، برای رد کردن Submit استفاده شود\&.
.SS "p4\-post\-changelist"
.sp
قلاب \fBp4\-post\-changelist\fR پس از اینکه ارسال با موفقیت در P4 انجام شد فراخوانی میشود\&. هیچ پارامتری دریافت نمیکند و اساساً برای اطلاعرسانی در نظر گرفته شده است و نمیتواند بر نتیجه عملیات git p4 submit تأثیر بگذارد\&.
.SS "گزینههای تغییر پایه (Rebase options)"
.sp
این گزینهها میتوانند برای تغییر رفتار \fIgit p4 rebase\fR استفاده شوند\&.
.PP
\-\-import\-labels
.RS 4
وارد کردن برچسبهای p4\&.
.RE
.SS "گزینههای خروج از قفسه (Unshelve options)"
.PP
\-\-origin
.RS 4
تنظیم refspec گیت که changelist تعلیقشده در P4 در برابر آن مقایسه میشود\&. پیشفرض p4/master است\&.
.RE
.SH "نحو مسیر انبار (DEPOT PATH SYNTAX)"
.sp
آرگومان مسیر انبار p4 به \fIgit p4 sync\fR و \fIgit p4 clone\fR میتواند یک یا چند مسیر انبار p4 جداشده با فاصله باشد، همراه با یک شناسه نسخه اختیاری p4 در انتها:
.PP
"//depot/my/project"
.RS 4
وارد کردن یک کامیت با تمام فایلها در تغییر
\fI#head\fR
تحت آن درخت\&.
.RE
.PP
"//depot/my/project@all"
.RS 4
وارد کردن یک کامیت به ازای هر تغییر در تاریخچه آن مسیر انبار\&.
.RE
.PP
"//depot/my/project@1,6"
.RS 4
تنها وارد کردن تغییرات ۱ تا ۶\&.
.RE
.PP
"//depot/proj1@all //depot/proj2@all"
.RS 4
وارد کردن تمام تغییرات از هر دو مسیر انبار نامبردهشده در یک مخزن واحد\&. تنها فایلهای زیر این دایرکتوریها گنجانده میشوند\&. در گیت برای هر کدام از "proj1" و "proj2" یک زیردایرکتوری ایجاد نمیشود\&. هنگام مشخص کردن بیش از یک مسیر انبار، باید از گزینهٔ
\fB\-\-destination\fR
استفاده کنید\&. مشخصکننده نسخه باید روی هر مسیر انبار به طور یکسان تعیین شود\&. اگر در مسیرهای انبار فایلهایی با نام یکسان وجود داشته باشد، مسیری که جدیدترین نسخه بهروزشدهٔ فایل را دارد در گیت ظاهر میشود\&.
.RE
.sp
برای نحو کامل مشخصکنندههای نسخه در p4، به \fIp4 help revisions\fR مراجعه کنید\&.
.SH "مشخصات کلاینت (CLIENT SPEC)"
.sp
مشخصات کلاینت p4 با دستور \fIp4 client\fR نگهداری میشود و از جمله فیلدهای دیگر، شامل یک View است که مشخص میکند چگونه انبار به مخزن کلاینت نگاشت میشود\&. دستورهای \fIclone\fR و \fIsync\fR میتوانند هنگام دریافت گزینهٔ \fB\-\-use\-client\-spec\fR یا زمانی که متغیر useClientSpec برابر true است، مشخصات کلاینت را مد نظر قرار دهند\&. پس از \fIgit p4 clone\fR، متغیر useClientSpec به طور خودکار در فایل پیکربندی مخزن تنظیم میشود\&. این کار اجازه میدهد دستورهای آیندهٔ \fIgit p4 submit\fR به درستی کار کنند؛ دستور submit تنها به این متغیر نگاه میکند و گزینه خط فرمانی برای آن ندارد\&.
.sp
نحو کامل برای یک view در p4 در \fIp4 help views\fR مستند شده است\&. \fIgit p4\fR تنها زیرمجموعهای از نحو view را میشناسد\&. این ابزار نگاشتهای چندخطی، همپوشانیها (overlays) با \fI+\fR، موارد استثنا با \fI\-\fR و علامت نقلقول دوگانه در اطراف فاصلهها را متوجه میشود\&. از میان نویسههای عمومی (wildcards) ممکن، \fIgit p4\fR تنها \fI\&...\fR را مدیریت میکند، و آن هم فقط زمانی که در انتهای مسیر باشد\&. اگر \fIgit p4\fR با نویسه عمومی پشتیبانینشدهای مواجه شود، خطا گزارش میدهد\&.
.sp
اشکالاتی در پیادهسازی نگاشتهای دارای همپوشانی وجود دارد\&. اگر چندین مسیر انبار از طریق overlays به یک مکان یکسان در مخزن نگاشت شوند، \fIgit p4\fR ممکن است مسیر اشتباه را انتخاب کند\&. حل این مشکل بدون اختصاص یک مشخصات کلاینت صرفاً برای \fIgit p4\fR دشوار است\&.
.sp
نام کلاینت را میتوان به روشهای مختلفی به \fIgit p4\fR ارائه کرد\&. متغیر \fIgit\-p4\&.client\fR در صورت وجود اولویت دارد\&. در غیر این صورت، سازوکارهای عادی p4 برای تعیین کلاینت استفاده میشوند: متغیر محیطی \fBP4CLIENT\fR، یک فایل ارجاع دادهشده توسط \fBP4CONFIG\fR، یا نام میزبان محلی (local host name)\&.
.SH "تشخیص شاخه (BRANCH DETECTION)"
.sp
نرمافزار P4 مفهومی یکسان با شاخه در گیت ندارد\&. در عوض، p4 محتوای خود را به صورت یک درخت دایرکتوری سازماندهی میکند که بر اساس توافق، شاخههای منطقی مختلف در مکانهای متفاوتی در درخت قرار دارند\&. دستور \fIp4 branch\fR برای نگهداری نگاشتهای میان بخشهای مختلف در درخت و نشان دادن محتوای مرتبط استفاده میشود\&. \fIgit p4\fR میتواند از این نگاشتها برای تعیین روابط شاخهها استفاده کند\&.
.sp
اگر مخزنی دارید که در آن تمام شاخههای مورد نظر به عنوان زیردایرکتوریهای یک مسیر انبار واحد وجود دارند، میتوانید هنگام شبیهسازی یا همگامسازی از \fB\-\-detect\-branches\fR استفاده کنید تا \fIgit p4\fR به طور خودکار زیردایرکتوریها را در p4 پیدا کرده و آنها را به عنوان شاخههایی در گیت ایجاد کند\&.
.sp
برای مثال، اگر ساختار مخزن P4 به صورت زیر باشد:
.sp
.if n \{\
.RS 4
.\}
.nf
//depot/main/\&.\&.\&.
//depot/branch1/\&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
.sp
و دستور "p4 branch \-o branch1" یک خط View را نشان دهد که شبیه زیر است:
.sp
.if n \{\
.RS 4
.\}
.nf
//depot/main/\&.\&.\&. //depot/branch1/\&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
.sp
سپس این دستور \fIgit p4 clone\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
git p4 clone \-\-detect\-branches //depot@all
.fi
.if n \{\
.RE
.\}
.sp
.sp
یک شاخهٔ جداگانه در \fIrefs/remotes/p4/\fR برای //depot/main به نام \fImaster\fR، و یک شاخه برای //depot/branch1 به نام \fIdepot/branch1\fR تولید میکند\&.
.sp
با این حال، برای اینکه بتوان از آنها مانند شاخهها استفاده کرد، ایجاد شاخهها در p4 الزامی نیست\&. از آنجا که استنباط روابط شاخهها به طور خودکار دشوار است، میتوان از تنظیم پیکربندی گیت \fIgit\-p4\&.branchList\fR برای شناسایی صریح روابط شاخهها استفاده کرد\&. این تنظیم فهرستی از جفتهای "source:destination" است، مانند یک مشخصات ساده شاخه در p4، که در آن "source" و "destination" عناصر مسیر در مخزن p4 هستند\&. مثال بالا متکی به حضور شاخه p4 بود\&. بدون شاخههای p4، همین نتیجه با دستورهای زیر حاصل خواهد شد:
.sp
.if n \{\
.RS 4
.\}
.nf
git init depot
cd depot
git config git\-p4\&.branchList main:branch1
git p4 clone \-\-detect\-branches //depot@all \&.
.fi
.if n \{\
.RE
.\}
.sp
.SH "کارایی (PERFORMANCE)"
.sp
سازوکار fast\-import مورد استفاده توسط \fIgit p4\fR برای هر بار فراخوانی \fIgit p4 sync\fR یک pack file ایجاد میکند\&. معمولاً فشردهسازی بازیافت حافظه گیت (\fBgit-gc\fR(1)) به طور خودکار این فایلها را به بستههای کمتری فشرده میکند، اما اجرای صریح دستور \fIgit repack \-adf\fR ممکن است کارایی را بهبود بخشد\&.
.SH "متغیرهای پیکربندی (CONFIGURATION VARIABLES)"
.sp
تنظیمات پیکربندی زیر میتوانند برای تغییر رفتار \fIgit p4\fR استفاده شوند\&. همه آنها در بخش \fIgit\-p4\fR قرار دارند\&.
.SS "متغیرهای عمومی (General variables)"
.PP
git\-p4\&.user
.RS 4
کاربر مشخصشده به عنوان گزینهای برای همه دستورهای p4، با
\fI\-u \fR\&.
متغیر محیطی
\fBP4USER\fR
میتواند به جای آن استفاده شود\&.
.RE
.PP
git\-p4\&.password
.RS 4
گذرواژه مشخصشده به عنوان گزینهای برای همه دستورهای p4، با
\fI\-P \fR\&.
متغیر محیطی
\fBP4PASS\fR
میتواند به جای آن استفاده شود\&.
.RE
.PP
git\-p4\&.port
.RS 4
درگاه (پورت) مشخصشده به عنوان گزینهای برای همه دستورهای p4، با
\fI\-p \fR\&.
متغیر محیطی
\fBP4PORT\fR
میتواند به جای آن استفاده شود\&.
.RE
.PP
git\-p4\&.host
.RS 4
میزبان مشخصشده به عنوان گزینهای برای همه دستورهای p4، با
\fI\-h \fR\&.
متغیر محیطی
\fBP4HOST\fR
میتواند به جای آن استفاده شود\&.
.RE
.PP
git\-p4\&.client
.RS 4
کلاینت مشخصشده به عنوان گزینهای برای همه دستورهای p4، با
\fI\-c \fR،
شامل مشخصات کلاینت\&.
.RE
.PP
git\-p4\&.retries
.RS 4
تعداد دفعات تلاش مجدد برای یک دستور p4 (به ویژه
\fIp4 sync\fR)
را در صورت اتمام مهلت شبکه مشخص میکند\&. مقدار پیشفرض ۳ است\&. برای غیرفعال کردن تلاشهای مجدد یا در صورتی که نسخه p4 شما از تلاش مجدد پشتیبانی نمیکند (قبل از 2012.2)، مقدار را روی 0 تنظیم کنید\&.
.RE
.SS "متغیرهای شبیهسازی و همگامسازی (Clone and sync variables)"
.PP
git\-p4\&.syncFromOrigin
.RS 4
از آنجا که وارد کردن کامیتها از سایر مخازن گیت بسیار سریعتر از وارد کردن آنها از p4 است، سازوکاری برای یافتن تغییرات p4 ابتدا در شاخههای دوردست گیت وجود دارد\&. اگر شاخههایی تحت
\fIrefs/remote/origin/p4\fR
وجود داشته باشند، هنگام همگامسازی از p4 واکشی شده و استفاده خواهند شد\&. این متغیر میتواند برای غیرفعال کردن این رفتار بر روی
\fIfalse\fR
تنظیم شود\&.
.RE
.PP
git\-p4\&.branchUser
.RS 4
یک مرحله در تشخیص شاخه شامل بررسی شاخههای p4 برای یافتن شاخههای جدید جهت وارد کردن است\&. به طور پیشفرض، تمام شاخهها بررسی میشوند\&. این گزینه جستجو را تنها به مواردی محدود میکند که متعلق به کاربری هستند که نامش در متغیر ذکر شده است\&.
.RE
.PP
git\-p4\&.branchList
.RS 4
فهرست شاخههایی که هنگام فعال بودن تشخیص شاخه باید وارد شوند\&. هر ورودی باید یک جفت از نامهای شاخه باشد که با دونقطه (:) از هم جدا شدهاند\&. این مثال اعلام میکند که هر دو شاخه branchA و branchB از main ایجاد شدهاند:
.sp
.if n \{\
.RS 4
.\}
.nf
git config git\-p4\&.branchList main:branchA
git config \-\-add git\-p4\&.branchList main:branchB
.fi
.if n \{\
.RE
.\}
.sp
.RE
.PP
git\-p4\&.ignoredP4Labels
.RS 4
فهرست برچسبهای p4 برای نادیده گرفتن\&. این فهرست با کشف برچسبهای غیرقابل وارد کردن به طور خودکار ساخته میشود\&.
.RE
.PP
git\-p4\&.importLabels
.RS 4
وارد کردن برچسبهای p4 به گیت، مطابق با \-\-import\-labels\&.
.RE
.PP
git\-p4\&.labelImportRegexp
.RS 4
تنها برچسبهای p4 که با این عبارت باقاعده مطابقت دارند وارد خواهند شد\&. مقدار پیشفرض برابر است با
\fI[a\-zA\-Z0\-9_\e\-\&.]+$\fR\&.
.RE
.PP
git\-p4\&.useClientSpec
.RS 4
مشخص میکند که مشخصات کلاینت p4 باید برای شناسایی مسیرهای انبار مورد نظر p4 استفاده شود\&. این معادل تعیین گزینهٔ
\fB\-\-use\-client\-spec\fR
است\&. بخش "مشخصات کلاینت (CLIENT SPEC)" را در بالا ببینید\&. این متغیر یک مقدار بولی است، نه نام یک کلاینت p4\&.
.RE
.PP
git\-p4\&.pathEncoding
.RS 4
سیستم Perforce کدگذاری یک مسیر را همانطور که توسط سیستمعامل مبدا تعیین شده نگهداری میکند\&. گیت انتظار دارد مسیرها با کدگذاری UTF\-8 باشند\&. از این پیکربندی برای اعلام به git\-p4 استفاده کنید که Perforce از چه کدگذاریای برای مسیرها استفاده کرده است\&. این کدگذاری برای تبدیل مسیرها به UTF\-8 استفاده میشود\&. به عنوان مثال، Perforce در ویندوز اغلب از "cp1252" برای کدگذاری نام مسیرها استفاده میکند\&. اگر این گزینه به درخواست p4 clone ارسال شود، در مخزن گیت جدید حاصل ذخیره و ماندگار میشود\&.
.RE
.PP
git\-p4\&.metadataDecodingStrategy
.RS 4
سیستم Perforce کدگذاری توضیحات changelist و نام کامل کاربران را همانطور که توسط کلاینت در یک سیستمعامل ذخیره شده حفظ میکند\&. کلاینت p4v از کدگذاری محلی سیستمعامل استفاده میکند، بنابراین کاربران مختلف ممکن است در نهایت توضیحات changelist یا نامهای کامل متفاوتی را با کدگذاریهای متفاوتی در همان انبار ذخیره کنند\&. گیت کدگذاریهای ناهماهنگ/نادرست را در پیامهای کامیت و نام نویسندگان تحمل میکند، اما انتظار دارد آنها در قالب utf\-8 مشخص شوند\&. ابزار git\-p4 میتواند از سه راهبرد مختلف رمزگشایی در مواجهه با عدم قطعیت کدگذاری در Perforce استفاده کند:
\fIpassthrough\fR
صرفاً بایتهای اصلی را از Perforce به گیت منتقل میکند و در صورتی که دادههای Perforce با چیزی غیر از utf\-8 کدگذاری شده باشند، دادههایی قابل استفاده اما با کدگذاری نادرست ایجاد میکند\&.
\fIstrict\fR
انتظار دارد دادههای Perforce با کدگذاری utf\-8 باشند، و در غیر این صورت عملیات وارد کردن با شکست مواجه میشود\&.
\fIfallback\fR
تلاش میکند دادهها را به عنوان utf\-8 تفسیر کند، و در غیر این صورت به استفاده از یک کدگذاری ثانویه بازمیگردد \- به طور پیشفرض کدگذاری رایج ویندوز
\fIcp\-1252\fR
\- که در صورت عدم موفقیت در رمزگشایی با کدگذاری پشتیبان، بایتهای دامنه بالایی اسکیپ میشوند\&. در پایتون ۲ راهبرد پیشفرض به دلایل تاریخی
\fIpassthrough\fR
است، و در پایتون ۳ پیشفرض
\fIfallback\fR
است\&. هنگامی که
\fIstrict\fR
انتخاب شود و رمزگشایی با شکست مواجه گردد، پیام خطا تغییر این پارامتر پیکربندی را به عنوان راهکار پیشنهاد میدهد\&. اگر این گزینه به درخواست p4 clone ارسال شود، در مخزن گیت جدید حاصل ذخیره میشود\&.
.RE
.PP
git\-p4\&.metadataFallbackEncoding
.RS 4
کدگذاری پشتیبان (fallback) مورد استفاده هنگام رمزگشایی نام نویسندگان و توضیحات changelist در Perforce با استفاده از راهبرد
\fIfallback\fR
را مشخص میکند (نگاه کنید به git\-p4\&.metadataDecodingStrategy)\&. کدگذاری پشتیبان تنها زمانی استفاده خواهد شد که رمزگشایی به عنوان utf\-8 با شکست مواجه شود\&. این گزینه به طور پیشفرض روی cp1252، یک کدگذاری رایج ویندوز، تنظیم است\&. اگر این گزینه به درخواست p4 clone ارسال شود، در مخزن گیت جدید حاصل ذخیره میشود\&.
.RE
.PP
git\-p4\&.largeFileSystem
.RS 4
سیستم مورد استفاده برای فایلهای بزرگ (باینری) را مشخص میکند\&. لطفاً توجه داشته باشید که سیستمهای فایل بزرگ از دستور
\fIgit p4 submit\fR
پشتیبانی نمیکنند\&. در حال حاضر تنها Git LFS پیادهسازی شده است (برای اطلاعات بیشتر به
\m[blue]\fBhttps://git\-lfs\&.github\&.com\fR\m[]
مراجعه کنید)\&. برای استفاده از این گزینه، افزونه خط فرمان Git LFS را دانلود و نصب کرده و آن را به این صورت پیکربندی نمایید:
.sp
.if n \{\
.RS 4
.\}
.nf
git config git\-p4\&.largeFileSystem GitLFS
.fi
.if n \{\
.RE
.\}
.sp
.RE
.PP
git\-p4\&.largeFileExtensions
.RS 4
تمام فایلهایی که با یک پسوند فایل در این فهرست مطابقت دارند توسط سیستم فایلهای بزرگ پردازش خواهند شد\&. پیشوند
\fI\&.\fR
را به پسوندها اضافه نکنید\&.
.RE
.PP
git\-p4\&.largeFileThreshold
.RS 4
تمام فایلهایی که اندازه غیرفشرده آنها از آستانه فراتر رود توسط سیستم فایلهای بزرگ پردازش خواهند شد\&. به طور پیشفرض این آستانه بر حسب بایت تعریف میشود\&. پسوند k یا m یا g را برای تغییر واحد اضافه کنید\&.
.RE
.PP
git\-p4\&.largeFileCompressedThreshold
.RS 4
تمام فایلهایی که اندازه فشرده آنها از آستانه فراتر رود توسط سیستم فایلهای بزرگ پردازش خواهند شد\&. این گزینه ممکن است روند شبیهسازی/همگامسازی شما را کند کند\&. به طور پیشفرض آستانه بر حسب بایت تعریف میشود\&. پسوند k یا m یا g را برای تغییر واحد اضافه کنید\&.
.RE
.PP
git\-p4\&.largeFilePush
.RS 4
متغیر بولی که تعیین میکند آیا فایلهای بزرگ به طور خودکار به سرور ارسال (push) شوند یا خیر\&.
.RE
.PP
git\-p4\&.keepEmptyCommits
.RS 4
اگر این گزینه بولی روی true تنظیم شود، یک changelist که تنها شامل فایلهای مستثنیشده است به عنوان یک کامیت خالی وارد خواهد شد\&.
.RE
.PP
git\-p4\&.mapUser
.RS 4
نگاشت یک کاربر P4 به یک نام و نشانی ایمیل در گیت\&. از یک رشته با قالب زیر برای ایجاد نگاشت استفاده کنید:
.sp
.if n \{\
.RS 4
.\}
.nf
git config \-\-add git\-p4\&.mapUser "p4user = First Last "
.fi
.if n \{\
.RE
.\}
.sp
یک نگاشت هرگونه اطلاعات کاربر از P4 را لغو خواهد کرد\&. نگاشتها را میتوان برای چندین کاربر P4 تعریف کرد\&.
.RE
.SS "متغیرهای ارسال (Submit variables)"
.PP
git\-p4\&.detectRenames
.RS 4
تشخیص تغییر نامها\&. راهنمای
\fBgit-diff\fR(1)
را ببینید\&. این میتواند true یا false یا یک امتیاز مورد انتظار توسط
\fIgit diff \-M\fR
باشد\&.
.RE
.PP
git\-p4\&.detectCopies
.RS 4
تشخیص کپیها\&. راهنمای
\fBgit-diff\fR(1)
را ببینید\&. این میتواند true یا false یا یک امتیاز مورد انتظار توسط
\fIgit diff \-C\fR
باشد\&.
.RE
.PP
git\-p4\&.detectCopiesHarder
.RS 4
تشخیص دقیقتر کپیها\&. راهنمای
\fBgit-diff\fR(1)
را ببینید\&. یک مقدار بولی است\&.
.RE
.PP
git\-p4\&.preserveUser
.RS 4
هنگام ارسال، تغییرات را بازنویسی کنید تا نویسنده گیت را منعکس کند، صرفنظر از اینکه چه کسی
\fIgit p4 submit\fR
را اجرا میکند\&.
.RE
.PP
git\-p4\&.allowMissingP4Users
.RS 4
هنگامی که
\fIpreserveUser\fR
برابر true باشد،
\fIgit p4\fR
به طور معمول اگر نتواند نویسندهای را در نقشه کاربران p4 پیدا کند متوقف میشود\&. این تنظیم در هر صورت تغییرات را ارسال میکند\&.
.RE
.PP
git\-p4\&.skipSubmitEdit
.RS 4
فرآیند submit ویرایشگر را قبل از ارسال هر تغییر p4 فراخوانی میکند\&. با این حال، اگر این تنظیم برابر true باشد، مرحله ویرایش نادیده گرفته میشود\&.
.RE
.PP
git\-p4\&.skipSubmitEditCheck
.RS 4
پس از ویرایش پیام تغییر p4،
\fIgit p4\fR
با بررسی زمان تغییر فایل اطمینان حاصل میکند که توضیحات واقعاً تغییر کرده است\&. این گزینه آن آزمایش را غیرفعال میکند\&.
.RE
.PP
git\-p4\&.allowSubmit
.RS 4
به طور پیشفرض، هر شاخهای میتواند به عنوان منبع برای یک عملیات
\fIgit p4 submit\fR
استفاده شود\&. این متغیر پیکربندی، در صورت تنظیم، تنها به شاخههای نامبرده اجازه میدهد به عنوان منابع ارسال استفاده شوند\&. نام شاخهها باید نامهای کوتاه باشند (بدون "refs/heads/") و باید با کاما (",") و بدون فاصله از هم جدا شوند\&.
.RE
.PP
git\-p4\&.skipUserNameCheck
.RS 4
اگر کاربری که
\fIgit p4 submit\fR
را اجرا میکند در نقشه کاربران p4 وجود نداشته باشد،
\fIgit p4\fR
خارج میشود\&. این گزینه میتواند برای اجبار به ارسال در هر صورت استفاده شود\&.
.RE
.PP
git\-p4\&.attemptRCSCleanup
.RS 4
در صورت فعال بودن،
\fIgit p4 submit\fR
تلاش خواهد کرد کلیدواژههای RCS مانند ($Header$ و غیره) را پاکسازی کند\&. در غیر این صورت این موارد باعث تعارض ادغام شده و مانع از انجام ارسال میشوند\&. این گزینه در حال حاضر باید آزمایشی در نظر گرفته شود\&.
.RE
.PP
git\-p4\&.exportLabels
.RS 4
صادر کردن تگهای گیت به برچسبهای p4، مطابق با \-\-export\-labels\&.
.RE
.PP
git\-p4\&.labelExportRegexp
.RS 4
تنها برچسبهای p4 که با این عبارت باقاعده مطابقت دارند صادر خواهند شد\&. مقدار پیشفرض برابر است با
\fI[a\-zA\-Z0\-9_\e\-\&.]+$\fR\&.
.RE
.PP
git\-p4\&.conflict
.RS 4
مشخص کردن رفتار submit هنگام یافتن تعارض با p4، مطابق با \-\-conflict\&. رفتار پیشفرض برابر است با
\fIask\fR\&.
.RE
.PP
git\-p4\&.disableRebase
.RS 4
پس از یک ارسال، شاخه را در برابر p4/master بازنشانی پایه نکنید\&.
.RE
.PP
git\-p4\&.disableP4Sync
.RS 4
پس از ارسال، p4/master را با Perforce همگامسازی نکنید\&. مستلزم git\-p4\&.disableRebase است\&. همگامسازی با origin/master در صورت امکان همچنان انجام میشود\&.
.RE
.SH "جزئیات پیادهسازی (IMPLEMENTATION DETAILS)"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
مجموعهتغییرات (changesets) از p4 با استفاده از Git fast\-import وارد میشوند\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
شبیهسازی یا همگامسازی نیازی به کلاینت p4 ندارد؛ محتویات فایل با استفاده از
\fIp4 print\fR
جمعآوری میشوند\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
ارسال (Submit) نیازمند کلاینت p4 است، که در همان مکان مخزن گیت قرار ندارد\&. وصلهها (patches) یکییکی بر روی این کلاینت p4 اعمال شده و از آنجا ارسال میشوند\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
هر کامیت واردشده توسط
\fIgit p4\fR
یک خط در انتهای پیام لاگ دارد که مکان انبار p4 و شماره تغییر را نشان میدهد\&. این خط توسط عملیاتهای بعدی
\fIgit p4 sync\fR
استفاده میشود تا مشخص شود کدام تغییرات p4 جدید هستند\&.
.RE
.SH "همچنین ببینید (SEE ALSO)"
.sp
\fBgit\fR(1),
\fBgit\-branch\fR(1),
\fBgit\-clone\fR(1),
\fBgit\-diff\fR(1)
.SH "گیت (GIT)"
.sp
بخشی از مجموعه \fBgit\fR(1)]