CVS(1) General Commands Manual CVS(1)

cvs - سامانه نسخه‌های همگام (Concurrent Versions System)

cvs_command [ command_options ] [ command_args ]

این صفحه راهنما خلاصه‌ای از برخی ویژگی‌های cvs است. این متن به‌صورت خودکار از پیوست راهنمای CVS تولید شده است. برای مستندات جامع‌تر و دقیق‌تر، لطفاً به راهنمای Cederqvist (از طریق دستور info CVS یا روش‌های دیگر، همان‌گونه که در بخش SEE ALSO این صفحه راهنما آمده است) مراجعه کنید. ارجاعات متقابل در این صفحه راهنما به گره‌های همان راهنما اشاره دارند.

این پیوست ساختار کلی دستورهای cvs را شرح می‌دهد و برخی دستورها را با جزئیات بیان می‌کند (دستورهای دیگر در جاهای دیگر شرح داده شده‌اند؛ برای یک مرجع سریع از دستورهای cvs، به گره `Invoking CVS' در راهنمای CVS مراجعه کنید).

قالب کلی همه دستورهای cvs به این صورت است:

cvs [ cvs_options ] cvs_command [ command_options ] [ command_args ]
cvs
نام برنامه cvs.
cvs_options
گزینه‌هایی که بر تمام زیردستورهای cvs تأثیر می‌گذارند. این موارد در ادامه شرح داده شده‌اند.
cvs_command
یکی از چندین زیردستور مختلف. برخی از دستورها دارای نام‌های مستعاری هستند که می‌توان به جای آن‌ها استفاده کرد؛ این نام‌های مستعار در راهنمای مرجع مربوط به آن دستور ذکر شده‌اند. تنها در دو حالت می‌توانید cvs_command را حذف کنید: cvs -H فهرستی از دستورهای موجود را نمایش می‌دهد، و cvs -v اطلاعات نگارش خودِ cvs را نشان می‌دهد.
command_options
گزینه‌های مخصوص آن دستور.
command_args
آرگومان‌های ارسالی به دستورها.

متأسفانه کمی سردرگمی میان cvs_options و command_options وجود دارد. هنگامی که گزینه‌ای به عنوان یک cvs_option ارائه می‌شود، برخی گزینه‌ها تنها بر برخی از دستورها تأثیر می‌گذارند. زمانی که به عنوان یک command_option داده می‌شود ممکن است معنای متفاوتی داشته باشد، و توسط دستورهای بیشتری پذیرفته شود. به عبارت دیگر، دسته‌بندی فوق را خیلی جدی نگیرید. در عوض به مستندات مربوطه مراجعه کنید.

دستور cvs می‌تواند با تنظیم exit status (وضعیت خروج) خود، موفقیت‌آمیز بودن یا شکست را به محیط فراخواننده اعلام کند. روش دقیق آزمایش وضعیت خروج از یک سیستم‌عامل به سیستم‌عامل دیگر متفاوت خواهد بود. برای نمونه در یک اسکریپت شل یونیکس، اگر آخرین دستور وضعیت خروج موفقیت‌آمیز برگردانده باشد متغیر $? برابر ۰ خواهد بود، و اگر وضعیت خروج نشان‌دهنده شکست باشد، بزرگ‌تر از ۰ خواهد بود.

اگر cvs موفقیت‌آمیز باشد، یک وضعیت موفقیت برمی‌گرداند؛ اگر خطایی رخ دهد، یک پیام خطا چاپ کرده و وضعیت شکست برمی‌گرداند. تنها استثنا برای این موضوع دستور cvs diff است. این دستور در صورتی که هیچ تفاوتی نیابد وضعیت موفقیت برمی‌گرداند، و اگر تفاوتی وجود داشته باشد یا خطایی رخ داده باشد، وضعیت شکست برمی‌گرداند. از آنجا که این رفتار روش مناسبی برای تشخیص خطاها فراهم نمی‌کند، در آینده ممکن است cvs diff تغییر یابد تا مانند سایر دستورهای cvs رفتار کند.

برخی command_options وجود دارند که آن‌قدر مکرر استفاده می‌شوند که ممکن است برای اطمینان از این‌که همیشه آن گزینه را مشخص می‌کنید، یک نام مستعار (alias) یا روش دیگری تنظیم کرده باشید. یک نمونه (که در واقع انگیزه اصلی پیاده‌سازی پشتیبانی از .cvsrc بود) این است که بسیاری از افراد خروجی پیش‌فرض دستور diff را بسیار دشوار برای خواندن می‌دانند، و معتقدند قالب‌های context diff یا unidiff بسیار آسان‌تر فهمیده می‌شوند.

پرونده ~/.cvsrc راهکاری است که از طریق آن می‌توانید گزینه‌های پیش‌فرضی را به cvs_commands در درون cvs اضافه کنید، به جای آنکه به نام‌های مستعار یا سایر اسکریپت‌های شل متکی باشید.

قالب پرونده ~/.cvsrc ساده است. پرونده برای یافتن خطی جستجو می‌شود که با همان نام cvs_command در حال اجرا آغاز گردد. اگر تطابقی یافت شود، باقی‌مانده خط (در محل نویسه‌های فاصله) به گزینه‌های جداگانه تقسیم شده و پیش از هر گزینه‌ای از خط فرمان، به آرگومان‌های دستور افزوده می‌شود.

اگر یک دستور دو نام داشته باشد (برای نمونه، checkout و co)، نام رسمی، و نه لزوماً نامی که در خط فرمان به کار رفته است، برای تطابق با پرونده استفاده خواهد شد. بنابراین اگر محتوای پرونده ~/.cvsrc کاربر به این صورت باشد:

log -N
diff -uN
rdiff -u
update -Pd
checkout -P
release -d

به آرگومان‌های دستور cvs checkout foo و همچنین cvs co foo، گزینه -P افزوده خواهد شد.

با پرونده نمونه بالا، خروجی دستور cvs diff foobar در قالب unidiff خواهد بود. دستور cvs diff -c foobar مانند معمول خروجی context diff را ارائه می‌دهد. دریافت تفاوت‌ها با قالب "قدیمی" کمی پیچیده‌تر خواهد بود، چرا که diff گزینه‌ای برای تعیین استفاده از قالب "قدیمی" ندارد، بنابراین به cvs -f diff foobar نیاز خواهید داشت.

به جای نام دستور می‌توانید از cvs برای مشخص کردن گزینه‌های سراسری استفاده کنید (به گره `Global options' در راهنمای CVS مراجعه کنید). برای نمونه، خط زیر در .cvsrc

cvs -z6

باعث می‌شود cvs از سطح فشرده‌سازی ۶ استفاده کند.

گزینه‌های در دسترس cvs_options (که در سمت چپ cvs_command قرار می‌گیرند) عبارتند از:

--allow-root=rootdir
دایرکتوری مجاز cvsroot را مشخص می‌کند. به `Password authentication server' در راهنمای CVS مراجعه کنید.
-a
تمام ارتباطات میان کلاینت و سرور را احراز هویت می‌کند. تنها بر کلاینت cvs تأثیر دارد. در زمان نگارش این متن، این قابلیت تنها هنگام استفاده از یک اتصال GSSAPI پیاده‌سازی شده است (به گره `GSSAPI authenticated' در راهنمای CVS مراجعه کنید). احراز هویت از انواع خاصی از حملات مبتنی بر ربودن اتصال فعال tcp جلوگیری می‌کند. فعال کردن احراز هویت، رمزنگاری را فعال نمی‌کند.
-b bindir
در cvs نسخه 1.9.18 و قدیمی‌تر، این گزینه مشخص می‌کرد که برنامه‌های rcs در دایرکتوری bindir قرار دارند. نسخه‌های کنونی cvs برنامه‌های rcs را اجرا نمی‌کنند؛ برای سازگاری، این گزینه پذیرفته می‌شود، اما هیچ کاری انجام نمی‌دهد.
-T tempdir
از tempdir به عنوان دایرکتوری محل قرارگیری پرونده‌های موقت استفاده می‌کند. مقدار تنظیم‌شده متغیر محیطی $TMPDIR و هر دایرکتوری از پیش کامپایل‌شده‌ای را بازنویسی می‌کند. این پارامتر باید به عنوان یک نام مسیر مطلق مشخص شود. (هنگام اجرای کلاینت/سرور، -T تنها بر فرایند محلی تأثیر می‌گذارد؛ مشخص کردن -T برای کلاینت هیچ اثری روی سرور ندارد و برعکس.)
-d cvs_root_directory
از cvs_root_directory به عنوان نام مسیر دایرکتوری ریشه مخزن استفاده می‌کند. مقدار تنظیم‌شده متغیر محیطی $CVSROOT را بازنویسی می‌کند. به `Repository' در راهنمای CVS مراجعه کنید.
-e editor
از editor برای وارد کردن اطلاعات ثبت بازنگری (revision log) استفاده می‌کند. مقدار تنظیم‌شده متغیرهای محیطی $CVSEDITOR و $EDITOR را بازنویسی می‌کند. برای اطلاعات بیشتر، به `Committing your changes' در راهنمای CVS مراجعه کنید.
-f
پرونده ~/.cvsrc را نمی‌خواند. این گزینه بیشتر به دلیل عدم تعامد (non-orthogonality) مجموعه گزینه‌های cvs به کار می‌رود. برای نمونه، گزینه -N در cvs log (غیرفعال کردن نمایش نام‌های برچسب) گزینه متناظری برای فعال کردن نمایش ندارد. بنابراین اگر در مدخل مربوط به log در ~/.cvsrc گزینه -N را داشته باشید، ممکن است برای نمایش نام‌های برچسب نیاز به استفاده از -f داشته باشید.
-H
--help
اطلاعات نحوه استفاده از cvs_command مشخص‌شده را نمایش می‌دهد (اما دستور را عملاً اجرا نمی‌کند). اگر نام دستوری را مشخص نکنید، cvs -H راهنمای کلی برای cvs را شامل فهرستی از سایر گزینه‌های راهنما نمایش می‌دهد.
-n
هیچ پرونده‌ای را تغییر نمی‌دهد. تلاش می‌کند cvs_command را اجرا کند، اما صرفاً برای صدور گزارش‌ها؛ هیچ پرونده موجودی را حذف، به‌روزرسانی یا ادغام نمی‌کند، و هیچ پرونده جدیدی نمی‌سازد.

توجه داشته باشید که cvs لزوماً خروجی دقیقاً یکسانی نسبت به حالت بدون -n تولید نخواهد کرد. در برخی موارد خروجی یکسان خواهد بود، اما در موارد دیگر cvs از برخی پردازش‌هایی که برای تولید خروجی دقیقاً یکسان مورد نیاز بوده است، صرف‌نظر خواهد کرد.

-Q
باعث می‌شود دستور کاملاً ساکت باشد؛ این دستور تنها برای مشکلات جدی خروجی تولید خواهد کرد.
-q
باعث می‌شود دستور تا حدی ساکت باشد؛ پیام‌های اطلاعاتی، مانند گزارش‌های پیمایش بازگشتی در زیرشاخه‌ها، متوقف (نادیده گرفته) می‌شوند.
-r
فایل‌های کاری جدید را فقط‌خواندنی می‌کند. اثری مشابه با زمانی دارد که متغیر محیطی $CVSREAD تنظیم شده باشد (به گره `Environment variables' در راهنمای CVS مراجعه کنید). حالت پیش‌فرض، قابل‌نوشتن کردن فایل‌های کاری است، مگر اینکه نظارت‌ها (watches) فعال باشند (به گره `Watches' در راهنمای CVS مراجعه کنید).
-s variable=value
یک متغیر کاربری تنظیم می‌کند (به گره `Variables' در راهنمای CVS مراجعه کنید).
-t
ردیابی اجرای برنامه؛ نمایش پیام‌هایی که مراحل فعالیت cvs را نشان می‌دهند. به‌ویژه همراه با -n برای بررسی تأثیر احتمالی یک دستور ناآشنا مفید است.
-v
--version
اطلاعات نسخه و حق نشر را برای cvs نمایش می‌دهد.
-w
فایل‌های کاری جدید را خواندنی-نوشتنی می‌کند. تنظیمات متغیر محیطی $CVSREAD را لغو می‌کند. فایل‌ها به‌طور پیش‌فرض خواندنی-نوشتنی ایجاد می‌شوند، مگر اینکه $CVSREAD تنظیم شده باشد یا -r مشخص شده باشد.
-x
تمام ارتباطات میان کلاینت و سرور را رمزگذاری می‌کند. تنها بر کلاینت cvs اثر می‌گذارد. در زمان نگارش این راهنما، این قابلیت تنها هنگام استفاده از یک اتصال GSSAPI (به گره `GSSAPI authenticated' در راهنمای CVS مراجعه کنید) یا یک اتصال Kerberos (به گره `Kerberos authenticated' در راهنمای CVS مراجعه کنید) پیاده‌سازی شده است. فعال‌سازی رمزگذاری مستلزم این است که ترافیک پیام‌ها نیز احراز اصالت شود. پشتیبانی از رمزگذاری به‌طور پیش‌فرض در دسترس نیست؛ هنگام ساخت cvs باید با استفاده از گزینه پیکربندی ویژه، --enable-encryption، فعال شود.
-z gzip-level
سطح فشرده‌سازی را تعیین می‌کند. سطوح معتبر از 1 (سرعت بالا، فشرده‌سازی کم) تا 9 (سرعت کم، فشرده‌سازی بالا)، یا 0 برای غیرفعال کردن فشرده‌سازی (پیش‌فرض) هستند. تنها بر کلاینت cvs اثر می‌گذارد.

این بخش command_optionsهایی را شرح می‌دهد که در چندین دستور cvs در دسترس هستند. این گزینه‌ها همواره در سمت راست cvs_command قرار می‌گیرند. همه دستورها از تمام این گزینه‌ها پشتیبانی نمی‌کنند؛ هر گزینه تنها برای دستوراتی پشتیبانی می‌شود که در آن‌ها کاربرد دارد. با این حال، هنگامی که دستوری یکی از این گزینه‌ها را دارد، تقریباً همیشه می‌توانید روی همان رفتار گزینه مانند سایر دستورات حساب کنید. (سایر گزینه‌های دستور، که همراه با دستورات به‌طور جداگانه فهرست شده‌اند، ممکن است از یک دستور cvs به دستور دیگر رفتار متفاوتی داشته باشند).

دستور history یک استثنا است؛ این دستور از گزینه‌های متعددی پشتیبانی می‌کند که حتی با این گزینه‌های استاندارد نیز در تضاد هستند.

-D date_spec
از تازه‌ترین ویرایشی که پس از date_spec نباشد استفاده می‌کند. date_spec یک آرگومان منفرد است، شرح تاریخی که تاریخی در گذشته را مشخص می‌کند.

این مشخصه هنگامی که برای ایجاد یک نسخه کپی شخصی از یک فایل مبدأ استفاده می‌شود، چسبنده (sticky) است؛ بدین معنا که وقتی با استفاده از -D یک فایل کاری دریافت می‌کنید، cvs تاریخی را که مشخص کرده‌اید ثبت می‌کند، به‌طوری‌که به‌روزرسانی‌های بعدی در همان شاخه از همان تاریخ استفاده خواهند کرد (برای اطلاعات بیشتر درباره برچسب‌ها/تاریخ‌های چسبنده، به گره `Sticky tags' در راهنمای CVS مراجعه کنید).

گزینه -D با دستورهای annotate، checkout، diff، export، history، rdiff، rtag، و update در دسترس است. (دستور history از این گزینه به روشی کمی متفاوت استفاده می‌کند؛ به گره `history options' در راهنمای CVS مراجعه کنید).

تنوع گسترده‌ای از قالب‌های تاریخ توسط cvs پشتیبانی می‌شود. استانداردترین آن‌ها ISO8601 (از سازمان بین‌المللی استانداردسازی) و استاندارد ایمیل اینترنت (مشخص‌شده در RFC822 اصلاح‌شده با RFC1123) هستند.

تاریخ‌های ISO8601 گونه‌های متعددی دارند اما چند نمونه عبارتند از:

1972-09-24
1972-09-24 20:05

قالب‌های تاریخ ISO8601 بسیار بیشتری وجود دارند، و cvs بسیاری از آن‌ها را می‌پذیرد، اما احتمالاً تمایل ندارید کل ماجرای طولانی را بشنوید :-).

علاوه بر تاریخ‌های مجاز در خود ایمیل اینترنت، cvs همچنین اجازه می‌دهد برخی فیلدها حذف شوند. برای مثال:

24 Sep 1972 20:05
24 Sep

تاریخ در منطقه زمانی محلی تفسیر می‌شود، مگر اینکه منطقه زمانی مشخصی تعیین شده باشد.

این دو قالب تاریخ ارجحیت دارند. با این حال، cvs در حال حاضر تنوع گسترده‌ای از سایر قالب‌های تاریخ را نیز می‌پذیرد. آن‌ها عمداً در اینجا با جزئیات مستند نشده‌اند، و ممکن است نسخه‌های بعدی cvs همه آن‌ها را نپذیرند.

یکی از این قالب‌ها month/day/year است. این ممکن است افرادی را که عادت به ترتیب متفاوتی از ماه و روز دارند سردرگم کند؛ 1/4/96 برابر با ۴ ژانویه است، نه اول آوریل.

به یاد داشته باشید که آرگومان گزینه -D را درون علامت نقل‌قول قرار دهید تا پوسته شما فاصله‌ها را به عنوان جداکننده آرگومان‌ها تفسیر نکند. دستوری با استفاده از فلگ -D می‌تواند شبیه این باشد:

$ cvs diff -D "1 hour ago" cvs.texinfo
-f
هنگامی که یک تاریخ یا برچسب مشخص را برای دستورهای cvs تعیین می‌کنید، آن‌ها معمولاً فایل‌هایی را که شامل آن برچسب نیستند (یا پیش از آن تاریخ وجود نداشته‌اند) نادیده می‌گیرند. اگر می‌خواهید فایل‌ها حتی بدون تطابق برچسب یا تاریخ بازیابی شوند، از گزینه -f استفاده کنید. (از تازه‌ترین ویرایش فایل استفاده خواهد شد).

توجه داشته باشید که حتی با -f، برچسبی که مشخص می‌کنید باید وجود داشته باشد (یعنی در برخی فایل‌ها، نه لزوماً در تمام فایل‌ها). این کار باعث می‌شود اگر نام برچسب را اشتباه تایپ کنید، cvs همچنان خطا دهد.

گزینه -f با این دستورها در دسترس است: annotate، checkout، export، rdiff، rtag، و update.

هشدار: دستورهای commit و remove نیز دارای گزینه -f هستند، اما رفتار آن برای این دستورها متفاوت است. به `commit options' در راهنمای CVS و `Removing files' در راهنمای CVS مراجعه کنید.

-k kflag
پردازش پیش‌فرض کلمات کلیدی را تغییر می‌دهد. برای معنای kflag به `Keyword substitution' در کتابچه راهنمای CVS مراجعه کنید. مشخصه kflag شما هنگامی که از آن برای ساختن یک نسخه خصوصی از پرونده مبدأ استفاده می‌کنید، sticky (ماندگار) است؛ به این معنی که وقتی از این گزینه همراه با دستورهای checkout یا update استفاده می‌کنید، cvs مقدار kflag انتخابی شما را به پرونده مرتبط می‌سازد، و در دستورهای update آینده روی همان پرونده نیز به استفاده از آن ادامه می‌دهد تا زمانی که خلاف آن را مشخص کنید.

گزینه -k با دستورهای add، checkout، diff، rdiff، import و update در دسترس است.

-l
محلی؛ فقط در دایرکتوری کاری فعلی اجرا می‌شود، به جای پیمایش بازگشتی در زیردایرکتوری‌ها.

در دسترس با دستورهای زیر: annotate، checkout، commit، diff، edit، editors، export، log، rdiff، remove، rtag، status، tag، unedit، update، watch و watchers.

-m message
استفاده از message به عنوان اطلاعات گزارش (log)، به جای فراخوانی یک ویرایشگر.

در دسترس با دستورهای زیر: add، commit و import.

-n
هیچ برنامه برچسب‌گذاری (tag program) اجرا نشود. (می‌توان برنامه‌ای را برای اجرا در پایگاه داده ماژول‌ها مشخص کرد (گره `modules' در کتابچه راهنمای CVS را ببینید)؛ این گزینه آن را دور می‌زند).

این گزینه با گزینه برنامه‌ای cvs -n که می‌توانید در سمت چپ دستور cvs مشخص کنید یکسان نیست!

در دسترس با دستورهای checkout، export و rtag.

-P
دایرکتوری‌های خالی هرس شوند. `Removing directories' در کتابچه راهنمای CVS را ببینید.
-p
پرونده‌های دریافت‌شده از مخزن را به جای نوشتن در دایرکتوری فعلی، به خروجی استاندارد لوله‌کشی (pipe) می‌کند. در دسترس با دستورهای checkout و update.
-R
پردازش بازگشتی دایرکتوری‌ها. این ویژگی به طور پیش‌فرض فعال است.

در دسترس با دستورهای زیر: annotate، checkout، commit، diff، edit، editors، export، rdiff، remove، rtag، status، tag، unedit، update، watch و watchers.

-r tag
استفاده از بازنگری مشخص‌شده توسط آرگومان tag به جای بازنگری پیش‌فرض head. علاوه بر برچسب‌های دلخواه تعریف‌شده توسط دستور tag یا rtag، دو برچسب ویژه همیشه در دسترس هستند: HEAD به تازه‌ترین نسخه موجود در مخزن اشاره دارد، و BASE به بازنگری‌ای که آخرین بار در دایرکتوری کاری فعلی واکشی کرده‌اید اشاره می‌کند.

هنگامی که از این گزینه به همراه checkout یا update برای ساختن نسخه اختصاصی خود از یک پرونده استفاده می‌کنید، مشخصه برچسب sticky (ماندگار) خواهد بود: cvs برچسب را به خاطر می‌سپارد و در دستورهای update آینده نیز به استفاده از آن ادامه می‌دهد، تا زمانی که خلاف آن را مشخص کنید (برای اطلاعات بیشتر در مورد برچسب‌ها/تاریخ‌های ماندگار، گره `Sticky tags' در کتابچه راهنمای CVS را ببینید).

برچسب می‌تواند یک برچسب نمادین یا عددی باشد، همان‌طور که در `Tags' در کتابچه راهنمای CVS شرح داده شده است، یا نام یک شاخه (branch)، همان‌طور که در `Branching and merging' در کتابچه راهنمای CVS آمده است. هنگامی که یک دستور انتظار یک بازنگری خاص را دارد، نام یک شاخه به عنوان تازه‌ترین بازنگری در آن شاخه تفسیر می‌شود.

مشخص کردن گزینه سراسری -q همراه با گزینه دستوری -r اغلب مفید است، برای فرونشاندن پیام‌های هشدار در زمانی که پرونده rcs حاوی برچسب مشخص‌شده نباشد.

این با گزینه کلی cvs -r که می‌توانید در سمت چپ دستور cvs مشخص کنید یکسان نیست!

-r با دستورهای annotate، checkout، commit، diff، history، export، rdiff، rtag و update در دسترس است.

-W
نام پرونده‌هایی را که باید پالایش (فیلتر) شوند مشخص می‌کند. می‌توانید از این گزینه مکرراً استفاده کنید. این مشخصه می‌تواند یک الگوی نام پرونده از همان نوعی باشد که می‌توانید در پرونده .cvswrappers مشخص کنید. در دسترس با دستورهای زیر: import و update.

  • خلاصه (Synopsis): add [-k rcs-kflag] [-m message] files...
  • نیازمندی‌ها (Requires): مخزن (repository)، دایرکتوری کاری (working directory).
  • تغییرات (Changes): مخزن (repository)، دایرکتوری کاری (working directory).

    دستور add برای معرفی پرونده‌ها و دایرکتوری‌های جدید جهت افزودن به مخزن cvs به کار می‌رود. هنگامی که add بر روی یک دایرکتوری استفاده شود، یک دایرکتوری جدید بلافاصله در مخزن ایجاد می‌گردد. هنگامی که بر روی یک پرونده به کار رود، تنها دایرکتوری کاری به‌روزرسانی می‌شود. تغییرات در مخزن تا زمانی که دستور commit بر روی پرونده تازه افزوده شده اجرا نشود، اعمال نمی‌گردند.

    دستور add همچنین پرونده‌هایی را که قبلاً حذف شده‌اند احیا می‌کند. این کار می‌تواند قبل یا بعد از استفاده از دستور commit برای نهایی‌سازی حذف پرونده‌ها انجام شود. پرونده‌های احیاشده در همان زمان اجرای دستور add در دایرکتوری کاری بازیابی می‌شوند.

این گزینه‌های استاندارد توسط add پشتیبانی می‌شوند (برای شرح کامل آن‌ها، گره `Common options' را در راهنمای CVS ببینید):

-k kflag
پردازش کلیدواژه‌ها مطابق با kflag. گره `Keyword substitution' را در راهنمای CVS ببینید. این گزینه چسبنده (sticky) است؛ به‌روزرسانی‌های آتیِ این پرونده در این دایرکتوری کاری از همین kflag استفاده خواهند کرد. دستور status می‌تواند برای مشاهده گزینه‌های چسبنده بررسی شود. برای اطلاعات بیشتر درباره دستور status، گره `Invoking CVS' را در راهنمای CVS ببینید.
-m message
استفاده از message به عنوان پیام گزارش، به جای فراخوانی یک ویرایشگر.

$ mkdir doc
$ cvs add doc
Directory /path/to/repository/doc added to the repository

$ >TODO
$ cvs add TODO
cvs add: scheduling file `TODO' for addition
cvs add: use 'cvs commit' to add this file permanently

$ rm -f makefile
$ cvs remove makefile
cvs remove: scheduling `makefile' for removal
cvs remove: use 'cvs commit' to remove this file permanently
$ cvs add makefile
U makefile
cvs add: makefile, version 1.2, resurrected

  • نیازمندی‌ها (Requires): مخزن (repository)، دایرکتوری کاری (working directory).
  • تغییرات (Changes): مخزن (repository).
  • مترادف (Synonym): rcs

    این رابط cvs با امکانات مدیریتی گوناگون است. برخی از آن‌ها کاربرد چندانی برای cvs ندارند اما برای اهداف تاریخی حفظ شده‌اند. برخی از این گزینه‌های تردیدبرانگیز احتمالاً در آینده حذف خواهند شد. این دستور به صورت بازگشتی عمل می‌کند، بنابراین باید نهایت دقت را به کار برد.

    در یونیکس، اگر گروهی به نام cvsadmin وجود داشته باشد، تنها اعضای آن گروه می‌توانند cvs admin را اجرا کنند (به استثنای دستور cvs admin -k که برای هر کاربری قابل اجرا است). این گروه باید روی سرور، یا هر سامانه‌ای که نسخه غیر کلاینت/سرورِ cvs را اجرا می‌کند وجود داشته باشد. برای غیرمجاز کردن cvs admin برای تمامی کاربران، گروهی بسازید که هیچ کاربری در آن نباشد. در NT، ویژگی cvsadmin وجود ندارد و همه کاربران می‌توانند cvs admin را اجرا نمایند.

برخی از این گزینه‌ها کاربرد چندانی برای cvs ندارند اما به دلایل تاریخی وجود دارند. حتی برخی از آن‌ها تا زمانی که اثرشان را لغو نکنید، استفاده از cvs را غیرممکن می‌سازند!

-Aoldfile
ممکن است به همراه cvs کار نکند. فهرست دسترسی oldfile را به فهرست دسترسی پرونده rcs الحاق می‌کند.
-alogins
ممکن است به همراه cvs کار نکند. نام‌های ورودِ موجود در فهرست جداشده با کامای logins را به فهرست دسترسی پرونده rcs الحاق می‌کند.
-b[rev]
شاخه پیش‌فرض را روی rev تنظیم می‌کند. در cvs، به طور معمول شاخه‌های پیش‌فرض را دستکاری نمی‌کنید؛ برچسب‌های چسبان (گره `Sticky tags' در راهنمای CVS را ببینید) روش بهتری برای تصمیم‌گیری درباره این هستند که می‌خواهید روی کدام شاخه کار کنید. تنها یک دلیل برای اجرای cvs admin -b وجود دارد: بازگشت به نسخه توزیع‌کننده هنگام استفاده از شاخه‌های فروشنده (گره `Reverting local changes' در راهنمای CVS را ببینید). نباید هیچ فاصله‌ای میان -b و آرگومان آن باشد.
-cstring
پیشوند توضیح (comment leader) را روی string تنظیم می‌کند. پیشوند توضیح توسط نسخه‌های کنونی cvs یا rcs 5.7 استفاده نمی‌شود. بنابراین، تقریباً با اطمینان می‌توانید نگران آن نباشید. گره `Keyword substitution' در راهنمای CVS را ببینید.
-e[logins]
ممکن است به همراه cvs کار نکند. نام‌های ورودِ موجود در فهرست جداشده با کامای logins را از فهرست دسترسی پرونده RCS پاک می‌کند. اگر logins حذف شود، کل فهرست دسترسی پاک می‌شود. نباید هیچ فاصله‌ای میان -e و آرگومان آن باشد.
-I
اجرا به صورت تعاملی، حتی اگر ورودی استاندارد یک پایانه نباشد. این گزینه با سازوکار کلاینت/سرور cvs کار نمی‌کند و احتمالاً در نگارش‌های آینده cvs حذف خواهد شد.
-i
در cvs بلااستفاده است. این گزینه پرونده rcs جدیدی را بدون ثبت بازنگری، ایجاد و مقداردهی اولیه می‌کند. با cvs، پرونده‌ها را با دستور cvs add اضافه کنید (گره `Adding files' در راهنمای CVS را ببینید).
-ksubst
جایگزینی پیش‌فرض کلیدواژه را روی subst تنظیم می‌کند. گره `Keyword substitution' در راهنمای CVS را ببینید. ارائه صریح گزینه -k به cvs update، cvs export، یا cvs checkout این پیش‌فرض را بازنویسی می‌کند.
-l[rev]
بازنگری دارای شماره rev را قفل می‌کند. اگر یک شاخه داده شود، آخرین بازنگری روی آن شاخه را قفل می‌کند. اگر rev حذف شود، آخرین بازنگری در شاخه پیش‌فرض را قفل می‌کند. نباید هیچ فاصله‌ای میان -l و آرگومان آن باشد.

این گزینه می‌تواند همراه با اسکریپت rcslock.pl در دایرکتوری contrib از توزیع سورس‌کد cvs برای فراهم کردن دریافت‌های اختصاصی (جایی که فقط یک کاربر در هر لحظه می‌تواند پرونده خاصی را ویرایش کند) استفاده شود. برای جزئیات به توضیحات درون آن پرونده مراجعه کنید (و پرونده README در آن شاخه را برای سلب مسئولیت درباره ماهیت پشتیبانی‌نشده contrib ببینید). طبق توضیحات موجود در آن پرونده، قفل‌گذاری باید روی سخت‌گیرانه (که پیش‌فرض است) تنظیم شود.

-L
قفل‌گذاری را روی سخت‌گیرانه تنظیم می‌کند. قفل‌گذاری سخت‌گیرانه بدین معناست که مالک پرونده RCS از قفل‌گذاری برای ارسال (checkin) معاف نیست. برای استفاده با cvs، قفل‌گذاری سخت‌گیرانه باید تنظیم شود؛ به بحث ذیل گزینه -l در بالا مراجعه کنید.
-mrev:msg
پیام گزارش بازنگری rev را با msg جایگزین می‌کند.
-Nname[:[rev]]
مانند -n عمل می‌کند، به جز اینکه هرگونه انتساب قبلی name را بازنویسی می‌کند. برای استفاده با شاخه‌های جادویی، گره `Magic branch numbers' در راهنمای CVS را ببینید.
-nname[:[rev]]
نام نمادین name را به شاخه یا بازنگری rev منتسب می‌کند. معمولاً بهتر است به جای آن از cvs tag یا cvs rtag استفاده شود. در صورتی که هر دو : و rev حذف شوند، نام نمادین را حذف می‌کند؛ در غیر این صورت، اگر name از قبل به شماره دیگری منتسب شده باشد، یک پیام خطا چاپ می‌کند. اگر rev نمادین باشد، پیش از انتساب بسط می‌یابد. یک rev متشکل از یک شماره شاخه که به دنبال آن یک . آمده است، نمایانگر آخرین بازنگری کنونی در آن شاخه است. علامت : همراه با یک rev خالی، نشان‌دهنده آخرین بازنگری کنونی در شاخه پیش‌فرض، معمولاً تنه اصلی (trunk) است. برای نمونه، cvs admin -nname: نام name را به آخرین بازنگری کنونی تمام پرونده‌های RCS منتسب می‌کند؛ این در تضاد با cvs admin -nname:$ است که name را به شماره‌های بازنگری استخراج‌شده از رشته‌های کلیدواژه در پرونده‌های کاری متناظر پیوند می‌دهد.
-orange
بازنگری‌های مشخص‌شده توسط range را حذف (منسوخ) می‌کند.

توجه داشته باشید که این دستور می‌تواند کاملاً خطرناک باشد مگر اینکه دقیقاً بدانید در حال انجام چه کاری هستید (برای نمونه هشدارهای زیر را درباره گیج‌کننده بودن نحو rev1:rev2 ببینید).

اگر با کمبود دیسک مواجه هستید، این گزینه ممکن است به شما کمک کند. اما پیش از استفاده دو بار فکر کنید—هیچ راهی به جز بازگردانی آخرین نسخه پشتیبان برای خنثی کردن اثر این دستور وجود ندارد! اگر بازنگری‌هایی متفاوت از آنچه مد نظرتان بود را حذف کنید، خواه به دلیل بی‌دقتی یا (خدا نکرده) باگ cvs باشد، هیچ فرصتی برای تصحیح خطا پیش از حذف شدن بازنگری‌ها نخواهد بود. احتمالاً فکر خوبی است که ابتدا روی یک نسخه رونوشت از مخزن آزمایش کنید.

مقدار range را به یکی از روش‌های زیر مشخص کنید:

rev1::rev2
فشرده‌سازی تمام بازنگری‌های میان rev1 و rev2، به طوری که cvs تنها تفاوت‌های مرتبط با گذار از rev1 به rev2 را ذخیره کند، نه مراحل میانی را. برای نمونه، پس از -o 1.3::1.5 می‌توان بازنگری 1.3، بازنگری 1.5، یا تفاوت‌های رسیدن از 1.3 به 1.5 را بازیابی کرد، اما نه بازنگری 1.4 یا تفاوت‌های میان 1.3 و 1.4 را. نمونه‌های دیگر: -o 1.3::1.4 و -o 1.3::1.3 هیچ اثری ندارند، زیرا هیچ بازنگری میانی برای حذف وجود ندارد.
::rev
فشرده‌سازی بازنگری‌های میان ابتدای شاخه حاوی rev و خود rev. نقطه انشعاب و rev دست‌نخورده باقی می‌مانند. برای نمونه، -o ::1.3.2.6 بازنگری 1.3.2.1، بازنگری 1.3.2.5 و هر آنچه در میان است را حذف می‌کند، اما 1.3 و 1.3.2.6 را دست‌نخورده می‌گذارد.
rev::
فشرده‌سازی بازنگری‌های میان rev و انتهای شاخه حاوی rev. بازنگری rev دست‌نخورده باقی می‌ماند اما بازنگری راس (head) حذف می‌شود.
rev
حذف نگارش rev. برای نمونه، -o 1.3 معادل -o 1.2::1.4 است.
rev1:rev2
حذف نگارش‌ها از rev1 تا rev2، شامل هر دو، روی شاخه‌ای یکسان. دیگر امکان بازیابی rev1 یا rev2 یا هر یک از نگارش‌های بین آن‌ها وجود نخواهد داشت. برای نمونه، دستور cvs admin -oR_1_01:R_1_02 . به‌ندرت سودمند است. این دستور به معنای حذف نگارش‌ها تا برچسب R_1_02 و شامل خود آن است. اما هشدار! اگر پرونده‌هایی باشند که میان R_1_02 و R_1_03 دگرگون نشده باشند، آن پرونده همان شماره عددی نگارش تخصیص‌یافته به برچسب‌های R_1_02 و R_1_03 را خواهد داشت. بنابراین نه تنها بازیابی R_1_02 ناممکن خواهد شد؛ بلکه R_1_03 را نیز باید از نوارها (نسخه‌های پشتیبان) بازیابی کرد! در بیشتر موارد می‌خواهید به جای آن rev1::rev2 را مشخص کنید.
:rev
حذف نگارش‌ها از آغاز شاخه حاوی rev تا rev و شامل خود آن.
rev:
حذف نگارش‌ها از نگارش rev، شامل خود rev، تا پایان شاخه حاوی rev.

هیچ‌یک از نگارش‌های مشخص‌شده برای حذف نباید شاخه یا قفلی داشته باشند.

اگر هر یک از نگارش‌های موردنظر برای حذف دارای نام نمادین باشند، و یکی از نحوهای :: مشخص شود، آن‌گاه cvs خطا داده و هیچ نگارشی را حذف نخواهد کرد. اگر واقعاً می‌خواهید هم نام‌های نمادین و هم نگارش‌ها را حذف کنید، نخست نام‌های نمادین را با cvs tag -d حذف نمایید، سپس cvs admin -o را اجرا کنید. اگر نحوهای فاقد :: مشخص شوند، cvs نگارش‌ها را حذف می‌کند ولی نام‌های نمادین را در حالتی که به نگارش‌های ناموجود اشاره دارند باقی می‌گذارد. این رفتار برای سازگاری با نگارش‌های پیشین cvs حفظ شده است، اما چون چندان سودمند نیست، ممکن است در آینده همانند حالت :: رفتار کند.

به‌دلیل نحوه مدیریت شاخه‌ها توسط cvs، اگر rev یک شاخه باشد نمی‌تواند به‌صورت نمادین مشخص شود. برای توضیح بیشتر، به `Magic branch numbers' در راهنمای CVS مراجعه کنید.

اطمینان یابید که هیچ‌کس رونوشتی از نگارشی که منسوخ (outdate) می‌کنید برداشت (check out) نکرده باشد. اگر کسی آغاز به ویرایش آن کند و بکوشد دوباره آن را تحویل دهد (check in)، رویدادهای عجیبی رخ خواهد داد. به همین دلیل، این گزینه شیوه مناسبی برای برگرداندن یک ثبت (commit) نادرست نیست؛ در عوض نگارش جدیدی ثبت کنید که تغییر نادرست را باطل کند (گره `Merging two revisions' را در راهنمای CVS ببینید).

-q
اجرای بی‌صدا؛ پیام‌های تشخیصی چاپ نشوند.
-sstate[:rev]
مفید در cvs. صفت وضعیت (state) نگارش rev را روی state تنظیم می‌کند. اگر rev شماره یک شاخه باشد، تازه‌ترین نگارش روی آن شاخه در نظر گرفته می‌شود. اگر rev حذف شود، تازه‌ترین نگارش روی شاخه پیش‌فرض در نظر گرفته می‌شود. هر شناسه‌ای برای state پذیرفته است. مجموعه‌ای سودمند از وضعیت‌ها شامل Exp (برای آزمایشی)، Stab (برای پایدار) و Rel (برای منتشرشده) است. به‌طور پیش‌فرض، وضعیت یک نگارش جدید هنگامی که ایجاد می‌شود روی Exp تنظیم می‌گردد. این وضعیت در خروجی cvs log (گره `log' در راهنمای CVS را ببینید) و در کلیدواژه‌های $Log$ و $State$ (گره `Keyword substitution' در راهنمای CVS را ببینید) نمایان است. توجه داشته باشید که cvs وضعیت dead را برای مقاصد ویژه خود به کار می‌برد (گره `Attic' در راهنمای CVS را ببینید)؛ برای بردن یک پرونده به وضعیت dead یا خارج کردن آن از این وضعیت، از دستورهایی مانند cvs remove و cvs add استفاده کنید (گره `Adding and removing' در راهنمای CVS را ببینید)، نه cvs admin -s.
-t[file]
مفید در cvs. نوشتن متن توضیحی از محتویات پرونده نام‌برده file در پرونده RCS، و حذف متن پیشین. مسیر پرونده file نباید با - آغاز شود. متن توضیحی در خروجی cvs log قابل مشاهده است (گره `log' در راهنمای CVS را ببینید). نباید هیچ فاصله‌ای میان -t و آرگومان آن باشد.

اگر file ذکر نشود، متن از ورودی استاندارد گرفته می‌شود که با پایان پرونده (EOF) یا سطری که تنها شامل . است پایان می‌یابد. در صورت امکان تعامل، برای دریافت متن اعلان نشان داده می‌شود؛ -I را ببینید.

-t-string
مشابه -tfile. متن توضیحی را از string در پرونده rcs می‌نویسد و متن موجود را حذف می‌کند. نباید هیچ فاصله‌ای میان -t و آرگومان آن باشد.
-U
تنظیم قفل‌گذاری روی حالت غیرسخت‌گیرانه (non-strict). قفل‌گذاری غیرسخت‌گیرانه بدین معناست که مالک پرونده نیازی به قفل کردن نگارش برای تحویل (checkin) ندارد. برای استفاده همراه cvs، قفل‌گذاری سخت‌گیرانه باید تنظیم باشد؛ بحث زیر گزینه -l در بالا را ببینید.
-u[rev]
برای بحث درباره کاربرد این گزینه با cvs، گزینه -l در بالا را ببینید. باز کردن قفل نگارش با شماره rev. اگر یک شاخه مشخص شود، قفل تازه‌ترین نگارش روی آن شاخه باز می‌شود. اگر rev حذف شود، تازه‌ترین قفل نگه‌داشته‌شده توسط فراخواننده برداشته می‌شود. معمولاً تنها قفل‌کننده یک نگارش می‌تواند قفل آن را باز کند؛ اگر فرد دیگری قفل نگارشی را باز کند، قفل شکسته می‌شود. این رویداد سبب ارسال اعلان commit به قفل‌کننده نخستین می‌شود (گره `Getting Notified' در راهنمای CVS را ببینید). نباید هیچ فاصله‌ای میان -u و آرگومان آن باشد.
-Vn
در نگارش‌های پیشین cvs، این گزینه به معنای نوشتن پرونده‌ای از نوع rcs بود که برای نگارش n از rcs قابل پذیرش باشد، اما اکنون منسوخ شده و مشخص کردن آن سبب بروز خطا می‌شود.
-xsuffixes
در نگارش‌های پیشین cvs، این گزینه به‌منزله روشی برای مشخص کردن پسوند نام‌های پرونده‌های rcs مستند شده بود. با این حال، cvs همواره الزامی کرده بود که پرونده‌های rcs به‌کاررفته توسط cvs به ,v ختم شوند، بنابراین این گزینه هرگز کاربرد مفیدی نداشته است.

  • خلاصه: annotate [options] files...
  • پیش‌نیاز: مخزن (repository).
  • مترادف: blame
  • تغییرات: هیچ‌چیز.

    برای هر پرونده در files، آخرین بازبینی (head revision) شاخه اصلی (trunk) را به همراه اطلاعات آخرین تغییر ایجادشده برای هر خط چاپ می‌کند.

این گزینه‌های استاندارد توسط annotate پشتیبانی می‌شوند (برای شرح کامل آن‌ها به گره `Common options' در راهنمای CVS مراجعه کنید):

-l
تنها دایرکتوری محلی، بدون پیمایش بازگشتی.
-R
پردازش دایرکتوری‌ها به‌صورت بازگشتی.
-f
استفاده از آخرین بازبینی (head revision) در صورت نیافتن برچسب/تاریخ.
-F
حاشیه‌نویسی پرونده‌های باینری (دودویی).
-r revision
حاشیه‌نویسی پرونده بر اساس بازبینی/برچسب مشخص‌شده.
-D date
حاشیه‌نویسی پرونده بر اساس تاریخ مشخص‌شده.

برای مثال:

$ cvs annotate ssfile
Annotations for ssfile
***************
1.1 (mary 27-Mar-96): ssfile line 1
1.2 (joe 28-Mar-96): ssfile line 2

پرونده ssfile در حال حاضر شامل دو خط است. خط ssfile line 1 در ۲۷ مارس توسط mary ثبت (check in) شد. سپس در ۲۸ مارس، joe خط ssfile line 2 را اضافه کرد، بدون آنکه خط ssfile line 1 تغییر کند. این گزارش چیزی درباره خطوطی که حذف یا جایگزین شده‌اند به شما نمی‌گوید؛ برای این کار باید از cvs diff استفاده کنید (به گره `diff' در راهنمای CVS مراجعه کنید).

گزینه‌های مربوط به cvs annotate در گره `Invoking CVS' در راهنمای CVS فهرست شده‌اند و می‌توان برای انتخاب پرونده‌ها و بازبینی‌ها جهت حاشیه‌نویسی از آن‌ها استفاده کرد. این گزینه‌ها با جزئیات بیشتر در آنجا و در گره `Common options' در راهنمای CVS شرح داده شده‌اند.

  • خلاصه: checkout [options] modules...
  • پیش‌نیاز: مخزن (repository).
  • تغییرات: دایرکتوری کاری (working directory).
  • مترادف‌ها: co, get

    ایجاد یا به‌روزرسانی یک دایرکتوری کاری حاوی رونوشت‌هایی از پرونده‌های منبع مشخص‌شده با modules. شما باید پیش از استفاده از بیشتر دستورهای دیگر cvs دستور checkout را اجرا کنید، زیرا بیشتر آن‌ها بر روی دایرکتوری کاری شما عمل می‌کنند.

    مؤلفه‌های modules یا نام‌های نمادین برای مجموعه‌ای از دایرکتوری‌ها و پرونده‌های منبع هستند، یا مسیرهایی به دایرکتوری‌ها یا پرونده‌ها در مخزن. نام‌های نمادین در پرونده modules تعریف شده‌اند. گره `modules' را در راهنمای CVS ببینید.

    بسته به پودمان‌های مشخص‌شده، checkout ممکن است به‌صورت بازگشتی دایرکتوری‌ها را ایجاد کند و آن‌ها را با پرونده‌های منبع مناسب پر نماید. سپس می‌توانید این پرونده‌های منبع را در هر زمان ویرایش کنید (صرف‌نظر از اینکه دیگر توسعه‌دهندگان نرم‌افزار در حال ویرایش رونوشت‌های خود از منابع باشند یا خیر)؛ آن‌ها را به‌روزرسانی کنید تا تغییرات جدید اعمال‌شده توسط دیگران در مخزن منبع را در بر گیرند؛ یا کار خود را به عنوان یک تغییر دائمی در مخزن منبع ثبت (commit) کنید.

    توجه داشته باشید که checkout برای ایجاد دایرکتوری‌ها استفاده می‌شود. دایرکتوری سطح بالا که ایجاد می‌شود همواره به دایرکتوری محل فراخوانی checkout افزوده می‌شود، و معمولاً نامی مشابه پودمان مشخص‌شده دارد. در مورد نام مستعار پودمان (module alias)، زیردایرکتوریِ ایجادشده ممکن است نام متفاوتی داشته باشد، اما می‌توانید مطمئن باشید که یک زیردایرکتوری خواهد بود و این‌که checkout مسیر نسبی منتهی به هر پرونده را هنگام استخراج به فضای کاریِ خصوصی شما نشان خواهد داد (مگر اینکه گزینه سراسری -Q را تعیین کرده باشید).

    پرونده‌های ایجادشده با checkout به‌صورت خواندنی-نوشتنی ایجاد می‌شوند، مگر اینکه گزینه -r برای cvs (به گره `Global options' در راهنمای CVS مراجعه کنید) تعیین شده باشد، متغیر محیطی CVSREAD مشخص شده باشد (به گره `Environment variables' در راهنمای CVS مراجعه کنید)، یا یک دیده‌بان (watch) برای آن پرونده برقرار باشد (به گره `Watches' در راهنمای CVS مراجعه کنید).

    توجه داشته باشید که اجرای checkout روی دایرکتوری‌ای که قبلاً توسط یک checkout پیشین ساخته شده است نیز مجاز است. این امر مشابه تعیین گزینه -d برای دستور update است، از این جهت که دایرکتوری‌های جدیدی که در مخزن ایجاد شده‌اند در فضای کاری شما نمایان خواهند شد. با این وجود، checkout نام یک پودمان را می‌گیرد در حالی که update نام یک دایرکتوری را دریافت می‌کند. همچنین برای استفاده از checkout به این روش، دستور باید از دایرکتوری سطح بالا (جایی که در ابتدا checkout را از آنجا اجرا کردید) اجرا شود؛ بنابراین پیش از اجرای checkout برای به‌روزرسانی یک دایرکتوری موجود، فراموش نکنید که دایرکتوری خود را به دایرکتوری سطح بالا تغییر دهید.

    برای بررسی خروجی تولیدشده توسط دستور checkout، به گره `update output' در راهنمای CVS مراجعه کنید.

این گزینه‌های استاندارد توسط checkout پشتیبانی می‌شوند (برای شرح کامل آن‌ها، گره `Common options' را در راهنمای CVS ببینید):

-D date
استفاده از تازه‌ترین بازبینی که پس از date نباشد. این گزینه چسبنده است و متضمن -P می‌باشد. برای اطلاعات بیشتر درباره برچسب‌ها/تاریخ‌های چسبنده، `Sticky tags' را در راهنمای CVS ببینید.
-f
تنها همراه با پرچم‌های -D date یا -r tag مفید است. اگر هیچ بازبینیِ مطابقی یافت نشود، تازه‌ترین بازبینی را بازیابی می‌کند (به جای نادیده گرفتن پرونده).
-k kflag
پردازش کلیدواژه‌ها بر اساس kflag. بخش `Keyword substitution' را در راهنمای CVS ببینید. این گزینه چسبنده است؛ به‌روزرسانی‌های آینده‌ی این پرونده در این دایرکتوری کاری از همین kflag استفاده خواهند کرد. برای دیدن گزینه‌های چسبنده می‌توان دستور status را مشاهده کرد. برای اطلاعات بیشتر درباره دستور status، بخش `Invoking CVS' را در راهنمای CVS ببینید.
-l
محلی؛ اجرا تنها در دایرکتوری کاری جاری.
-n
هیچ برنامه checkoutای را اجرا نکن (همان‌طور که با گزینه -o در پرونده modules مشخص شده است؛ گره `modules' را در راهنمای CVS ببینید).
-P
هرس کردن دایرکتوری‌های خالی. بخش `Moving directories' را در راهنمای CVS ببینید.
-p
ارسال پرونده‌ها با لوله (pipe) به خروجی استاندارد.
-R
دریافت دایرکتوری‌ها به صورت بازگشتی. این گزینه به طور پیش‌فرض فعال است.
-r tag
استفاده از بازبینی tag. این گزینه چسبنده است و متضمن -P می‌باشد. برای اطلاعات بیشتر درباره برچسب‌ها/تاریخ‌های چسبنده، `Sticky tags' را در راهنمای CVS ببینید.

علاوه بر موارد یادشده، می‌توانید از این گزینه‌های ویژه دستور همراه با checkout استفاده کنید:

-A
بازنشانی هرگونه برچسب، تاریخ، یا گزینه‌های -k چسبنده. گزینه‌های -k چسبنده را روی پرونده‌های تغییریافته بازنشانی نمی‌کند. برای اطلاعات بیشتر درباره برچسب‌ها/تاریخ‌های چسبنده، `Sticky tags' را در راهنمای CVS ببینید.
-c
رونوشت برداشتن از پرونده module، به صورت مرتب‌شده، در خروجی استاندارد، به جای ایجاد یا تغییر هرگونه پرونده یا دایرکتوری در دایرکتوری کاری شما.
-d dir
ایجاد دایرکتوری‌ای به نام dir برای پرونده‌های کاری، به جای استفاده از نام ماژول. به طور کلی، استفاده از این پرچم معادل استفاده از mkdir dir; cd dir و به دنبال آن اجرای دستور checkout بدون پرچم -d است.

با این حال، یک استثنای مهم وجود دارد. هنگام دریافت یک مورد منفرد، بسیار مناسب است که خروجی در دایرکتوری‌ای ظاهر شود که شامل دایرکتوری‌های میانی خالی نباشد. تنها در این حالت، cvs تلاش می‌کند مسیرها را ``کوتاه'' کند تا از ایجاد آن دایرکتوری‌های خالی جلوگیری شود.

برای نمونه، با داشتن ماژول foo که حاوی پرونده bar.c است، دستور cvs co -d dir foo دایرکتوری dir را ایجاد کرده و bar.c را در آن قرار می‌دهد. به طور مشابه، با داشتن ماژول bar که زیردایرکتوری baz داشته و درون آن پرونده quux.c قرار دارد، دستور cvs co -d dir bar/baz دایرکتوری dir را ساخته و quux.c را درون آن می‌گذارد.

استفاده از پرچم -N این رفتار را باطل می‌کند. با همان تعاریف ماژول در بالا، دستور cvs co -N -d dir foo دایرکتوری‌های dir/foo را ساخته و bar.c را درون آن قرار می‌دهد، در حالی که دستور cvs co -N -d dir bar/baz دایرکتوری‌های dir/bar/baz را ساخته و quux.c را درون آن قرار خواهد داد.

-j tag
با دو گزینه -j، ادغام تغییرات از بازبینی مشخص‌شده با اولین گزینه -j به بازبینی مشخص‌شده با دومین گزینه j، درون دایرکتوری کاری.

با یک گزینه -j، ادغام تغییرات از بازبینی نیا (ancestor) به بازبینی مشخص‌شده با گزینه -j، درون دایرکتوری کاری. بازبینی نیا، نیای مشترک بازبینی مبنای دایرکتوری کاری و بازبینی مشخص‌شده در گزینه -j است.

علاوه بر این، هر گزینه -j می‌تواند شامل یک مشخصه تاریخ اختیاری باشد که در صورت استفاده با شاخه‌ها، می‌تواند بازبینی انتخاب‌شده را به یکی در یک تاریخ مشخص محدود کند. یک تاریخ اختیاری با افزودن دونقطه (:) به برچسب مشخص می‌شود: -jSymbolic_Tag:Date_Specifier.

بخش `Branching and merging' را در راهنمای CVS ببینید.

-N
تنها همراه با -d dir مفید است. با این گزینه، cvs هنگام checkout کردن یک ماژول تنها، مسیرهای ماژول را در دایرکتوری کاری شما ``کوتاه'' نخواهد کرد. برای مثال‌ها و بررسی بیشتر، پرچم -d را ببینید.
-s
مانند -c، اما شامل وضعیت تمام ماژول‌ها، و مرتب‌شده بر اساس رشته وضعیت. برای اطلاعات بیشتر درباره گزینه -s که درون پرونده modules برای تنظیم وضعیت ماژول به کار می‌رود، بخش `modules' را در راهنمای CVS ببینید.

دریافت یک نسخه از ماژول tc:

$ cvs checkout tc

دریافت یک نسخه از ماژول tc به همان صورتی که یک روز پیش بود:

$ cvs checkout -D yesterday tc

  • خلاصه: commit [-lRf] [-m 'log_message' | -F file] [-r revision] [files...]
  • پیش‌نیاز: دایرکتوری کاری، مخزن.
  • تغییرات: مخزن.
  • مترادف: ci

    هنگامی که می‌خواهید تغییرات فایل‌های منبع کاری خود را در مخزن منبع اعمال کنید، از commit استفاده نمایید.

    اگر پرونده‌های مشخصی را برای ثبت (commit) تعیین نکنید، تمام پرونده‌های موجود در دایرکتوری کاری فعلی شما بررسی می‌شوند. دستور commit دقت می‌کند که در مخزن تنها پرونده‌هایی را تغییر دهد که واقعاً آن‌ها را تغییر داده‌اید. به‌طور پیش‌فرض (یا اگر صراحتاً گزینه -R را مشخص کنید)، پرونده‌های موجود در زیردایرکتوری‌ها نیز بررسی شده و در صورت تغییر یافتن، ثبت می‌شوند؛ می‌توانید از گزینه -l برای محدود کردن commit تنها به دایرکتوری فعلی استفاده کنید.

    دستور commit بررسی می‌کند که آیا پرونده‌های انتخاب‌شده با آخرین بازبینی‌های موجود در مخزن منبع به‌روز هستند یا خیر؛ چنانچه هر یک از پرونده‌های مشخص‌شده ابتدا نیاز به به‌روزرسانی با update داشته باشند، این موضوع را به شما اطلاع داده و بدون ثبت تغییرات خارج می‌شود (به گره `update' در راهنمای CVS مراجعه کنید). دستور commit دستور update را به‌جای شما فراخوانی نمی‌کند، بلکه انجام آن را در زمان مناسب به خود شما واگذار می‌نماید.

    هنگامی که همه‌چیز مرتب باشد، یک ویرایشگر باز می‌شود تا بتوانید پیام گزارشی (log message) وارد کنید که در یک یا چند برنامه ثبت گزارش نوشته خواهد شد (به گره `modules' در راهنمای CVS، و به گره `loginfo' در راهنمای CVS مراجعه کنید) و در پرونده rcs درون مخزن قرار می‌گیرد. این پیام گزارش را می‌توان با دستور log بازیابی کرد؛ به گره `log' در راهنمای CVS مراجعه کنید. می‌توانید پیام گزارش را در خط فرمان با گزینه -m message مشخص کنید و بدین ترتیب از باز شدن ویرایشگر جلوگیری نمایید، یا از گزینه -F file استفاده کنید تا مشخص نمایید که پرونده آرگومان حاوی پیام گزارش است.

این گزینه‌های استاندارد توسط commit پشتیبانی می‌شوند (برای شرح کامل آن‌ها به گره `Common options' در راهنمای CVS مراجعه کنید):

-l
محلی؛ فقط در دایرکتوری کاری فعلی اجرا می‌شود.
-R
ثبت دایرکتوری‌ها به‌صورت بازگشتی. این حالت به‌طور پیش‌فرض فعال است.
-r revision
ثبت در revision. مقدار revision باید یا یک شاخه باشد، یا یک بازبینی در شاخه اصلی (main trunk) که از تمام شماره‌های بازبینی موجود بزرگ‌تر است (به گره `Assigning revisions' در راهنمای CVS مراجعه کنید). نمی‌توانید در یک بازبینی مشخص روی یک شاخه commit کنید.

دستور commit از این گزینه‌ها نیز پشتیبانی می‌کند:

-F file
خواندن پیام گزارش از file، به‌جای باز کردن یک ویرایشگر.
-f
توجه داشته باشید که این رفتار استاندارد گزینه -f به شکلی که در گره `Common options' در راهنمای CVS تعریف شده، نیست.

مجبور کردن cvs به ثبت یک بازبینی جدید حتی اگر هیچ تغییری در پرونده ایجاد نکرده باشید. اگر بازبینی فعلی file برابر 1.7 باشد، دو دستور زیر معادل یکدیگر هستند:

$ cvs commit -f file
$ cvs commit -r 1.8 file

گزینه -f حالت بازگشتی را غیرفعال می‌کند (یعنی متضمن -l است). برای مجبور کردن cvs به ثبت یک بازبینی جدید برای تمام پرونده‌ها در تمام زیردایرکتوری‌ها، باید از -f -R استفاده کنید.

-m message
استفاده از message به‌عنوان پیام گزارش، به‌جای باز کردن یک ویرایشگر.

شما می‌توانید با گزینه -r تغییرات را در یک بازنگری شاخه‌ای (بازنگری‌ای که تعداد نقطه‌های آن زوج است) ثبت (commit) کنید. برای ایجاد یک بازنگری شاخه‌ای، از گزینه -b در دستورهای rtag یا tag استفاده کنید (گره `Branching and merging' را در راهنمای CVS ببینید). سپس می‌توان از checkout یا update استفاده کرد تا کدهای منبع خود را بر پایه شاخه تازه ایجادشده قرار دهید. از آن نقطه به بعد، تمام تغییرات حاصل از commit که در این کدهای منبع کاری ایجاد شوند، به‌طور خودکار به یک بازنگری شاخه‌ای افزوده خواهند شد و بدین ترتیب به هیچ وجه روند توسعه خط اصلی را مختل نمی‌کنند. برای نمونه، اگر مجبور بودید وصله‌ای (patch) برای نسخه 1.2 محصول ایجاد کنید، حتی با اینکه نسخه 2.0 از قبل در دست توسعه است، می‌توانید این‌گونه عمل کنید:

$ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
$ cvs checkout -r FCS1_2_Patch product_module
$ cd product_module
[[ hack away ]]
$ cvs commit

این کار به‌صورت خودکار عمل می‌کند زیرا گزینه -r چسبنده (sticky) است.

فرض کنید روی نرم‌افزاری بسیار تجربی کار کرده‌اید که بر پایه هر بازنگری‌ای است که هفته گذشته اتفاقی دریافت (checkout) کرده بودید. اگر دیگر اعضای گروه شما مایل باشند بدون مختل کردن توسعه خط اصلی با شما روی این نرم‌افزار کار کنند، می‌توانید تغییرات خود را روی یک شاخه جدید ثبت کنید. سپس دیگران می‌توانند کدهای آزمایشی شما را دریافت (checkout) کرده و از مزیت کامل قابلیت رفع تعارض cvs بهره‌مند شوند. سناریو ممکن است به این شکل باشد:

[[ hacked sources are present ]]
$ cvs tag -b EXPR1
$ cvs update -r EXPR1
$ cvs commit

دستور update گزینه -r EXPR1 را روی تمام فایل‌ها چسبنده (sticky) خواهد کرد. توجه داشته باشید که تغییرات شما روی فایل‌ها هرگز توسط دستور update حذف نخواهند شد. دستور commit به‌طور خودکار تغییرات را روی شاخه درست ثبت می‌کند، زیرا -r چسبنده است. همچنین می‌توانید به این صورت عمل کنید:

[[ hacked sources are present ]]
$ cvs tag -b EXPR1
$ cvs commit -r EXPR1

اما در این حالت، تنها فایل‌هایی که توسط شما تغییر داده شده‌اند نشان چسبنده -r EXPR1 را خواهند داشت. اگر کار را ادامه دهید و بدون مشخص کردن پرچم -r EXPR1 عمل ثبت (commit) را انجام دهید، ممکن است برخی از فایل‌ها تصادفاً سر از تنه اصلی (main trunk) درآورند.

برای کار با شما روی تغییرات تجربی، دیگران به سادگی انجام می‌دهند:

$ cvs checkout -r EXPR1 whatever_module

  • خلاصه دستور (Synopsis): diff [-lR] [-k kflag] [format_options] [[-r rev1 | -D date1] [-r rev2 | -D date2]] [files...]
  • نیازمندی‌ها (Requires): دایرکتوری کاری، مخزن.
  • تغییرات (Changes): هیچ‌چیز.

    دستور diff برای مقایسه بازنگری‌های مختلف فایل‌ها به کار می‌رود. رفتار پیش‌فرض، مقایسه فایل‌های کاری شما با بازنگری‌هایی است که بر پایه‌شان ایجاد شده‌اند و گزارش هر تفاوتی که پیدا شود.

    اگر نام فایلی داده شود، تنها آن فایل‌ها مقایسه می‌شوند. اگر دایرکتوری داده شود، تمام فایل‌های زیرمجموعه آن‌ها مقایسه خواهند شد.

    وضعیت خروج (exit status) برای diff با دیگر دستورهای cvs متفاوت است؛ برای جزئیات به گره `Exit status' در راهنمای CVS مراجعه کنید.

این گزینه‌های استاندارد توسط diff پشتیبانی می‌شوند (برای توضیحات کامل آن‌ها به گره `Common options' در راهنمای CVS مراجعه کنید):

-D date
استفاده از تازه‌ترین بازبینی که پس از date نباشد. برای چگونگی تأثیر این گزینه بر مقایسه، -r را ببینید.
-k kflag
پردازش کلیدواژه‌ها بر اساس kflag. بخش `Keyword substitution' را در راهنمای CVS ببینید.
-l
محلی؛ اجرا تنها در شاخه کاری فعلی.
-R
بررسی بازگشتی شاخه‌ها. این گزینه به‌طور پیش‌فرض فعال است.
-r tag
مقایسه با بازبینی tag. صفر، یک یا دو گزینه -r می‌تواند مشخص شود. بدون گزینه -r، پرونده کاری با بازبینی‌ای که بر پایه آن بوده مقایسه خواهد شد. با یک گزینه -r، آن بازبینی با پرونده کاری فعلی شما مقایسه می‌شود. با دو گزینه -r، آن دو بازبینی با یکدیگر مقایسه می‌شوند (و پرونده کاری شما به هیچ وجه بر نتیجه تأثیری نخواهد داشت).

یک یا هر دو گزینه -r را می‌توان با گزینه -D date (که در بالا شرح داده شد) جایگزین کرد.

گزینه‌های زیر قالب خروجی را تعیین می‌کنند. آن‌ها همان معنای موجود در GNU diff را دارند. بیشتر گزینه‌ها دو نام معادل دارند؛ یکی تک‌حرفی با پیشوند -، و دیگری نامی طولانی با پیشوند --.

-lines
نمایش lines (یک عدد صحیح) خط از بافت پیرامونی. این گزینه به خودی خود قالب خروجی را مشخص نمی‌کند؛ و اثری ندارد مگر اینکه با -c یا -u ترکیب شود. این گزینه منسوخ است. برای عملکرد صحیح، patch معمولاً دست‌کم به دو خط بافت نیاز دارد.
-a
رفتار با همه پرونده‌ها به عنوان متنی و مقایسه خط به خط آن‌ها، حتی اگر متنی به نظر نرسند.
-b
نادیده گرفتن فاصله‌های خالی انتهایی خط و معادل دانستن تمام توالی‌های دیگر شامل یک یا چند نویسه فاصله خالی.
-B
نادیده گرفتن تغییراتی که صرفاً خطوط خالی درج یا حذف می‌کنند.
--binary
خواندن و نوشتن داده‌ها در حالت دودویی (باینری).
--brief
تنها گزارش دادن اینکه آیا پرونده‌ها تفاوت دارند یا خیر، بدون جزئیات تفاوت‌ها.
-c
استفاده از قالب خروجی بافت پیرامونی.
-C lines
--context[=lines]
استفاده از قالب خروجی بافت پیرامونی، با نمایش lines (یک عدد صحیح) خط از بافت، یا سه خط در صورتی که lines داده نشده باشد. برای عملکرد صحیح، patch معمولاً دست‌کم به دو خط بافت نیاز دارد.
--changed-group-format=format
استفاده از format برای نمایش گروهی از خطوط شامل خطوط متفاوت از هر دو پرونده در قالب if-then-else. بخش `Line group formats' را در راهنمای CVS ببینید.
-d
تغییر الگوریتم برای احتمالاً یافتن مجموعه‌ای کوچک‌تر از تغییرات. این کار diff را کندتر (گاهی بسیار کندتر) می‌کند.
-e
--ed
تولید خروجی به‌صورت یک کدنوشته معتبر ed.
--expand-tabs
گسترش نویسه‌های تب به فاصله در خروجی، به منظور حفظ تراز تب‌ها در پرونده‌های ورودی.
-f
تولید خروجی که تا حدی شبیه کدنوشته ed است اما تغییرات در آن به همان ترتیبی که در پرونده آمده‌اند، قرار دارند.
-F regexp
در قالب‌های context و unified، برای هر قطعه تفاوت (hunk)، نمایش بخشی از آخرین خط پیشین که با regexp تطابق دارد.
--forward-ed
تولید خروجی که تا حدی شبیه کدنوشته ed است اما تغییرات در آن به همان ترتیبی که در پرونده آمده‌اند، قرار دارند.
-H
استفاده از روش‌های اکتشافی (heuristics) برای افزایش سرعت پردازش پرونده‌های بزرگی که دارای تغییرات کوچک و پراکنده زیادی هستند.
--horizon-lines=lines
دور نینداختن lines خط انتهایی از پیشوند مشترک و lines خط ابتدایی از پسوند مشترک.
-i
نادیده گرفتن تغییرات بزرگی و کوچکی حروف؛ معادل دانستن حروف بزرگ و کوچک.
-I regexp
نادیده گرفتن تغییراتی که صرفاً خطوط منطبق با regexp را درج یا حذف می‌کنند.
--ifdef=name
تولید خروجی ادغام‌شده if-then-else با استفاده از name.
--ignore-all-space
نادیده گرفتن فاصله‌های خالی هنگام مقایسه خطوط.
--ignore-blank-lines
نادیده گرفتن تغییراتی که صرفاً خطوط خالی درج یا حذف می‌کنند.
--ignore-case
نادیده گرفتن تغییرات بزرگی و کوچکی حروف؛ یکسان دانستن حروف بزرگ و کوچک.
--ignore-matching-lines=regexp
نادیده گرفتن تغییراتی که صرفاً خطوط منطبق با regexp را درج یا حذف می‌کنند.
--ignore-space-change
نادیده گرفتن فاصله‌های خالی انتهایی خط و معادل دانستن تمام توالی‌های دیگر شامل یک یا چند نویسه فاصله خالی.
--initial-tab
در قالب‌های عادی یا زمینه‌ای، به جای فاصله، یک تب پیش از متن خط چاپ می‌کند. این کار باعث می‌شود چینش تب‌ها درون خط طبیعی به نظر برسد.
-L label
در سرآیندهای قالب‌های زمینه‌ای و یکپارچه، از label به جای نام پرونده استفاده می‌کند.
--label=label
در سرآیندهای قالب‌های زمینه‌ای و یکپارچه، از label به جای نام پرونده استفاده می‌کند.
--left-column
در قالب کنار هم (side by side)، برای خطوط مشترک، تنها ستون سمت چپ را چاپ می‌کند.
--line-format=format
از format برای خروجی دادن تمام خطوط ورودی در قالب if-then-else استفاده می‌کند. به `Line formats' در راهنمای CVS مراجعه کنید.
--minimal
الگوریتم را برای احتمالاً یافتن مجموعهٔ کوچکتری از تغییرات تغییر می‌دهد. این کار diff را کندتر می‌کند (گاهی بسیار کندتر).
-n
تفاوت‌ها را در قالب RCS خروجی می‌دهد؛ مانند -f به جز این‌که هر دستور تعداد خطوط متأثر را مشخص می‌کند.
-N
--new-file
در مقایسهٔ دایرکتوری‌ها، اگر پرونده‌ای تنها در یکی از دایرکتوری‌ها یافت شود، آن را طوری در نظر می‌گیرد که گویی در دایرکتوری دیگر نیز وجود دارد ولی خالی است.
--new-group-format=format
از format برای خروجی دادن گروهی از خطوط برگرفته از پروندهٔ دوم به قالب if-then-else استفاده می‌کند. به `Line group formats' در راهنمای CVS مراجعه کنید.
--new-line-format=format
از format برای خروجی دادن خطی برگرفته از پروندهٔ دوم به قالب if-then-else استفاده می‌کند. به `Line formats' در راهنمای CVS مراجعه کنید.
--old-group-format=format
از format برای خروجی دادن گروهی از خطوط برگرفته از پروندهٔ اول به قالب if-then-else استفاده می‌کند. به `Line group formats' در راهنمای CVS مراجعه کنید.
--old-line-format=format
از format برای خروجی دادن خطی برگرفته از پروندهٔ اول به قالب if-then-else استفاده می‌کند. به `Line formats' در راهنمای CVS مراجعه کنید.
-p
نشان می‌دهد که هر تغییر در کدام تابع C قرار دارد.
--rcs
تفاوت‌ها را در قالب RCS خروجی می‌دهد؛ مانند -f به جز این‌که هر دستور تعداد خطوط متأثر را مشخص می‌کند.
--report-identical-files
-s
گزارش می‌دهد که چه زمانی دو پرونده یکسان هستند.
--show-c-function
نشان می‌دهد که هر تغییر در کدام تابع C قرار دارد.
--show-function-line=regexp
در قالب‌های زمینه‌ای و یکپارچه، برای هر تکه (hunk) از تفاوت‌ها، بخشی از آخرین خط پیشین را که با regexp مطابقت دارد نشان می‌دهد.
--side-by-side
از قالب خروجی کنار هم (side by side) استفاده می‌کند.
--speed-large-files
برای سرعت بخشیدن به پردازش پرونده‌های بزرگ با تغییرات کوچک و پراکندهٔ زیاد، از فنون مکاشفه‌ای (heuristics) استفاده می‌کند.
--suppress-common-lines
در قالب کنار هم، خطوط مشترک را چاپ نمی‌کند.
-t
در خروجی، تب‌ها را به فاصله‌ها گسترش می‌دهد تا چینش تب‌ها در پرونده‌های ورودی حفظ شود.
-T
در قالب‌های عادی یا زمینه‌ای، به جای فاصله، یک تب پیش از متن خط خروجی می‌دهد. این کار باعث می‌شود چینش تب‌ها در خط طبیعی به نظر برسد.
--text
تمام پرونده‌ها را متنی در نظر گرفته و آن‌ها را خط‌به‌خط مقایسه می‌کند، حتی اگر متنی به نظر نرسند.
-u
از قالب خروجی یکپارچه (unified) استفاده می‌کند.
--unchanged-group-format=format
از format برای خروجی دادن گروهی از خطوط مشترک برگرفته از هر دو پرونده به قالب if-then-else استفاده می‌کند. به گره `Line group formats' در راهنمای CVS مراجعه کنید.
--unchanged-line-format=format
از format برای خروجی دادن خطی مشترک بین هر دو پرونده به قالب if-then-else استفاده می‌کند. به گره `Line formats' در راهنمای CVS مراجعه کنید.
-U lines
--unified[=lines]
از قالب خروجی یکپارچه استفاده می‌کند و lines (یک عدد صحیح) خط زمینه را نشان می‌دهد؛ در صورت مشخص نشدن lines، مقدار پیش‌فرض سه خط است. برای کارکرد صحیح، برنامهٔ patch معمولاً حداقل به دو خط زمینه نیاز دارد.
-w
هنگام مقایسه خطوط، فاصله‌های خالی (white space) را نادیده می‌گیرد.
-W columns
--width=columns
عرض خروجی را در قالب کنار هم (side by side) برابر با columns قرار می‌دهد.
-y
از قالب خروجی کنار هم (side by side) استفاده می‌کند.

قالب‌های گروه خط به شما امکان می‌دهند قالب‌های مناسب برای بسیاری از برنامه‌هایی که ورودی if-then-else را می‌پذیرند مشخص کنید، از جمله زبان‌های برنامه‌نویسی و زبان‌های قالب‌بندی متن. یک قالب گروه خط، قالب خروجی را برای گروهی پیوسته از خطوط مشابه تعیین می‌کند.

به‌عنوان مثال، دستور زیر فایل TeX به نام myfile را با نسخه اصلی از مخزن مقایسه می‌کند، و فایلی ادغام‌شده خروجی می‌دهد که در آن بخش‌های قدیمی با خطوط \begin{em}-\end{em} احاطه شده‌اند، و بخش‌های جدید با خطوط \begin{bf}-\end{bf} احاطه شده‌اند.

cvs diff \

--old-group-format='\begin{em}
%<\end{em}
' \

--new-group-format='\begin{bf}
%>\end{bf}
' \

myfile

دستور زیر معادل مثال بالا است، اما کمی پرحرف‌تر (مفصل‌تر) است زیرا قالب‌های پیش‌فرض گروه خط را صراحتاً بیان می‌کند.

cvs diff \

--old-group-format='\begin{em}
%<\end{em}
' \

--new-group-format='\begin{bf}
%>\end{bf}
' \

--unchanged-group-format='%=' \

--changed-group-format='\begin{em}
%<\end{em}
\begin{bf}
%>\end{bf}
' \

myfile

در اینجا مثالی پیشرفته‌تر آورده شده است، که فهرستی از diff را با سرآیندهای حاوی شماره خطوط به سبکی شبیه به «انگلیسی روان» خروجی می‌دهد.

cvs diff \

--unchanged-group-format='' \

--old-group-format='-------- %dn line%(n=1?:s) deleted at %df:
%<' \

--new-group-format='-------- %dN line%(N=1?:s) added after %de:
%>' \

--changed-group-format='-------- %dn line%(n=1?:s) changed at %df:
%<-------- to:
%>' \

myfile

برای مشخص کردن یک قالب گروه خط، از یکی از گزینه‌های فهرست‌شده در زیر استفاده کنید. می‌توانید تا چهار قالب گروه خط مشخص کنید، یکی برای هر نوع از گروه‌های خط. باید format را درون علامت نقل‌قول قرار دهید، زیرا معمولاً حاوی نویسه‌های کنترلی شل است.

--old-group-format=format
این گروه‌های خط، تکه‌هایی (hunks) هستند که تنها شامل خطوطی از فایل اول می‌باشند. قالب پیش‌فرض گروه قدیمی همانند قالب گروه تغییریافته است در صورتی که مشخص شده باشد؛ در غیر این صورت قالبی است که گروه خط را همان‌گونه که هست خروجی می‌دهد.
--new-group-format=format
این گروه‌های خط، تکه‌هایی هستند که تنها شامل خطوطی از فایل دوم می‌باشند. قالب پیش‌فرض گروه جدید همانند قالب گروه تغییریافته است در صورتی که مشخص شده باشد؛ در غیر این صورت قالبی است که گروه خط را همان‌گونه که هست خروجی می‌دهد.
--changed-group-format=format
این گروه‌های خط، تکه‌هایی هستند که شامل خطوطی از هر دو فایل می‌باشند. قالب پیش‌فرض گروه تغییریافته الحاق قالب‌های گروه قدیمی و جدید است.
--unchanged-group-format=format
این گروه‌های خط شامل خطوط مشترک در هر دو فایل هستند. قالب پیش‌فرض گروه بدون‌تغییر قالبی است که گروه خط را همان‌گونه که هست خروجی می‌دهد.

در قالب گروه خط، نویسه‌های معمولی نمایانگر خودشان هستند؛ مشخصات تبدیل با % آغاز می‌شوند و یکی از شکل‌های زیر را دارند.

%<
نمایانگر خطوط فایل اول است، شامل نویسه خط جدید در انتها. هر خط بر اساس قالب خط قدیمی قالب‌بندی می‌شود (به گره `Line formats' در راهنمای CVS مراجعه کنید).
%>
نمایانگر خطوط فایل دوم است، شامل نویسه خط جدید در انتها. هر خط بر اساس قالب خط جدید قالب‌بندی می‌شود.
%=
نمایانگر خطوط مشترک در هر دو فایل است، شامل نویسه خط جدید در انتها. هر خط بر اساس قالب خط بدون‌تغییر قالب‌بندی می‌شود.
%%
نمایانگر % است.
%c'C'
که در آن C یک نویسه تکی است، نمایانگر C می‌باشد. C نباید بک‌اسلش یا آپوستروف باشد. به‌عنوان مثال، %c':' نمایانگر دو‌نقطه است، حتی درون بخش then از قالب if-then-else، جایی که دونقطه به‌طور معمول به آن خاتمه می‌دهد.
%c'\O'
که در آن O رشته‌ای از ۱، ۲ یا ۳ رقم هشت‌هشتی (octal) است، نمایانگر نویسه‌ای با کد هشت‌هشتی O می‌باشد. به‌عنوان مثال، %c'\0' نمایانگر نویسه تهی (null) است.
Fn
که در آن F یک مشخصه تبدیل printf است و n یکی از حروف زیر می‌باشد، نمایانگر مقدار n قالب‌بندی‌شده با F است.
e
شماره خط دقیقاً قبل از گروه در فایل قدیمی.
f
شماره خط اولین خط در گروه در فایل قدیمی؛ برابر است با e + 1.
l
شماره خط آخرین خط در گروه در فایل قدیمی.
m
شماره خط بلافاصله بعد از گروه در فایل قدیمی؛ برابر با l + 1 است.
n
تعداد خط‌های موجود در گروه در فایل قدیمی؛ برابر با l - f + 1 است.
E, F, L, M, N
به همین ترتیب، برای خط‌های موجود در فایل جدید.

مشخصه تبدیل printf می‌تواند %d، %o، %x یا %X باشد که به‌ترتیب خروجی ده‌دهی، هشت‌هشتی، شانزده‌شانزدهی با حروف کوچک، یا شانزده‌شانزدهی با حروف بزرگ را مشخص می‌کند. پس از % گزینه‌های زیر می‌توانند به‌ترتیب قرار گیرند: یک - برای تراز چپ؛ یک عدد صحیح برای تعیین حداقل عرض فیلد؛ و یک نقطه به همراه یک عدد صحیح اختیاری برای تعیین حداقل تعداد ارقام. برای مثال، %5dN تعداد خط‌های جدید در گروه را در فیلدی به عرض ۵ نویسه، با استفاده از قالب "%5d" در printf چاپ می‌کند.

(A=B?T:E)
اگر A برابر با B باشد آن‌گاه T وگرنه E. هرکدام از A و B یک مقدار ثابت ده‌دهی یا یک تک‌حرف تفسیرشده به شیوه بالا هستند. این مشخصه قالب برابر با T خواهد بود اگر مقدار A برابر با B باشد؛ در غیر این صورت برابر با E است.

برای مثال، %(N=0?no:%dN) line%(N=1?:s) معادل no lines است اگر N (تعداد خط‌های گروه در فایل جدید) 0 باشد، معادل 1 line اگر N برابر با 1 باشد، و در غیر این صورت معادل %dN lines است.

قالب‌های خط نحوه نمایش هر خط گرفته‌شده از یک فایل ورودی را به‌عنوان بخشی از یک گروه خط در قالب شرطی (if-then-else) کنترل می‌کنند.

برای مثال، دستور زیر متن را به همراه یک نشانگر تغییر تک‌ستونی در سمت چپ متن چاپ می‌کند. نخستین ستون خروجی برای خط‌های حذف‌شده -، برای خط‌های اضافه‌شده |، و برای خط‌های بدون تغییر یک فاصله است. قالب‌ها در جاهایی که سطر تازه در خروجی مورد نیاز است حاوی نویسه سطر تازه هستند.

cvs diff \

--old-line-format='-%l
' \

--new-line-format='|%l
' \

--unchanged-line-format=' %l
' \

myfile

برای تعیین قالب خط، از یکی از گزینه‌های زیر استفاده کنید. بهتر است format را درون نقل‌قول قرار دهید، چرا که اغلب شامل نویسه‌های ویژه شل است.

--old-line-format=format
تنها خط‌های فایل نخست را قالب‌بندی می‌کند.
--new-line-format=format
تنها خط‌های فایل دوم را قالب‌بندی می‌کند.
--unchanged-line-format=format
خط‌های مشترک میان هر دو فایل را قالب‌بندی می‌کند.
--line-format=format
تمام خط‌ها را قالب‌بندی می‌کند؛ در عمل، هر سه گزینه بالا را به‌طور هم‌زمان تنظیم می‌نماید.

در یک قالب خط، نویسه‌های معمولی نمایانگر خودشان هستند؛ مشخصه‌های تبدیل با % آغاز می‌شوند و یکی از شکل‌های زیر را دارند.

%l
نمایانگر محتوای خط است، بدون در نظر گرفتن نویسه انتهای خط (newline) پایانی آن (در صورت وجود). این قالب کامل یا ناقص بودن خط را نادیده می‌گیرد.
%L
نمایانگر محتوای خط است، به همراه نویسه سطر تازه پایانی آن (در صورت وجود). اگر خط ناقص باشد، این قالب وضعیت ناقص بودن آن را حفظ می‌کند.
%%
نمایانگر % است.
%c'C'
که در آن C یک تک‌نویسه است، نمایانگر C است. C نباید بک‌اسلش یا آپوستروف باشد. برای مثال، %c':' نمایانگر یک دونقطه (:) است.
%c'\O'
که در آن O رشته‌ای متشکل از ۱، ۲ یا ۳ رقم هشت‌هشتی است، نمایانگر نویسه‌ای با کد هشت‌هشتی O است. برای مثال، %c'\0' نمایانگر نویسه تهی (null) است.
Fn
که در آن F یک مشخصه تبدیل printf است، نمایانگر شماره خط قالب‌بندی‌شده با F است. برای مثال، %.5dn شماره خط را با استفاده از قالب "%.5d" در printf چاپ می‌کند. برای اطلاعات بیشتر در مورد مشخصه‌های تبدیل printf، به گره `Line group formats' در راهنمای CVS مراجعه کنید.

قالب پیش‌فرض خط، %l به همراه یک نویسه سطر تازه است.

اگر ورودی حاوی نویسه‌های برگه (tab) باشد و تراز ماندن آن‌ها در خروجی مهم باشد، باید مطمئن شوید که %l یا %L در یک قالب خط دقیقاً پس از یک ایستگاه تب (tab stop) قرار گرفته باشد (مثلاً با قرار دادن یک نویسه برگه پیش از %l یا %L)، یا باید از گزینه -t یا --expand-tabs استفاده کنید.

در کنار هم، قالب‌های خط و گروه خط به شما اجازه تعیین قالب‌های متنوع و متعددی را می‌دهند. برای مثال، دستور زیر از قالبی مشابه با قالب پیش‌فرض diff استفاده می‌کند. می‌توانید این دستور را برای کنترل دقیق بر خروجی diff سفارشی‌سازی کنید.

cvs diff \

--old-line-format='< %l
' \

--new-line-format='> %l
' \

--old-group-format='%df%(f=l?:,%dl)d%dE
%<' \

--new-group-format='%dea%dF%(F=L?:,%dL)
%>' \

--changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
%<—
%>' \

--unchanged-group-format='' \

myfile

خط زیر یک Unidiff (گزینهٔ -u) میان بازبینی‌های 1.14 و 1.19 از backend.c تولید می‌کند. به دلیل استفاده از گزینهٔ -kk، هیچ کلیدواژه‌ای جایگزین نمی‌شود، بنابراین تفاوت‌هایی که صرفاً به جایگزینی کلیدواژه‌ها وابسته‌اند نادیده گرفته می‌شوند.

$ cvs diff -kk -u -r 1.14 -r 1.19 backend.c

فرض کنید شاخهٔ آزمایشی EXPR1 بر پایهٔ مجموعه‌ای از پرونده‌های برچسب‌خورده با RELEASE_1_0 ایجاد شده بود. برای دیدن اتفاقاتی که در آن شاخه رخ داده است، می‌توان از دستور زیر استفاده کرد:

$ cvs diff -r RELEASE_1_0 -r EXPR1

دستوری مانند این می‌تواند برای تولید یک context diff میان دو انتشار (release) به کار رود:

$ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs

اگر گزارش تغییرات (ChangeLog) را نگهداری می‌کنید، دستوری مانند دستور زیر درست پیش از ثبت (commit) تغییراتتان می‌تواند به شما در نوشتن مدخل ChangeLog کمک کند. تمام تغییرات محلی که هنوز ثبت نشده‌اند چاپ خواهند شد.

$ cvs diff -u | less

  • خلاصه: export [-flNnR] [-r rev|-D date] [-k subst] [-d dir] module...
  • پیش‌نیاز: مخزن (repository).
  • تغییرات: دایرکتوری کاری جاری (current directory).

    این دستور گونه‌ای از checkout است؛ هنگامی از آن استفاده کنید که رونوشتی از کد منبع پودمان را بدون دایرکتوری‌های مدیریتی cvs می‌خواهید. به عنوان نمونه، ممکن است از export برای آماده‌سازی کد منبع جهت ارسال به خارج از مجموعه استفاده کنید. این دستور مستلزم آن است که یک تاریخ یا برچسب (با -D یا -r) مشخص کنید، به گونه‌ای که بتوانید بر بازتولید کد منبعی که برای دیگران ارسال می‌کنید حساب کنید (و از این رو، همواره دایرکتوری‌های خالی را هرس می‌کند).

    اغلب ترجیح داده می‌شود که از -kv همراه با cvs export استفاده شود. این کار باعث می‌شود هر کلیدواژه‌ای به گونه‌ای بسط داده شود که یک import انجام‌شده در سایتی دیگر، اطلاعات بازبینی کلیدواژه را از دست ندهد. اما آگاه باشید که این روش برون‌بری شامل پرونده‌های دودویی (باینری) را به درستی مدیریت نمی‌کند. همچنین آگاه باشید که پس از استفاده از -kv، دیگر نمی‌توان از دستور ident (که بخشی از مجموعهٔ rcs است—به ident(1) مراجعه کنید) که به دنبال رشته‌های کلیدواژه می‌گردد، استفاده کرد. اگر می‌خواهید قادر به استفاده از ident باشید، نباید از -kv استفاده کنید.

این گزینه‌های استاندارد توسط export پشتیبانی می‌شوند (برای شرح کامل آن‌ها، به گره `Common options' در راهنمای CVS مراجعه کنید):

-D date
استفاده از تازه‌ترین بازبینی که پس از date نباشد.
-f
اگر هیچ بازبینی منطبقی یافت نشد، تازه‌ترین بازبینی دریافت شود (به جای نادیده گرفتن پرونده).
-l
محلی؛ اجرا تنها در دایرکتوری کاری جاری.
-n
هیچ برنامهٔ دریافت (checkout) اجرا نشود.
-R
برون‌بری دایرکتوری‌ها به صورت بازگشتی. این گزینه به‌طور پیش‌فرض فعال است.
-r tag
استفاده از بازبینی tag.

افزون بر این، این گزینه‌ها (که میان checkout و export مشترک هستند) نیز پشتیبانی می‌شوند:

-d dir
ایجاد دایرکتوری‌ای به نام dir برای پرونده‌های کاری، به جای استفاده از نام پودمان. برای جزئیات کامل پیرامون نحوهٔ مدیریت این پرچم توسط cvs، به `checkout options' در راهنمای CVS مراجعه کنید.
-k subst
تنظیم حالت بسط کلیدواژه (به گره `Substitution modes' در راهنمای CVS مراجعه کنید).
-N
تنها همراه با -d dir مفید است. برای جزئیات کامل پیرامون نحوهٔ مدیریت این پرچم توسط cvs، به `checkout options' در راهنمای CVS مراجعه کنید.

  • خلاصه: history [-report] [-flags] [-options args] [files...]
  • پیش‌نیاز: پرونده $CVSROOT/CVSROOT/history
  • تغییرات: هیچ‌چیز.

    cvs می‌تواند یک پرونده تاریخچه نگهداری کند که هر بار استفاده از دستورهای checkout، commit، rtag، update و release را دنبال می‌کند. می‌توانید از history برای نمایش این اطلاعات در قالب‌های گوناگون استفاده کنید.

    ثبت وقایع (Logging) باید با ایجاد پرونده $CVSROOT/CVSROOT/history فعال شود.

    history گزینه‌های -f، -l، -n و -p را به گونه‌ای به کار می‌برد که با استفاده معمول درون cvs تداخل دارد (گره `Common options' را در راهنمای CVS ببینید).

چندین گزینه (که در بالا به صورت -report نشان داده شده‌اند) تعیین می‌کنند که چه نوع گزارشی تولید شود:

-c
گزارش هر بار استفاده از commit (یعنی هر بار که مخزن تغییر یافته است).
-e
همه‌چیز (تمام انواع رکورد). معادل با مشخص کردن -x همراه با تمام انواع رکورد است. البته، -e شامل انواع رکوردی که در نگارش‌های آینده cvs افزوده شوند نیز خواهد شد؛ اگر اسکریپتی می‌نویسید که تنها می‌تواند انواع خاصی از رکوردها را پردازش کند، مایل خواهید بود -x را مشخص کنید.
-m module
گزارش درباره یک پودمان خاص. (می‌توانید به طور معنادار از -m بیش از یک بار در خط فرمان استفاده کنید.)
-o
گزارش درباره پودمان‌های دریافت‌شده (checked-out). این نوع گزارش پیش‌فرض است.
-T
گزارش درباره تمام برچسب‌ها.
-x type
استخراج مجموعه‌ای خاص از انواع رکورد type از تاریخچه cvs. انواع با حروف تک‌حرفی نشان داده می‌شوند که می‌توانید آن‌ها را در ترکیب با یکدیگر مشخص کنید.

برخی دستورها یک نوع رکورد منفرد دارند:

F
release
O
checkout
E
export
T
rtag

یکی از پنج نوع رکورد ممکن است از یک update حاصل شود:

C
یک ادغام لازم بود اما تداخل‌هایی شناسایی شد (نیازمند ادغام دستی).
G
یک ادغام لازم بود و با موفقیت انجام شد.
U
یک پرونده کاری از مخزن رونویسی شد.
P
یک پرونده کاری برای تطابق با مخزن وصله شد.
W
رونوشت کاری یک پرونده هنگام به‌روزرسانی حذف شد (زیرا از مخزن حذف شده بود).

یکی از سه نوع رکورد از commit حاصل می‌شود:

A
یک پرونده برای نخستین بار افزوده شد.
M
یک پرونده تغییر یافت.
R
یک پرونده حذف شد.

گزینه‌هایی که به صورت -flags نشان داده شده‌اند گزارش را بدون نیاز به آرگومان‌های گزینه محدود یا گسترش می‌دهند:

-a
نمایش داده‌ها برای تمام کاربران (حالت پیش‌فرض نمایش داده‌ها تنها برای کاربری است که history را اجرا می‌کند).
-l
تنها نمایش آخرین تغییر.
-w
تنها نمایش رکوردهای مربوط به تغییراتی که از همان دایرکتوری کاری که history در حال اجرا است انجام شده است.

گزینه‌هایی که به صورت -options args نشان داده شده‌اند گزارش را بر اساس یک آرگومان محدود می‌کنند:

-b str
نمایش داده‌ها تا پیشینه‌ای حاوی رشته str در نام پودمان، نام پرونده، یا مسیر مخزن.
-D date
نمایش داده‌ها از تاریخ date به بعد. این رفتار اندکی با کاربرد معمول -D date متفاوت است، که تازه‌ترین نگارش قدیمی‌تر از date را انتخاب می‌کند.
-f file
نمایش داده‌ها برای یک پرونده خاص (می‌توانید چندین گزینه -f را در همان خط فرمان مشخص کنید). این معادل با مشخص کردن پرونده در خط فرمان است.
-n module
نمایش داده‌ها برای یک پودمان خاص (می‌توانید چندین گزینه -n را در همان خط فرمان مشخص کنید).
-p repository
نمایش داده‌ها برای یک مخزن منبع خاص (می‌توانید چندین گزینه -p را در همان خط فرمان مشخص کنید).
-r rev
نمایش رکوردهایی که به نگارش‌های پس از نگارش یا برچسبِ با نام rev در هر یک از پرونده‌های rcs اشاره دارند. هر پرونده rcs برای یافتن آن نگارش یا برچسب جستجو می‌شود.
-t tag
نمایش رکوردها از زمان آخرین باری که برچسب tag به پرونده تاریخچه اضافه شد. این پرچم با -r در بالا متفاوت است زیرا تنها پرونده تاریخچه را می‌خواند و نه پرونده‌های rcs را، و بسیار سریع‌تر است.
-u name
نمایش رکوردهای مربوط به کاربر name.
-z timezone
نمایش زمان‌ها در رکوردهای انتخاب‌شده با استفاده از منطقهٔ زمانی مشخص‌شده به جای UTC.

  • خلاصه: import [-options] repository vendortag releasetag...
  • پیش‌نیاز: مخزن (Repository)، دایرکتوری توزیع منبع (source distribution directory).
  • تغییرات: مخزن (repository).

    از import برای گنجاندن کل یک بستهٔ توزیع کد منبع از منبعی خارجی (مانند یک تأمین‌کنندهٔ منبع) درون دایرکتوری مخزن مبدأ خود استفاده کنید. می‌توانید از این دستور هم برای ایجاد اولیهٔ یک مخزن و هم برای به‌روزرسانی کلی پودمان از منبع خارجی استفاده کنید. برای توضیحات بیشتر در این مورد، به `Tracking sources' در راهنمای CVS مراجعه کنید.

    آرگومان repository نام یک دایرکتوری (یا مسیری به یک دایرکتوری) را در زیر دایرکتوری ریشهٔ cvs برای مخازن مشخص می‌کند؛ اگر دایرکتوری وجود نداشته باشد، دستور import آن را می‌سازد.

    هنگامی که از import برای به‌روزرسانی کدهای منبعی که در مخزن شما تغییر یافته‌اند (از زمان یک import پیشین) استفاده می‌کنید، شما را از وجود پرونده‌های دارای تداخل در دو شاخهٔ توسعه آگاه خواهد کرد؛ برای رفع تفاوت‌ها، همان‌گونه که import راهنمایی می‌کند، از دستور checkout -j استفاده نمایید.

    اگر cvs تشخیص دهد که پرونده‌ای باید نادیده گرفته شود (به گره `cvsignore' در راهنمای CVS مراجعه کنید)، آن را وارد نمی‌کند و عبارت I را به همراه نام پرونده چاپ می‌کند (برای شرح کامل خروجی به گره `import output' در راهنمای CVS مراجعه کنید).

    اگر پروندهٔ $CVSROOT/CVSROOT/cvswrappers وجود داشته باشد، هر پرونده‌ای که نام آن با مشخصات مندرج در آن پرونده مطابقت کند، به عنوان بسته در نظر گرفته می‌شود و پالایش لازم پیش از وارد شدن، بر روی پرونده/دایرکتوری اعمال می‌گردد. به `Wrappers' در راهنمای CVS مراجعه کنید.

    منبع خارجی در یک شاخهٔ سطح اول ذخیره می‌شود که مقدار پیش‌فرض آن 1.1.1 است. به‌روزرسانی‌ها برگ‌های این شاخه هستند؛ برای نمونه، پرونده‌های برگرفته از نخستین مجموعهٔ واردشده از منبع، بازبینی 1.1.1.1 خواهند بود، سپس پرونده‌های حاصل از نخستین به‌روزرسانی واردشده بازبینی 1.1.1.2 خواهند بود و به همین ترتیب ادامه می‌یابد.

    دست‌کم سه آرگومان مورد نیاز است. repository برای شناسایی مجموعهٔ منبع لازم است. vendortag برچسبی برای کل شاخه است (برای نمونه، برای 1.1.1). همچنین باید دست‌کم یک releasetag مشخص کنید تا پرونده‌های موجود در برگ‌هایی که با هر بار اجرای import ایجاد می‌شوند، به‌طور یکتا شناسایی شوند. releasetag باید جدید باشد، قبلاً در پروندهٔ مخزن وجود نداشته باشد و نسخهٔ واردشده را به‌طور یکتا مشخص نماید.

    توجه داشته باشید که import دایرکتوری‌ای را که در آن اجرا می‌شود تغییر نمی‌دهد. به‌ویژه، آن دایرکتوری را به عنوان دایرکتوری کاری cvs برپا نمی‌سازد؛ اگر می‌خواهید با کدهای منبع کار کنید، ابتدا آن‌ها را وارد (import) کرده و سپس در دایرکتوری دیگری دریافتشان (checkout) نمایید (به گره `Getting the source' در راهنمای CVS مراجعه کنید).

این گزینهٔ استاندارد توسط import پشتیبانی می‌شود (برای توضیحات کامل به گره `Common options' در راهنمای CVS مراجعه کنید):

-m message
استفاده از message به عنوان اطلاعات ثبت وقایع (log)، به جای فراخوانی یک ویرایشگر.

گزینه‌های ویژهٔ اضافی زیر نیز وجود دارند.

-b branch
به `Multiple vendor branches' در راهنمای CVS مراجعه کنید.
-d
استفاده از زمان ویرایش هر پرونده به عنوان زمان وارد کردن (import) به جای زمان فعلی.
-k subst
نشان‌دهندهٔ حالت بازگشایی کلیدواژهٔ مورد نظر است. این تنظیم بر روی تمام پرونده‌های ایجادشده در طول import اعمال خواهد شد، اما بر روی پرونده‌هایی که از پیش در مخزن موجود بوده‌اند اعمال نمی‌شود. برای مشاهدهٔ فهرستی از تنظیمات معتبر -k، به `Substitution modes' در راهنمای CVS مراجعه کنید.
-I name
مشخص کردن نام پرونده‌هایی که باید هنگام import نادیده گرفته شوند. می‌توانید مکرراً از این گزینه استفاده نمایید. برای جلوگیری از نادیده گرفتن هرگونه پرونده (حتی آن‌هایی که به‌طور پیش‌فرض نادیده گرفته می‌شوند)، عبارت `-I !' را مشخص کنید.

name می‌تواند یک الگوی نام پرونده از همان نوعی باشد که می‌توانید در پروندهٔ .cvsignore مشخص کنید. به `cvsignore' در راهنمای CVS مراجعه کنید.

-W spec
مشخص کردن نام پرونده‌هایی که باید هنگام import پالایش (فیلتر) شوند. می‌توانید مکرراً از این گزینه استفاده نمایید.

spec می‌تواند یک الگوی نام پرونده از همان نوعی باشد که می‌توانید در پروندهٔ .cvswrappers مشخص کنید. به گره `Wrappers' در راهنمای CVS مراجعه کنید.

import با چاپ یک خط به ازای هر پرونده، که پیش از آن یک نویسه نشان‌دهنده وضعیت پرونده قرار دارد، شما را از پیشرفت کار آگاه می‌کند:

U file
پرونده از پیش در مخزن موجود است و به صورت محلی ویرایش نشده است؛ یک بازبینی جدید ایجاد شده است (در صورت نیاز).
N file
پرونده یک پروندهٔ جدید است که به مخزن افزوده شده است.
C file
پرونده از پیش در مخزن وجود دارد اما به صورت محلی ویرایش شده است؛ باید تغییرات را ادغام کنید.
I file
پرونده نادیده گرفته می‌شود (به گره `cvsignore' در راهنمای CVS مراجعه کنید).
L file
این پرونده یک پیوند نمادین (symbolic link) است؛ cvs import پیوندهای نمادین را نادیده می‌گیرد. افراد به‌طور دوره‌ای پیشنهاد می‌کنند که این رفتار باید تغییر کند، اما اگر اجماعی دربارهٔ اینکه به چه چیزی باید تغییر یابد وجود داشته باشد، به نظر نمی‌رسد آشکار باشد. (گزینه‌های گوناگونی در پروندهٔ modules می‌توانند برای بازآفرینی پیوندهای نمادین هنگام checkout، update و غیره استفاده شوند؛ به گره `modules' در راهنمای CVS مراجعه کنید.)

به `Tracking sources' در راهنمای CVS، و `From files' در راهنمای CVS مراجعه کنید.

  • خلاصه: log [options] [files...]
  • نیازمندی‌ها: مخزن (repository)، دایرکتوری کاری (working directory).
  • تغییرات: هیچ‌چیز.

    نمایش اطلاعات گزارش (log) برای پرونده‌ها. log در گذشته ابزار rcs به نام rlog را فراخوانی می‌کرد. هرچند این موضوع دیگر در کدهای منبع فعلی برقرار نیست، اما این پیشینه، قالب خروجی و گزینه‌ها را تعیین می‌کند که کاملاً به سبک سایر دستورهای cvs نیستند.

    خروجی شامل مکان پروندهٔ rcs، بازبینی head (تازه‌ترین بازبینی روی شاخهٔ اصلی یا trunk)، تمام نام‌های نمادین (برچسب‌ها) و برخی موارد دیگر است. برای هر بازبینی، شمارهٔ بازبینی، پدیدآورنده، تعداد خطوط اضافه‌شده/حذف‌شده و پیام ثبت وقایع (log message) چاپ می‌شوند. تمام زمان‌ها در زمان هماهنگ جهانی (UTC) نمایش داده می‌شوند. (بخش‌های دیگر cvs زمان‌ها را در منطقهٔ زمانی محلی چاپ می‌کنند).

    دستور log از -R به روشی استفاده می‌کند که با کاربرد معمول آن در cvs تداخل دارد (به گره `Common options' در راهنمای CVS مراجعه کنید).

به‌طور پیش‌فرض، log تمام اطلاعات موجود را چاپ می‌کند. سایر گزینه‌ها خروجی را محدود می‌کنند. توجه داشته باشید که گزینه‌های انتخاب بازبینی (-b، -d، -r، -s و -w) در صورت استفاده همراه با گزینه‌هایی که خروجی را تنها به فیلدهای سرآیند log محدود می‌کنند (-h، -R و -t)، هیچ تأثیری ندارند مگر اینکه گزینهٔ -S نیز مشخص شده باشد، به جز اینکه احتمالاً موجب جستجوی پرونده‌ها در دایرکتوری‌های Attic می‌شوند.

-b
چاپ اطلاعات دربارهٔ بازبینی‌های روی شاخهٔ پیش‌فرض، که معمولاً بالاترین شاخه روی trunk است.
-d dates
چاپ اطلاعات دربارهٔ بازبینی‌هایی با تاریخ/زمان ثبت (checkin) در محدودهٔ مشخص‌شده توسط فهرست تاریخ‌های جداشده با نقطه-ویرگول (semicolon). قالب‌های تاریخ پذیرفته‌شده همان قالب‌های پذیرفته‌شده توسط گزینهٔ -D در بسیاری از دیگر دستورهای cvs هستند (به گره `Common options' در راهنمای CVS مراجعه کنید). تاریخ‌ها می‌توانند به صورت بازه‌ها به شکل زیر ترکیب شوند:
d1<d2
d2>d1
انتخاب بازبینی‌هایی که بین d1 و d2 ثبت شده‌اند.
<d
d>
انتخاب تمام بازبینی‌های با تاریخ d یا پیش از آن.
d<
>d
انتخاب تمام بازبینی‌های با تاریخ d یا پس از آن.
d
انتخاب تنها تازه‌ترین بازبینی با تاریخ d یا پیش از آن.

نویسه‌های > یا < ممکن است با یک = دنبال شوند تا به جای بازهٔ باز (exclusive)، یک بازهٔ بسته یا فراگیر (inclusive) را نشان دهند.

توجه داشته باشید که جداکننده یک نقطه-ویرگول (;) است.

-h
تنها چاپ نام پروندهٔ rcs، نام پرونده در دایرکتوری کاری، head، شاخهٔ پیش‌فرض، فهرست دسترسی (access list)، قفل‌ها، نام‌های نمادین، و پسوند.
-l
محلی؛ تنها در دایرکتوری کاری جاری اجرا شود. (پیش‌فرض اجرای بازگشتی است).
-N
فهرست برچسب‌ها برای این پرونده را چاپ نکن. این گزینه می‌تواند زمانی که سایت شما از برچسب‌های فراوان استفاده می‌کند بسیار مفید باشد؛ به این ترتیب به جای پیمایش با دستور more در بیش از ۳ صفحه اطلاعات برچسب، اطلاعات گزارش بدون هیچ برچسبی ارائه می‌شود.
-n
چاپ فهرست برچسب‌ها برای این پرونده. این گزینه می‌تواند زمانی بسیار مفید باشد که پروندهٔ .cvsrc شما دارای مدخل log -N باشد تا راهی برای دریافت فهرست کاملی از تمام برچسب‌ها فراهم کند.
-R
تنها چاپ نام پروندهٔ rcs.
-rrevisions
چاپ اطلاعات دربارهٔ بازبینی‌های ارائه‌شده در فهرست جداشده با کاما revisions از بازبینی‌ها و بازه‌ها. جدول زیر قالب‌های موجود بازه را توضیح می‌دهد:
rev1:rev2
بازبینی‌های rev1 تا rev2 (که باید روی یک شاخهٔ یکسان باشند).
rev1::rev2
همان، اما با مستثنی کردن rev1.
:rev
::rev
بازبینی‌ها از ابتدای شاخه تا و شامل rev.
rev:
بازبینی‌ها با شروع از rev تا انتهای شاخه‌ای که حاوی rev است.
rev::
بازبینی‌ها با شروع دقیقاً پس از rev تا انتهای شاخه‌ای که حاوی rev است.
branch
آرگومانی که یک شاخه باشد، به معنی تمام بازبینی‌های روی آن شاخه است.
branch1:branch2
branch1::branch2
محدوده‌ای از شاخه‌ها به معنی تمام بازبینی‌های روی شاخه‌های درون آن محدوده است.
branch.
آخرین بازبینی در branch.

گزینهٔ -r به‌تنهایی و بدون بازبینی‌ها، به معنی آخرین بازبینی روی شاخهٔ پیش‌فرض (معمولاً تنهٔ اصلی یا trunk) است. میان گزینهٔ -r و آرگومان آن نباید فاصله‌ای وجود داشته باشد.

-S
در صورت عدم انتخاب هیچ بازبینی‌ای، از چاپ سرآیند صرف‌نظر می‌کند.
-s states
چاپ اطلاعات دربارهٔ بازبینی‌هایی که مشخصهٔ وضعیت (state) آن‌ها با یکی از وضعیت‌های ارائه‌شده در فهرست جداشده با کامای states مطابقت دارد. وضعیت‌های منفرد می‌توانند هر رشتهٔ متنی باشند، هرچند cvs معمولاً تنها از دو وضعیت Exp و dead استفاده می‌کند. برای اطلاعات بیشتر به `admin options' در راهنمای CVS مراجعه کنید.
-t
همانند -h چاپ می‌کند، به همراه متن توصیفی.
-wlogins
چاپ اطلاعات دربارهٔ بازبینی‌های ثبت‌شده توسط کاربرانی که نام کاربری آن‌ها در فهرست جداشده با کامای logins آمده است. اگر logins حذف شود، نام کاربری کاربر جاری فرض می‌شود. میان گزینهٔ -w و آرگومان آن نباید فاصله‌ای وجود داشته باشد.

دستور log اشتراک بازبینی‌های انتخاب‌شده با گزینه‌های -d، -s و -w را در تقاطع با اجتماع بازبینی‌های انتخاب‌شده توسط -b و -r چاپ می‌کند.

مثال‌ها و نمونه‌های ارائه‌شده از سوی کاربران با کمال میل پذیرفته می‌شوند.

  • خلاصه: rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules...
  • پیش‌نیاز: مخزن (repository).
  • تغییرات: هیچ‌چیز.
  • مترادف: patch

    یک پروندهٔ وصله در قالب لری وال (Larry Wall format patch(1)) میان دو نسخهٔ انتشار می‌سازد که می‌تواند مستقیماً به برنامهٔ patch داده شود تا یک انتشار قدیمی را با انتشار جدید به‌روزرسانی کند. (این یکی از معدود دستورهای cvs است که مستقیماً از روی مخزن عمل می‌کند و نیازی به دریافت نسخهٔ قبلی (checkout) ندارد.) خروجی diff به دستگاه خروجی استاندارد فرستاده می‌شود.

    می‌توانید (با استفاده از گزینه‌های استاندارد -r و -D) هر ترکیبی از یک یا دو بازبینی یا تاریخ را مشخص کنید. اگر تنها یک بازبینی یا تاریخ مشخص شود، پروندهٔ وصله تفاوت‌های میان آن بازبینی یا تاریخ و بازبینی‌های رأس کنونی (head) در پروندهٔ rcs را بازتاب می‌دهد.

    توجه داشته باشید اگر انتشار نرم‌افزاریِ تحت تأثیر در بیش از یک دایرکتوری قرار داشته باشد، ممکن است هنگام اعمال وصله روی کدهای منبع قدیمی، مشخص کردن گزینهٔ -p برای دستور patch لازم باشد تا patch بتواند پرونده‌های واقع در دایرکتوری‌های دیگر را پیدا کند.

این گزینه‌های استاندارد توسط rdiff پشتیبانی می‌شوند (برای شرح کامل آن‌ها به گره `Common options' در راهنمای CVS مراجعه کنید):

-D date
استفاده از تازه‌ترین بازبینی که پس از date نباشد.
-f
اگر هیچ بازبینیِ منطبقی یافت نشد، تازه‌ترین بازبینی را دریافت می‌کند (به‌جای نادیده گرفتن پرونده).
-k kflag
پردازش کلیدواژه‌ها بر اساس kflag. به گره `Keyword substitution' در راهنمای CVS مراجعه کنید.
-l
محلی؛ به زیردایرکتوری‌ها وارد نشو.
-R
بررسی دایرکتوری‌ها به‌صورت بازگشتی. این گزینه به‌طور پیش‌فرض فعال است.
-r tag
استفاده از بازبینی tag.

علاوه بر موارد بالا، این گزینه‌ها نیز در دسترس هستند:

-c
استفاده از قالب context diff. این قالب پیش‌فرض است.
-s
ایجاد یک گزارش خلاصهٔ تغییرات به‌جای وصله (patch). این خلاصه شامل اطلاعاتی دربارهٔ پرونده‌هایی است که میان نسخه‌های انتشار تغییر یافته یا افزوده شده‌اند. گزارش به دستگاه خروجی استاندارد فرستاده می‌شود. این گزینه برای پی بردن به این‌که به عنوان مثال کدام پرونده‌ها میان دو تاریخ یا بازبینی تغییر کرده‌اند، مفید است.
-t
یک diff از دو بازبینی بالاتر به دستگاه خروجی استاندارد فرستاده می‌شود. این گزینه بیش از همه برای مشاهدهٔ این‌که آخرین تغییر روی یک پرونده چه بوده است، کاربرد دارد.
-u
استفاده از قالب unidiff برای تفاوت‌های متنی (context diffs). به یاد داشته باشید که نسخه‌های قدیمی برنامهٔ patch نمی‌توانند با قالب unidiff کار کنند، بنابراین اگر قصد ارسال این وصله به شبکه را دارید احتمالاً نباید از -u استفاده کنید.
-V vn
بسط کلیدواژه‌ها بر اساس قواعد جاری در نگارش vn از rcs (قالب بسط در نسخهٔ 5 از rcs تغییر کرد). توجه داشته باشید که این گزینه دیگر پذیرفته نمی‌شود. cvs همواره کلیدواژه‌ها را همان‌گونه که نسخهٔ 5 از rcs انجام می‌دهد، بسط خواهد داد.

فرض کنید نامه‌ای از foo@example.net دریافت کرده‌اید که درخواست به‌روزرسانی از انتشار 1.2 به 1.4 کامپایلر tc را دارد. شما چنین وصله‌هایی در دست ندارید، اما با cvs این موضوع را می‌توان به‌سادگی با دستوری مانند این برطرف کرد:

$ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
> Mail -s 'The patches you asked for' foo@example.net

فرض کنید انتشار 1.3 را انجام داده‌اید، و شاخه‌ای به نام R_1_3fix برای رفع اشکال‌ها منشعب کرده‌اید. R_1_3_1 مربوط به انتشار 1.3.1 است که مدتی پیش انجام شده بود. اکنون می‌خواهید ببینید چه مقدار توسعه روی این شاخه انجام شده است. می‌توان از این دستور استفاده کرد:

$ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
cvs rdiff: Diffing module-name
File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
File bar.h,v changed from revision 1.29.2.1 to 1.2

  • خلاصه: release [-d] directories...
  • پیش‌نیاز: دایرکتوری کاری (working directory).
  • تغییرات: دایرکتوری کاری، گزارش تاریخچه (working directory, history log).

    این دستور برای لغو ایمن اثر cvs checkout در نظر گرفته شده است. از آن‌جا که cvs پرونده‌ها را قفل نمی‌کند، استفاده از این دستور الزام قطعی ندارد. در صورت تمایل همیشه می‌توانید به‌سادگی دایرکتوری کاری خود را حذف کنید؛ اما در این صورت خطر از دست دادن تغییراتی که ممکن است فراموش کرده باشید وجود دارد، و هیچ اثری هم در پروندهٔ تاریخچهٔ cvs (به گره `history file' در راهنمای CVS مراجعه کنید) مبنی بر اینکه دریافت (checkout) خود را رها کرده‌اید بر جای نمی‌گذارید.

    برای جلوگیری از این مشکلات از cvs release استفاده کنید. این دستور بررسی می‌کند که هیچ تغییر ثبت‌نشده‌ای (uncommitted) وجود نداشته باشد؛ اینکه آن را دقیقاً از یک سطح بالاتر از دایرکتوری کاری cvs اجرا می‌کنید؛ و اینکه مخزن ثبت‌شده برای پرونده‌های شما همان مخزن تعریف‌شده در پایگاه‌دادهٔ پودمان باشد.

    اگر همهٔ این شرایط برقرار باشد، cvs release رکوردی از اجرای خود (که گواهی بر رها کردن عمدی دریافت توسط شماست) در گزارش تاریخچهٔ cvs بر جای می‌گذارد.

دستور release از یک گزینهٔ دستوری پشتیبانی می‌کند:

-d
در صورت موفقیت‌آمیز بودن آزادسازی، رونوشت کاری پرونده را حذف می‌کند. اگر این پرچم داده نشود، پرونده‌های شما در دایرکتوری کاری باقی خواهند ماند.

هشدار: دستور release تمام دایرکتوری‌ها و پرونده‌ها را به‌طور بازگشتی حذف می‌کند. این کار اثر جانبی بسیار شدیدی دارد؛ به این صورت که هر دایرکتوری ایجادشده درون کدهای منبع دریافت‌شده که به مخزن افزوده نشده باشد (با استفاده از دستور add؛ به گره `Adding files' در راهنمای CVS مراجعه کنید)، بی‌صدا حذف خواهد شد—حتی اگر خالی نباشد!

پیش از آنکه release منابع شما را آزاد کند، برای هر پرونده‌ای که به‌روز نباشد یک پیام یک‌خطی چاپ می‌کند.

U file
P file
بازبینی جدیدتری از این پرونده در مخزن وجود دارد، و شما رونوشت محلی پرونده را تغییر نداده‌اید (U و P معنای یکسانی دارند).
A file
پرونده به رونوشت خصوصی شما از کدهای منبع اضافه شده است، اما هنوز در مخزن ثبت (commit) نشده است. اگر رونوشت خود از منابع را حذف کنید، این پرونده از دست خواهد رفت.
R file
پرونده از رونوشت خصوصی شما از کدهای منبع حذف شده است، اما هنوز از مخزن حذف نشده، زیرا حذف را هنوز ثبت نکرده‌اید. به `commit' در راهنمای CVS مراجعه کنید.
M file
پرونده در دایرکتوری کاری شما تغییر یافته است. همچنین ممکن است بازبینی جدیدتری درون مخزن وجود داشته باشد.
? file
پروندهٔ file در دایرکتوری کاری شما قرار دارد، اما با هیچ چیزی در مخزن منبع مطابقت ندارد، و در فهرست پرونده‌های نادیده‌گرفتنی cvs نیز قرار ندارد (شرح گزینهٔ -I را ببینید، و به گره `cvsignore' در راهنمای CVS مراجعه کنید). اگر منابع کاری خود را حذف کنید، این پرونده از دست خواهد رفت.

دایرکتوری tc را رهاسازی (release) کرده و رونوشت کاری محلی خود را از پرونده‌ها حذف کنید.

$ cd .. # هنگام اجرای دستور cvs release باید

# دقیقاً یک سطح بالاتر از کد‌های منبع قرار داشته باشید.
$ cvs release -d tc
You have [0] altered files in this repository.
Are you sure you want to release (and delete) directory `tc': y
$

  • خلاصه: remove [-flR] [files...]
  • پیش‌نیاز: مخزن، دایرکتوری کاری.
  • تغییرات: دایرکتوری کاری.

    دستور remove برای حذف پرونده‌های ناخواسته از استفادهٔ فعال به کار می‌رود. کاربر معمولاً پیش از فراخوانی دستور remove، پرونده‌ها را از دایرکتوری کاری حذف می‌کند. تنها دایرکتوری کاری به‌روزرسانی می‌شود. تغییرات در مخزن تا زمان اجرای دستور commit اعمال نخواهند شد.

    دستور remove پرونده‌ها را از مخزن حذف نمی‌کند. cvs تمام داده‌های تاریخی را در مخزن نگه می‌دارد تا امکان بازسازی حالت‌های پیشین پروژه‌های تحت کنترل نسخه وجود داشته باشد.

    برای واگردانیِ cvs remove یا احیای پرونده‌هایی که پیش‌تر حذف شده‌اند، به گره `add' در راهنمای CVS مراجعه کنید.

این گزینه‌های استاندارد توسط remove پشتیبانی می‌شوند (برای شرح کامل آن‌ها به گره `Common options' در راهنمای CVS مراجعه کنید):

-l
محلی؛ فقط در دایرکتوری کاری جاری اجرا شود. به `Recursive behavior' در راهنمای CVS مراجعه کنید.
-R
پردازش بازگشتی دایرکتوری‌ها. به `Recursive behavior' در راهنمای CVS مراجعه کنید.

علاوه بر این، این گزینه‌ها نیز پشتیبانی می‌شوند:

-f
توجه داشته باشید که این رفتار استاندارد گزینهٔ -f بر پایهٔ تعریفِ گره `Common options' در راهنمای CVS نیست.

حذف پرونده‌ها پیش از برچیدن آن‌ها از نسخه.

سلسله‌مراتب‌های کامل دایرکتوری به‌سادگی با استفاده از -f حذف می‌شوند، اما توجه داشته باشید که احیای سلسله‌مراتب‌های دایرکتوری به همان سادگیِ حذف آن‌ها نیست.

$ cvs remove remove.me
cvs remove: file `remove.me' still in working directory
cvs remove: 1 file exists; remove it first
$ rm -f remove.me
$ cvs remove remove.me
cvs remove: scheduling `remove.me' for removal
cvs remove: use 'cvs commit' to remove this file permanently
$ ls remove.it
remove.it
$ cvs remove -f remove.it
cvs remove: scheduling `remove.it' for removal
cvs remove: use 'cvs commit' to remove this file permanently

$ tree -d a
a
|-- CVS
`-- b

`-- CVS
3 directories
$ cvs remove -f a
cvs remove: Removing a
cvs remove: Removing a/b
cvs remove: scheduling `a/b/c' for removal
cvs remove: use 'cvs commit' to remove this file permanently

  • update [-ACdflPpR] [-I name] [-j rev [-j rev]] [-k kflag] [-r tag|-D date] [-W spec] files...
  • پیش‌نیاز: مخزن، دایرکتوری کاری.
  • تغییرات: دایرکتوری کاری.

    پس از اجرای checkout برای ایجاد رونوشت اختصاصی از کدهای منبع از مخزن مشترک، دیگر توسعه‌دهندگان به تغییر کد منبع مرکزی ادامه خواهند داد. گهگاه، در زمان مناسب در فرایند توسعه، می‌توانید از دستور update درون دایرکتوری کاری خود استفاده کنید تا کارهای خود را با هرگونه بازبینی اعمال‌شده بر مخزن منبع از زمان آخرین checkout یا update تطبیق دهید.

این گزینه‌های استاندارد در update در دسترس هستند (برای توضیحات کامل آن‌ها به گره `Common options' در راهنمای CVS مراجعه کنید):

-D date
استفاده از تازه‌ترین بازبینی که پس از date نباشد. این گزینه چسبنده (sticky) است و متضمن -P می‌باشد. برای اطلاعات بیشتر دربارهٔ برچسب‌ها/تاریخ‌های چسبنده به `Sticky tags' در راهنمای CVS مراجعه کنید.
-f
تنها با پرچم‌های -D date یا -r tag مفید است. اگر هیچ بازبینی مطابقی یافت نشود، تازه‌ترین بازبینی را بازیابی می‌کند (به جای نادیده گرفتن پرونده).
-k kflag
پردازش کلیدواژه‌ها بر اساس kflag. به `Keyword substitution' در راهنمای CVS مراجعه کنید. این گزینه چسبنده است؛ به‌روزرسانی‌های بعدی این پرونده در این دایرکتوری کاری از همان kflag استفاده خواهند کرد. می‌توان دستور status را برای مشاهدهٔ گزینه‌های چسبنده بررسی کرد. برای اطلاعات بیشتر دربارهٔ دستور status به `Invoking CVS' در راهنمای CVS مراجعه کنید.
-l
محلی؛ اجرا تنها در دایرکتوری کاری فعلی. به `Recursive behavior' در راهنمای CVS مراجعه کنید.
-P
هرس دایرکتوری‌های خالی. به `Moving directories' در راهنمای CVS مراجعه کنید.
-p
ارسال پرونده‌ها به خروجی استاندارد.
-R
به‌روزرسانی بازگشتی دایرکتوری‌ها (پیش‌فرض). به `Recursive behavior' در راهنمای CVS مراجعه کنید.
-r rev
بازیابی بازبینی/برچسب rev. این گزینه چسبنده است و متضمن -P می‌باشد. برای اطلاعات بیشتر دربارهٔ برچسب‌ها/تاریخ‌های چسبنده به `Sticky tags' در راهنمای CVS مراجعه کنید.

این گزینه‌های ویژه نیز برای update در دسترس هستند.

-A
بازنشانی هرگونه برچسب، تاریخ یا گزینه‌های -k چسبنده. گزینه‌های -k چسبنده را بر روی پرونده‌های تغییریافته بازنشانی نمی‌کند. برای اطلاعات بیشتر دربارهٔ برچسب‌ها/تاریخ‌های چسبنده به `Sticky tags' در راهنمای CVS مراجعه کنید.
-C
بازنویسی پرونده‌های محلی تغییریافته با رونوشت‌های تمیز از مخزن (با این حال، پروندهٔ تغییریافته در .#file.revision ذخیره می‌شود).
-d
ایجاد هرگونه دایرکتوری موجود در مخزن در صورتی که در دایرکتوری کاری وجود نداشته باشند. به‌طور معمول، update تنها بر روی دایرکتوری‌ها و پرونده‌هایی اثر می‌گذارد که پیش‌تر در دایرکتوری کاری شما ثبت شده‌اند.

این گزینه برای به‌روزرسانی دایرکتوری‌هایی که پس از checkout اولیه در مخزن ایجاد شده‌اند مفید است؛ اما یک اثر جانبی ناخواسته دارد. اگر هنگام ایجاد دایرکتوری کاری خود تعمداً از برخی دایرکتوری‌ها در مخزن صرف‌نظر کرده باشید (چه از طریق استفاده از نام پودمان یا با درج صریح پرونده‌ها و دایرکتوری‌های مورد نظر در خط فرمان)، آن‌گاه به‌روزرسانی با -d آن دایرکتوری‌ها را ایجاد خواهد کرد، که ممکن است مطلوب شما نباشد.

-I name
نادیده گرفتن پرونده‌هایی با نام مطابق با name (در دایرکتوری کاری شما) در طول به‌روزرسانی. می‌توانید بیش از یک بار -I را در خط فرمان مشخص کنید تا چندین پرونده نادیده گرفته شوند. از -I ! برای جلوگیری از نادیده گرفتن هرگونه پرونده استفاده کنید. برای راه‌های دیگر نادیده گرفتن پرونده‌ها توسط cvs به `cvsignore' در راهنمای CVS مراجعه کنید.
-Wspec
مشخص کردن نام پرونده‌هایی که باید در طول به‌روزرسانی پالایش شوند. می‌توانید از این گزینه به‌طور مکرر استفاده کنید.

spec می‌تواند الگویی از نام پرونده از همان نوعی باشد که در پروندهٔ .cvswrappers مشخص می‌شود. به `Wrappers' در راهنمای CVS مراجعه کنید.

-jrevision
با دو گزینهٔ -j، ادغام تغییرات از بازبینی مشخص‌شده با نخستین گزینهٔ -j به بازبینی مشخص‌شده با دومین گزینهٔ j، درون دایرکتوری کاری.

با یک گزینهٔ -j، ادغام تغییرات از بازبینی نیا به بازبینی مشخص‌شده با گزینهٔ -j، درون دایرکتوری کاری. بازبینی نیا، نیاکان مشترک بازبینی‌ای است که دایرکتوری کاری بر پایهٔ آن است، و بازبینی مشخص‌شده در گزینهٔ -j.

توجه داشته باشید که استفاده از یک گزینهٔ منفرد -j tagname به جای -j branchname برای ادغام تغییرات از یک شاخه، اغلب پرونده‌هایی را که در شاخه حذف شده‌اند پاک نخواهد کرد. برای اطلاعات بیشتر به `Merging adds and removals' در راهنمای CVS مراجعه کنید.

علاوه بر این، هر گزینهٔ -j می‌تواند شامل یک مشخصهٔ تاریخ اختیاری باشد که در صورت استفاده با شاخه‌ها، می‌تواند بازبینی انتخاب‌شده را به بازبینی درون تاریخی معین محدود کند. تاریخ اختیاری با افزودن یک دونقطه (:) به برچسب مشخص می‌شود: -jSymbolic_Tag:Date_Specifier.

به `Branching and merging' در راهنمای CVS مراجعه کنید.

دستورهای update و checkout با چاپ یک خط برای هر پرونده که پیش از آن یک نویسه به نشانهٔ وضعیت پرونده قرار دارد، شما را از پیشرفت کار خود مطلع می‌سازند:

U file
پرونده نسبت به مخزن به‌روزرسانی شد. این وضعیت برای هر پرونده‌ای رخ می‌دهد که در مخزن وجود دارد اما در دایرکتوری کاری شما نیست، و همچنین برای پرونده‌هایی که شما آن‌ها را تغییر نداده‌اید اما تازه‌ترین نسخهٔ موجود در مخزن نیستند.
P file
مشابه U، اما کارساز cvs به جای ارسال کل پرونده، یک وصله (patch) ارسال می‌کند. این کار نتیجه‌ای یکسان با U با مصرف پهنای باند کمتر دارد.
A file
پرونده به رونوشت اختصاصی شما از کدهای منبع اضافه شده است و با اجرای commit بر روی پرونده، به مخزن منبع اضافه خواهد شد. این یادآوری است به شما مبنی بر این‌که پرونده باید ثبت (commit) شود.
R file
پرونده از رونوشت اختصاصی شما از کدهای منبع حذف شده است و با اجرای commit بر روی پرونده، از مخزن منبع حذف خواهد شد. این یادآوری است به شما مبنی بر این‌که پرونده باید ثبت (commit) شود.
M file
پرونده در دایرکتوری کاری شما تغییر یافته است.

وضعیت M می‌تواند بیانگر یکی از دو حالت برای پرونده‌ای باشد که روی آن کار می‌کنید: یا تغییری در همان پرونده در مخزن ایجاد نشده است، بنابراین پرونده همان‌گونه که آخرین بار دیده‌اید باقی می‌ماند؛ یا تغییراتی در مخزن و همچنین در رونوشت شما رخ داده است، اما آن‌ها با موفقیت و بدون تداخل در دایرکتوری کاری شما ادغام شده‌اند.

اگر cvs کار شما را ادغام کند، پیام‌هایی را چاپ خواهد کرد، و یک رونوشت پشتیبان از پروندهٔ کاری شما (به همان شکلی که پیش از اجرای update بود) ایجاد خواهد شد. نام دقیق آن پرونده هنگام اجرای update چاپ می‌شود.

C file
هنگام تلاش برای ادغام تغییرات شما در file با تغییرات موجود در مخزن منبع، یک تداخل (conflict) تشخیص داده شد. اکنون file (رونوشت موجود در دایرکتوری کاری شما) حاصل تلاش برای ادغام دو بازبینی است؛ همچنین یک رونوشت دست‌نخورده از پروندهٔ شما با نام .#file.revision در دایرکتوری کاری قرار دارد که در آن revision بازبینی‌ای است که پروندهٔ تغییریافتهٔ شما از آن آغاز شده بود. تداخل را همان‌گونه که در `Conflicts example' در راهنمای CVS شرح داده شده است حل کنید. (توجه داشته باشید که برخی سامانه‌ها پرونده‌هایی را که با .# آغاز می‌شوند در صورتی که چند روز به آن‌ها دسترسی پیدا نشود، به‌طور خودکار پاک می‌کنند. اگر قصد دارید رونوشتی از پروندهٔ اصلی خود را نگه دارید، تغییر نام آن ایدهٔ بسیار خوبی است.) در vms، نام پرونده به جای .# با __ آغاز می‌شود.
? file
پروندهٔ file در دایرکتوری کاری شما قرار دارد، اما متناظر با هیچ چیزی در مخزن منبع نیست و در فهرست پرونده‌های نادیده‌گرفته‌شده توسط cvs نیز وجود ندارد (توضیحات گزینهٔ -I و گره `cvsignore' در راهنمای CVS را ببینید).

نویسندهٔ اصلی نسخهٔ اسکریپت شل cvs که در انتشار volume6 در دسامبر ۱۹۸۶ در comp.sources.unix ارسال شد. بخش عمده‌ای از الگوریتم‌های حل تداخل در cvs به او نسبت داده می‌شود.
برنامه‌نویس و طراح خود برنامهٔ cvs در آوریل ۱۹۸۹، بر پایهٔ کار اولیهٔ انجام‌شده توسط دیک.
کمک به برایان در طراحی پودمان cvs و پشتیبانی از شاخهٔ تأمین‌کننده (vendor branch) و نویسندهٔ اسکریپت شل checkin(1) (نیای cvs import).
به نگهداری cvs برای سال‌های متمادی کمک کرده‌اند.
و بسیاری افراد دیگر که نام بردن از آن‌ها در اینجا ممکن نیست.

جامع‌ترین راهنما برای CVS کتاب Version Management with CVS نوشتهٔ Per Cederqvist و دیگران است. بسته به سامانهٔ شما، ممکن است بتوانید با دستور info CVS به آن دسترسی پیدا کنید یا ممکن است به صورت cvs.pdf (قالب سند قابل حمل)، cvs.ps (پست‌اسکریپت)، cvs.texinfo (منبع Texinfo) یا cvs.html در دسترس باشد.

برای دریافت به‌روزرسانی‌های CVS، اطلاعات بیشتر دربارهٔ مستندات، نرم‌افزارهای مرتبط با CVS، توسعهٔ CVS و موارد دیگر، ببینید:

http://cvs.nongnu.org

ci(1), co(1), cvs(5), cvsbug(8), diff(1), grep(1), patch(1), rcs(1), rcsdiff(1), rcsmerge(1), rlog(1).