'\" t
.\" Title: git-cvsserver
.\" 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\-CVSSERVER" "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-cvsserver \- یک شبیهساز سرور CVS برای گیت
.SH "خلاصه دستور (SYNOPSIS)"
.sp
SSH:
.sp
.nf
export CVS_SERVER="git cvsserver"
\fIcvs\fR \-d :ext:user@server/path/repo\&.git co
.fi
.sp
.sp
pserver (/etc/inetd\&.conf):
.sp
.nf
cvspserver stream tcp nowait nobody /usr/bin/git\-cvsserver git\-cvsserver pserver
.fi
.sp
.sp
کاربرد (Usage):
.sp
.nf
\fIgit\-cvsserver\fR [] [pserver|server] [ \&...]
.fi
.sp
.SH "توضیحات (DESCRIPTION)"
.sp
این برنامه یک لایهٔ شبیهساز CVS برای گیت (Git) است\&.
.sp
این ابزار قابلیتهای فراوانی دارد؛ با این حال، همهٔ متدها پیادهسازی نشدهاند و برای متدهای پیادهسازیشده نیز تمام سوییچها در دسترس نیستند\&.
.sp
آزمایشها با استفاده از کلاینت خط فرمانی CVS و افزونهٔ CVS اکلیپس (Eclipse) انجام شده است\&. بیشتر قابلیتها با هر دوی این کلاینتها به خوبی کار میکنند\&.
.SH "گزینهها (OPTIONS)"
.sp
تمام این گزینهها مسلماً تنها در صورتی منطقی هستند که از سمت سرور اعمال شوند\&. آنها طوری پیادهسازی شدهاند که تا جای ممکن به گزینههای
.BR git-daemon (1)
شباهت داشته باشند\&.
.PP
\-\-base\-path
.RS 4
افزودن
\fIpath\fR
به ابتدای CVSROOT درخواستی\&.
.RE
.PP
\-\-strict\-paths
.RS 4
عدم اجازه برای پیمایش بازگشتی به زیردایرکتوریها\&.
.RE
.PP
\-\-export\-all
.RS 4
عدم بررسی
\fBgitcvs\&.enabled\fR
در فایل پیکربندی\&. در صورت تمایل به استفاده از این گزینه، باید فهرستی از دایرکتوریهای مجاز را نیز مشخص کنید (پایین را ببینید)\&.
.RE
.PP
\-V, \-\-version
.RS 4
چاپ اطلاعات نسخه و خروج\&.
.RE
.PP
\-h, \-H, \-\-help
.RS 4
چاپ راهنمای استفاده و خروج\&.
.RE
.PP
.RS 4
آرگومانهای باقیمانده، فهرستی از دایرکتوریها را ارائه میدهند\&. اگر هیچ دایرکتوری مشخص نشود، همه مجاز خواهند بود\&. مخازن موجود در این دایرکتوریها همچنان نیازمند گزینهٔ پیکربندی
\fBgitcvs\&.enabled\fR
هستند، مگر اینکه
\fB\-\-export\-all\fR
مشخص شده باشد\&.
.RE
.SH "محدودیتها (LIMITATIONS)"
.sp
کلاینتهای CVS قادر به برچسبگذاری (tag)، ایجاد شاخه (branch) یا انجام ادغامهای گیت (Git merge) نیستند\&.
.sp
دستور
\fIgit\-cvsserver\fR
شاخههای گیت را به ماژولهای CVS نگاشت میکند\&. این رفتار با انتظاری که اکثر کاربران CVS دارند بسیار متفاوت است، زیرا در CVS ماژولها معمولاً نشاندهندهٔ یک یا چند دایرکتوری هستند\&.
.SH "نصب و راهاندازی (INSTALLATION)"
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 1." 4.2
.\}
اگر میخواهید دسترسی CVS را از طریق pserver ارائه دهید، خطی مانند زیر را به /etc/inetd\&.conf اضافه کنید:
.sp
.if n \{\
.RS 4
.\}
.nf
cvspserver stream tcp nowait nobody git\-cvsserver pserver
.fi
.if n \{\
.RE
.\}
.sp
نکته: برخی از سرورهای inetd به شما اجازه میدهند نام فایل اجرایی را مستقل از مقدار argv[0] (یعنی نامی که برنامه فرض میکند با آن اجرا شده است) مشخص کنید\&. در این حالت خط صحیح در /etc/inetd\&.conf به این صورت خواهد بود:
.sp
.if n \{\
.RS 4
.\}
.nf
cvspserver stream tcp nowait nobody /usr/bin/git\-cvsserver git\-cvsserver pserver
.fi
.if n \{\
.RE
.\}
.sp
بهطور پیشفرض تنها دسترسی ناشناس (anonymous) توسط pserver ارائه میشود\&. برای کامیت کردن باید حسابهای کاربری pserver بسازید؛ کافی است تنظیم gitcvs\&.authdb را به فایل پیکربندی مخازنی که میخواهید cvsserver اجازهٔ نوشتن در آنها را بدهد اضافه کنید، برای مثال:
.sp
.if n \{\
.RS 4
.\}
.nf
[gitcvs]
authdb = /etc/cvsserver/passwd
.fi
.if n \{\
.RE
.\}
.sp
قالب این فایلها به صورت نام کاربری و به دنبال آن گذرواژهٔ رمزگذاریشده است، برای مثال:
.sp
.if n \{\
.RS 4
.\}
.nf
myuser:sqkNi8zPf01HI
myuser:$1$9K7FzU28$VfF6EoPYCJEYcVQwATgOP/
myuser:$5$\&.NqmNH1vwfzGpV8B$znZIcumu1tNLATgV2l6e1/mY8RzhUDHMOaVOeL1cxV3
.fi
.if n \{\
.RE
.\}
.sp
میتوانید از ابزار
\fIhtpasswd\fR
که همراه آپاچی ارائه میشود برای ایجاد این فایلها استفاده کنید، اما فقط با گزینهٔ \-d (یا \-B در صورتی که سیستم شما از آن پشتیبانی میکند)\&.
.sp
ترجیحاً از ابزار اختصاصی پلتفرم خود برای مدیریت و ایجاد هش گذرواژه استفاده کنید (مانند mkpasswd در لینوکس، encrypt در OpenBSD یا pwhash در NetBSD) و آن را در محل مناسب قرار دهید\&.
.sp
سپس گذرواژهٔ خود را از طریق روش pserver ارائه دهید، برای مثال:
.sp
.if n \{\
.RS 4
.\}
.nf
cvs \-d:pserver:someuser:somepassword@server:/path/repo\&.git co
.fi
.if n \{\
.RE
.\}
.sp
برای دسترسی از طریق SSH، نیازی به پیکربندی خاصی بهجز وجود ابزارهای گیت در PATH نیست\&. اگر کلاینتهایی دارید که متغیر محیطی CVS_SERVER را نمیپذیرند، میتوانید نام
\fIgit\-cvsserver\fR
را به
\fBcvs\fR
تغییر دهید\&.
.sp
نکته: نسخههای جدیدتر CVS (نسخهٔ 1\&.12\&.11 یا بالاتر) از تعیین مستقیم CVS_SERVER در CVSROOT نیز پشتیبانی میکنند، مانند:
.sp
.if n \{\
.RS 4
.\}
.nf
cvs \-d ":ext;CVS_SERVER=git cvsserver:user@server/path/repo\&.git" co
.fi
.if n \{\
.RE
.\}
.sp
این مزیت را دارد که در فایلهای
\fICVS/Root\fR
شما ذخیره میشود و نیازی نیست نگران تنظیم همیشگی متغیر محیطی مناسب باشید\&. کاربران SSH که به
\fIgit\-shell\fR
محدود شدهاند نیازی به بازنویسی پیشفرض با CVS_SERVER ندارند (و نباید این کار را بکنند)، زیرا
\fIgit\-shell\fR
متوجه میشود که
\fBcvs\fR
به معنای
\fIgit\-cvsserver\fR
است و بهتر تظاهر میکند که طرف دیگر کلاینت، یک
\fIcvs\fR
واقعی را اجرا میکند\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 2." 4.2
.\}
برای هر مخزنی که میخواهید از طریق CVS قابل دسترسی باشد، باید فایل config را در آن مخزن ویرایش کرده و بخش زیر را اضافه کنید:
.sp
.if n \{\
.RS 4
.\}
.nf
[gitcvs]
enabled=1
# اختیاری برای اشکالزدایی
logFile=/path/to/logfile
.fi
.if n \{\
.RE
.\}
.sp
نکته: باید اطمینان حاصل کنید هر کاربری که قرار است
\fIgit\-cvsserver\fR
را فراخوانی کند، دسترسی نوشتن به فایل لاگ و پایگاهداده را داشته باشد (بخش
«پایگاهداده پشتیبان»
را ببینید)\&. اگر میخواهید دسترسی نوشتن از طریق SSH ارائه دهید، کاربران مسلماً به دسترسی نوشتن در خود مخزن گیت نیز نیاز دارند\&.
.sp
همچنین برای کارکرد صحیح
\fBcvs\fR
\fBcommit\fR
باید اطمینان یابید که هر مخزن «خام» (bare - بدون فایل ایندکس گیت) باشد\&. به
.BR gitcvs-migration (7)
مراجعه کنید\&.
.sp
تمام متغیرهای پیکربندی میتوانند برای یک روش دسترسی خاص نیز بازنویسی شوند\&. نامهای معتبر روشها عبارتند از "ext" (برای دسترسی SSH) و "pserver"\&. نمونهٔ پیکربندی زیر دسترسی pserver را غیرفعال کرده در حالی که دسترسی از طریق SSH را همچنان مجاز نگه میدارد:
.sp
.if n \{\
.RS 4
.\}
.nf
[gitcvs]
enabled=0
[gitcvs "ext"]
enabled=1
.fi
.if n \{\
.RE
.\}
.sp
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 3." 4.2
.\}
اگر CVSROOT/CVS_SERVER را مستقیماً در دستور checkout مشخص نکردهاید تا بهطور خودکار در فایلهای
\fICVS/Root\fR
شما ذخیره شود، باید آنها را بهصراحت در محیط خود تنظیم کنید\&. CVSROOT باید طبق روال معمول تنظیم شود، اما دایرکتوری باید به مخزن گیت مناسب اشاره کند\&. همانند بالا، برای کلاینتهای SSH که به
\fIgit\-shell\fR
محدود
\fIنشدهاند\fR،
متغیر CVS_SERVER باید روی
\fIgit\-cvsserver\fR
تنظیم شود\&.
.sp
.if n \{\
.RS 4
.\}
.nf
export CVSROOT=:ext:user@server:/var/git/project\&.git
export CVS_SERVER="git cvsserver"
.fi
.if n \{\
.RE
.\}
.sp
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 4.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 4." 4.2
.\}
برای کلاینتهای SSH که اقدام به کامیت میکنند، اطمینان حاصل کنید که فایلهای \&.ssh/environment در سمت سرور (یا \&.bashrc و غیره، بسته به شل خاص آنها) مقادیر مناسبی را برای GIT_AUTHOR_NAME، GIT_AUTHOR_EMAIL، GIT_COMMITTER_NAME و GIT_COMMITTER_EMAIL صادر (export) کنند\&. برای کلاینتهای SSH که شل ورود آنها bash است، فایل \&.bashrc میتواند جایگزین معقولی باشد\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 5.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 5." 4.2
.\}
اکنون کلاینتها باید بتوانند پروژه را checkout کنند\&. از نام
\fImodule\fR
در CVS برای مشخص کردن اینکه کدام
\fIhead\fR
گیت را میخواهید دریافت کنید استفاده نمایید\&. این کار همچنین نام دایرکتوری جدید دریافتشده را تعیین میکند، مگر اینکه با
\fB\-d\fR
\fI\fR
نام دیگری مشخص کنید\&. برای مثال، دستور زیر شاخهٔ
\fImaster\fR
را در دایرکتوری
\fBproject\-master\fR
دریافت میکند:
.sp
.if n \{\
.RS 4
.\}
.nf
cvs co \-d project\-master master
.fi
.if n \{\
.RE
.\}
.sp
.RE
.SH "پایگاهداده پشتیبان (DATABASE BACKEND)"
.sp
دستور
\fIgit\-cvsserver\fR
برای هر شاخه/head گیت (یعنی ماژول CVS) از یک پایگاهداده برای ذخیرهٔ اطلاعات مخزن استفاده میکند تا شمارههای بازنگری CVS پایدار بمانند\&. این پایگاهداده باید پس از هر کامیت بهروزرسانی شود (یعنی در آن نوشته شود)\&.
.sp
اگر کامیت مستقیماً با استفاده از \fBgit\fR انجام شود (برخلاف استفاده از \fIgit\-cvsserver\fR)، بهروزرسانی باید در دسترسی بعدی به مخزن توسط \fIgit\-cvsserver\fR، مستقل از روش دسترسی و عملیات درخواستی، صورت پذیرد\&.
.sp
این بدان معناست که حتی اگر فقط دسترسی خواندن ارائه دهید (مثلاً با استفاده از روش pserver)، \fIgit\-cvsserver\fR باید دسترسی نوشتن به پایگاهداده را داشته باشد تا عملکرد قابل اعتمادی ارائه دهد (در غیر این صورت باید اطمینان حاصل کنید که پایگاهداده در هر بار اجرای \fIgit\-cvsserver\fR کاملاً بهروز باشد)\&.
.sp
بهطور پیشفرض از پایگاهدادههای SQLite در دایرکتوری گیت با نام \fBgitcvs\&.\fR\fI\fR\fB\&.sqlite\fR استفاده میشود\&. توجه داشته باشید که بکاند SQLite هنگام نوشتن، فایلهای موقتی در همان دایرکتوری فایل پایگاهداده ایجاد میکند؛ بنابراین ممکن است تنها اعطای دسترسی نوشتن به فایل پایگاهداده برای کاربرانی که از \fIgit\-cvsserver\fR استفاده میکنند کافی نباشد و نیاز به اعطای دسترسی نوشتن به دایرکتوری نیز داشته باشند\&.
.sp
پایگاهداده پس از تغییر شاخهای که ردیابی میکند، نمیتواند بهطور قابل اعتماد در یک فرم سازگار بازسازی شود\&. مثال: برای شاخههای ادغامشده، \fIgit\-cvsserver\fR تنها یک شاخه از توسعه را ردیابی میکند، و پس از یک \fIgit merge\fR ممکن است پایگاهدادهای که بهصورت تدریجی بهروزرسانی شده، شاخهٔ متفاوتی را نسبت به پایگاهدادهای که از ابتدا بازسازی شده ردیابی کند و این امر باعث ناسازگاری شمارههای بازنگری CVS شود\&. دستور \fBgit\-cvsserver\fR هیچ راهی برای آگاهی از این موضوع ندارد که اگر پیش از ادغام بهطور تدریجی اجرا شده بود کدام شاخه را انتخاب میکرد\&. بنابراین اگر مجبور به بازسازی کامل یا جزئی (از یک پشتیبان قدیمی) پایگاهداده شدید، باید نسبت به سندباکسهای موجود CVS محتاط باشید\&.
.sp
میتوانید بکاند پایگاهداده را با متغیرهای پیکربندی زیر تنظیم کنید:
.SS "پیکربندی پایگاهداده پشتیبان"
.sp
دستور
\fIgit\-cvsserver\fR
از ماژول DBI در پرل استفاده میکند\&. لطفاً در صورت تغییر این متغیرها مستندات آن را نیز بخوانید، بهویژه در مورد
\fBDBI\-\fR>\fBconnect\fR()\&.
.PP
gitcvs\&.dbName
.RS 4
نام پایگاهداده\&. معنای دقیق آن به درایور پایگاهدادهٔ انتخابی بستگی دارد؛ برای SQLite این یک نام فایل است\&. از جایگزینی متغیر پشتیبانی میکند (پایین را ببینید)\&. نباید حاوی نقطه ویرگول (;) باشد\&. پیشفرض:
\fI%Ggitcvs\&.%m\&.sqlite\fR
.RE
.PP
gitcvs\&.dbDriver
.RS 4
درایور DBI مورد استفاده\&. میتوانید هر درایور موجودی را برای این منظور در اینجا مشخص کنید، اما ممکن است کار نکند\&. دستور cvsserver با
\fIDBD::SQLite\fR
آزمایش شده، گزارش شده که با
\fIDBD::Pg\fR
کار میکند، و گزارش شده که با
\fIDBD::mysql\fR
کار
\fBنمیکند\fR\&.
لطفاً این مورد را یک قابلیت آزمایشی در نظر بگیرید\&. نباید حاوی دونقطه (\fB:\fR) باشد\&. پیشفرض:
\fISQLite\fR
.RE
.PP
gitcvs\&.dbuser
.RS 4
کاربر پایگاهداده\&. تنها در صورت تنظیم
\fBdbDriver\fR
مفید است، زیرا SQLite مفهومی از کاربر پایگاهداده ندارد\&. از جایگزینی متغیر پشتیبانی میکند (پایین را ببینید)\&.
.RE
.PP
gitcvs\&.dbPass
.RS 4
گذرواژهٔ پایگاهداده\&. تنها در صورت تنظیم
\fBdbDriver\fR
مفید است، زیرا SQLite مفهومی از گذرواژهٔ پایگاهداده ندارد\&.
.RE
.PP
gitcvs\&.dbTableNamePrefix
.RS 4
پیشوند نام جداول پایگاهداده\&. از جایگزینی متغیر پشتیبانی میکند (پایین را ببینید)\&. هر نویسهٔ غیرالفبایی با زیرخط (_) جایگزین خواهد شد\&.
.RE
.sp
تمام متغیرها میتوانند بر اساس هر روش دسترسی نیز تنظیم شوند، بالا را ببینید\&.
.sp
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBجایگزینی متغیرها\fR
.RS 4
.sp
در \fBdbDriver\fR و \fBdbUser\fR میتوانید از متغیرهای زیر استفاده کنید:
.PP
%G
.RS 4
نام دایرکتوری گیت
.RE
.PP
%g
.RS 4
نام دایرکتوری گیت، که در آن تمام نویسهها به جز حروف و ارقام، \&. و
\fB\-\fR
با
\fB_\fR
جایگزین شدهاند (این کار در صورت تمایل، استفاده از نام دایرکتوری را در یک نام فایل آسانتر میکند)
.RE
.PP
%m
.RS 4
نام ماژول CVS / شاخهٔ (head) گیت
.RE
.PP
%a
.RS 4
روش دسترسی (یکی از مقادیر "ext" یا "pserver")
.RE
.PP
%u
.RS 4
نام کاربری که
\fIgit\-cvsserver\fR
را اجرا میکند\&. اگر نامی قابل تشخیص نباشد، شناسهٔ عددی کاربر (uid) استفاده میشود\&.
.RE
.RE
.SH "محیط (ENVIRONMENT)"
.sp
این متغیرها در برخی شرایط نیاز به گزینههای خط فرمان را برطرف میکنند و استفادهٔ محدودشدهٔ آسانتر را از طریق git\-shell ممکن میسازند\&.
.PP
GIT_CVSSERVER_BASE_PATH
.RS 4
این متغیر جایگزین آرگومان \-\-base\-path میشود\&.
.RE
.PP
GIT_CVSSERVER_ROOT
.RS 4
این متغیر یک دایرکتوری واحد را مشخص میکند و جایگزین فهرست آرگومانهای
\fI\fR\&.\&.\&.
میشود\&. مخزن همچنان به گزینهٔ پیکربندی
\fBgitcvs\&.enabled\fR
نیاز دارد، مگر اینکه
\fB\-\-export\-all\fR
مشخص شده باشد\&.
.RE
.sp
هنگامی که این متغیرهای محیطی تنظیم شده باشند، آرگومانهای خط فرمان متناظر آنها نباید استفاده شوند\&.
.SH "نکات کلاینت CVS در اکلیپس (ECLIPSE CVS CLIENT NOTES)"
.sp
برای انجام یک دریافت (checkout) با کلاینت CVS اکلیپس:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 1." 4.2
.\}
گزینهٔ "Create a new project \(-> From CVS checkout" را انتخاب کنید\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 2." 4.2
.\}
یک مکان جدید ایجاد کنید\&. برای جزئیات نحوهٔ انتخاب پروتکل مناسب، نکات زیر را ببینید\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 3." 4.2
.\}
ماژولهای موجود
(\fImodules\fR)
را مرور کنید\&. این کار فهرستی از شاخهها/headهای موجود در مخزن را به شما میدهد\&. از آنجا قادر به مرور درخت دایرکتوری نخواهید بود، بلکه فقط headها نمایش داده میشوند\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 4.\h'+01'\c
.\}
.el \{\
.sp -1
.IP " 4." 4.2
.\}
هنگامی که پرسیده شد کدام شاخه/برچسب checkout شود،
\fBHEAD\fR
را انتخاب کنید\&. تیک گزینهٔ "launch commit wizard" را بردارید تا از کامیت شدن فایل \&.project جلوگیری شود\&.
.RE
.sp
نکات پروتکل: اگر از دسترسی ناشناس از طریق pserver استفاده میکنید، همان را انتخاب نمایید\&. کسانی که از دسترسی SSH استفاده میکنند باید پروتکل \fIext\fR را انتخاب کرده و دسترسی \fIext\fR را در بخش Preferences\(->Team\(->CVS\(->ExtConnection پیکربندی کنند\&. مقدار CVS_SERVER را روی "\fBgit\fR \fBcvsserver\fR" تنظیم کنید\&. توجه داشته باشید که هنگام استفاده از \fIext\fR، پشتیبانی از گذرواژه مناسب نیست؛ قطعاً میخواهید کلیدهای SSH را راهاندازی کرده باشید\&.
.sp
همچنین میتوانید از پروتکل غیر استاندارد extssh که اکلیپس ارائه میدهد استفاده کنید\&. در این حالت CVS_SERVER نادیده گرفته میشود و باید ابزار cvs را روی سرور با \fIgit\-cvsserver\fR جایگزین کنید یا \fB\&.bashrc\fR خود را طوری تغییر دهید که اجرای \fIcvs\fR عملاً \fIgit\-cvsserver\fR را فراخوانی کند\&.
.SH "کلاینتهای سازگار و آزمایششده (CLIENTS KNOWN TO WORK)"
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
برنامهٔ CVS نسخهٔ 1\&.12\&.9 در دبیان (Debian)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
برنامهٔ CVS نسخهٔ 1\&.11\&.17 در مکاواس (MacOSX - از بستهٔ Fink)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
اکلیپس نسخههای 3\&.0 و 3\&.1\&.2 در مکاواس (نکات کلاینت CVS در اکلیپس را ببینید)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
برنامهٔ TortoiseCVS
.RE
.SH "عملیاتهای پشتیبانیشده (OPERATIONS SUPPORTED)"
.sp
تمام عملیاتهای مورد نیاز برای استفادهٔ عادی پشتیبانی میشوند، از جمله checkout، diff، status، update، log، add، remove و commit\&.
.sp
بیشتر آرگومانهای دستور CVS که برچسبها یا شمارههای بازنگری CVS را میخوانند (معمولاً \-r) کار میکنند، و همچنین از هر refspec گیت (برچسب، شاخه، شناسهٔ کامیت و غیره) پشتیبانی مینمایند\&. با این حال، شمارههای بازنگری CVS برای شاخههای غیرپیشفرض به خوبی شبیهسازی نمیشوند و دستور cvs log برچسبها یا شاخهها را اصلاً نمایش نمیدهد\&. (شمارههای بازنگری CVS برای شاخههای غیر اصلی ظاهراً شبیه شمارههای بازنگری CVS هستند، اما در واقع مستقیماً یک شناسهٔ کامیت گیت را کدگذاری میکنند، نه اینکه نشاندهندهٔ تعداد بازنگریها از زمان انشعاب شاخه باشند\&.)
.sp
توجه داشته باشید که دو راه برای checkout کردن یک شاخهٔ خاص وجود دارد\&. همانطور که در بخشهای دیگر این صفحه شرح داده شده است، پارامتر "module" در دستور cvs checkout به عنوان نام شاخه تفسیر میشود و به شاخهٔ اصلی تبدیل میگردد\&. این شاخه حتی اگر موقتاً با دستور cvs update \-r شاخهٔ دیگری را پایدار (sticky) کنید، همچنان شاخهٔ اصلی برای یک سندباکس مشخص باقی میماند\&. بهعلاوه، آرگومان \-r میتواند شاخهٔ دیگری را برای دریافت واقعی مشخص کند، حتی اگر ماژول همچنان شاخهٔ "اصلی" باشد\&. مقایسه و توازن (طبق پیادهسازی فعلی): هر "ماژول" جدید یک پایگاهدادهٔ جدید روی دیسک با تاریخچهٔ ماژول مشخصشده ایجاد میکند، و پس از ایجاد پایگاهداده، عملیاتها بر روی آن شاخهٔ اصلی سریع خواهند بود\&. در مقابل، گزینهٔ \-r هیچ فضای دیسک اضافهای اشغال نمیکند، اما ممکن است برای بسیاری از عملیاتها مانند cvs update به میزان قابل توجهی کندتر باشد\&.
.sp
اگر میخواهید به یک refspec گیت ارجاع دهید که شامل نویسههای غیرمجاز در CVS است، دو گزینه پیش رو دارید\&. نخست اینکه شاید ارائهٔ مستقیم refspec گیت به آرگومان مناسب \-r در CVS مستقیماً کار کند؛ زیرا به نظر میرسد برخی کلاینتهای CVS بررسی دقیقی روی آرگومان انجام نمیدهند\&. دوم، در صورت عدم موفقیت، میتوانید از یک سازوکار فرار (escape) نویسههای خاص استفاده کنید که تنها از نویسههای معتبر در برچسبهای CVS بهره میبرد\&. توالیای متشکل از ۴ یا ۵ نویسه به قالب (زیرخط ("_")، خط تیره ("\-")، یک یا دو نویسه، و خط تیره ("\-")) میتواند بر اساس آن یک یا دو حرف، نویسههای مختلفی را کدگذاری کند: "s" برای اسلش ("/")، "p" برای نقطه ("\&.")، "u" برای زیرخط ("_")، یا دو رقم هگزادسیمال برای هر مقدار بایت دیگر (معمولاً یک عدد اسکی، یا بخشی از یک نویسه با کدگذاری UTF\-8)\&.
.sp
عملیاتهای پایش قدیمی (مانند edit، watch و موارد مرتبط) پشتیبانی نمیشوند\&. استخراج (Export) و برچسبگذاری (برچسبها و شاخهها) در این مرحله پشتیبانی نمیشوند\&.
.SS "تبدیل انتهای خط CRLF"
.sp
بهطور پیشفرض سرور حالت \fB\-k\fR را برای همهٔ فایلها خالی میگذارد، که باعث میشود کلاینت CVS با آنها مانند فایلهای متنی رفتار کند که در برخی پلتفرمها مشمول تبدیل انتهای خط میشوند\&.
.sp
میتوانید با تنظیم متغیر پیکربندی \fBgitcvs\&.usecrlfattr\fR کاری کنید که سرور از مشخصههای تبدیل انتهای خط برای تنظیم حالتهای \fB\-k\fR فایلها استفاده کند\&. برای اطلاعات بیشتر در مورد تبدیل انتهای خط،
.BR gitattributes (5)
را ببینید\&.
.sp
همچنین اگر پیکربندی \fBgitcvs\&.usecrlfattr\fR فعال نباشد یا مشخصهها اجازهٔ تشخیص خودکار برای یک نام فایل را ندهند، سرور از پیکربندی \fBgitcvs\&.allBinary\fR برای تنظیمات پیشفرض استفاده میکند\&. اگر \fBgitcvs\&.allBinary\fR تنظیم شده باشد، فایلهایی که وضعیت دیگری برای آنها مشخص نشده به حالت \fI\-kb\fR پیشفرض خواهند شد\&. در غیر این صورت حالت \fB\-k\fR خالی گذاشته میشود\&. اما اگر \fBgitcvs\&.allBinary\fR روی "guess" تنظیم شده باشد، حالت صحیح \fB\-k\fR بر اساس محتوای فایل حدس زده میشود\&.
.sp
برای بیشترین سازگاری با \fIcvs\fR، احتمالاً بهترین کار این است که پیشفرضها را با تنظیم \fBgitcvs\&.usecrlfattr\fR روی true و \fBgitcvs\&.allBinary\fR روی "guess" بازنویسی کنید\&.
.SH "وابستگیها (DEPENDENCIES)"
.sp
دستور
\fIgit\-cvsserver\fR
به DBD::SQLite وابسته است\&.
.SH "همچنین ببینید (SEE ALSO)"
.BR git (1),
.BR git-daemon (1),
.BR gitattributes (5),
.BR gitcvs-migration (7)
.SH "گیت (GIT)"
.sp
بخشی از مجموعهٔ
.BR git (1)