| CVS(1) | General Commands Manual | CVS(1) |
NAME - نام
cvs - سامانه نسخههای همگام (Concurrent Versions System)
SYNOPSIS - خلاصهی دستورات
- cvs [ cvs_options ]
- cvs_command [ command_options ] [ command_args ]
NOTE - یادداشت
این صفحه راهنما خلاصهای از برخی ویژگیهای cvs است. این متن بهصورت خودکار از پیوست راهنمای CVS تولید شده است. برای مستندات جامعتر و دقیقتر، لطفاً به راهنمای Cederqvist (از طریق دستور info CVS یا روشهای دیگر، همانگونه که در بخش SEE ALSO این صفحه راهنما آمده است) مراجعه کنید. ارجاعات متقابل در این صفحه راهنما به گرههای همان راهنما اشاره دارند.
CVS commands - دستورهای CVS
Guide to CVS commands - راهنمای دستورهای CVS
این پیوست ساختار کلی دستورهای cvs را شرح میدهد و برخی دستورها را با جزئیات بیان میکند (دستورهای دیگر در جاهای دیگر شرح داده شدهاند؛ برای یک مرجع سریع از دستورهای cvs، به گره `Invoking CVS' در راهنمای CVS مراجعه کنید).
Structure - ساختار
Overall structure of CVS commands - ساختار کلی دستورهای 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 داده میشود ممکن است معنای متفاوتی داشته باشد، و توسط دستورهای بیشتری پذیرفته شود. به عبارت دیگر، دستهبندی فوق را خیلی جدی نگیرید. در عوض به مستندات مربوطه مراجعه کنید.
وضعیت خروج (Exit status)
وضعیت خروج CVS (CVS's exit status)
دستور cvs میتواند با تنظیم exit status (وضعیت خروج) خود، موفقیتآمیز بودن یا شکست را به محیط فراخواننده اعلام کند. روش دقیق آزمایش وضعیت خروج از یک سیستمعامل به سیستمعامل دیگر متفاوت خواهد بود. برای نمونه در یک اسکریپت شل یونیکس، اگر آخرین دستور وضعیت خروج موفقیتآمیز برگردانده باشد متغیر $? برابر ۰ خواهد بود، و اگر وضعیت خروج نشاندهنده شکست باشد، بزرگتر از ۰ خواهد بود.
اگر cvs موفقیتآمیز باشد، یک وضعیت موفقیت برمیگرداند؛ اگر خطایی رخ دهد، یک پیام خطا چاپ کرده و وضعیت شکست برمیگرداند. تنها استثنا برای این موضوع دستور cvs diff است. این دستور در صورتی که هیچ تفاوتی نیابد وضعیت موفقیت برمیگرداند، و اگر تفاوتی وجود داشته باشد یا خطایی رخ داده باشد، وضعیت شکست برمیگرداند. از آنجا که این رفتار روش مناسبی برای تشخیص خطاها فراهم نمیکند، در آینده ممکن است cvs diff تغییر یابد تا مانند سایر دستورهای cvs رفتار کند.
~/.cvsrc (~/.cvsrc)
گزینههای پیشفرض و پرونده ~/.cvsrc (Default options and the ~/.cvsrc file)
برخی 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 از سطح فشردهسازی ۶ استفاده کند.
گزینههای سراسری (Global options)
گزینههای در دسترس 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 اثر میگذارد.
Common options - گزینههای مشترک
Common command options - گزینههای مشترک دستورات
این بخش 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.
افزودن (add)
افزودن پروندهها و دایرکتوریها به مخزن (Add files and directories to the repository)
- خلاصه (Synopsis): add [-k rcs-kflag] [-m message] files...
- نیازمندیها (Requires): مخزن (repository)، دایرکتوری کاری (working directory).
- تغییرات (Changes):
مخزن (repository)،
دایرکتوری
کاری (working directory).
دستور add برای معرفی پروندهها و دایرکتوریهای جدید جهت افزودن به مخزن cvs به کار میرود. هنگامی که add بر روی یک دایرکتوری استفاده شود، یک دایرکتوری جدید بلافاصله در مخزن ایجاد میگردد. هنگامی که بر روی یک پرونده به کار رود، تنها دایرکتوری کاری بهروزرسانی میشود. تغییرات در مخزن تا زمانی که دستور commit بر روی پرونده تازه افزوده شده اجرا نشود، اعمال نمیگردند.
دستور add همچنین پروندههایی را که قبلاً حذف شدهاند احیا میکند. این کار میتواند قبل یا بعد از استفاده از دستور commit برای نهاییسازی حذف پروندهها انجام شود. پروندههای احیاشده در همان زمان اجرای دستور add در دایرکتوری کاری بازیابی میشوند.
گزینههای add (add options)
این گزینههای استاندارد توسط add پشتیبانی میشوند (برای شرح کامل آنها، گره `Common options' را در راهنمای CVS ببینید):
- -k kflag
- پردازش کلیدواژهها مطابق با kflag. گره `Keyword substitution' را در راهنمای CVS ببینید. این گزینه چسبنده (sticky) است؛ بهروزرسانیهای آتیِ این پرونده در این دایرکتوری کاری از همین kflag استفاده خواهند کرد. دستور status میتواند برای مشاهده گزینههای چسبنده بررسی شود. برای اطلاعات بیشتر درباره دستور status، گره `Invoking CVS' را در راهنمای CVS ببینید.
- -m message
- استفاده از message به عنوان پیام گزارش، به جای فراخوانی یک ویرایشگر.
مثالهای add (add examples)
افزودن یک دایرکتوری (Adding a directory)
- $ mkdir doc
- $ cvs add doc
- Directory /path/to/repository/doc added to the repository
افزودن یک پرونده (Adding a file)
- $ >TODO
- $ cvs add TODO
- cvs add: scheduling file `TODO' for addition
- cvs add: use 'cvs commit' to add this file permanently
خنثیسازی دستور remove (Undoing a remove command)
- $ 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
مدیریت (admin)
مدیریت سیستم (Administration)
- نیازمندیها (Requires): مخزن (repository)، دایرکتوری کاری (working directory).
- تغییرات (Changes): مخزن (repository).
- مترادف (Synonym): rcs
این رابط cvs با امکانات مدیریتی گوناگون است. برخی از آنها کاربرد چندانی برای cvs ندارند اما برای اهداف تاریخی حفظ شدهاند. برخی از این گزینههای تردیدبرانگیز احتمالاً در آینده حذف خواهند شد. این دستور به صورت بازگشتی عمل میکند، بنابراین باید نهایت دقت را به کار برد.
در یونیکس، اگر گروهی به نام cvsadmin وجود داشته باشد، تنها اعضای آن گروه میتوانند cvs admin را اجرا کنند (به استثنای دستور cvs admin -k که برای هر کاربری قابل اجرا است). این گروه باید روی سرور، یا هر سامانهای که نسخه غیر کلاینت/سرورِ cvs را اجرا میکند وجود داشته باشد. برای غیرمجاز کردن cvs admin برای تمامی کاربران، گروهی بسازید که هیچ کاربری در آن نباشد. در NT، ویژگی cvsadmin وجود ندارد و همه کاربران میتوانند cvs admin را اجرا نمایند.
admin options - گزینههای 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 - حاشیهنویسی (annotate)
What revision modified each line of a file? - کدام بازبینی هر خط پرونده را ویرایش کرده است؟
- خلاصه: annotate [options] files...
- پیشنیاز: مخزن (repository).
- مترادف: blame
- تغییرات:
هیچچیز.
برای هر پرونده در files، آخرین بازبینی (head revision) شاخه اصلی (trunk) را به همراه اطلاعات آخرین تغییر ایجادشده برای هر خط چاپ میکند.
annotate options - گزینههای annotate
این گزینههای استاندارد توسط annotate پشتیبانی میشوند (برای شرح کامل آنها به گره `Common options' در راهنمای CVS مراجعه کنید):
- -l
- تنها دایرکتوری محلی، بدون پیمایش بازگشتی.
- -R
- پردازش دایرکتوریها بهصورت بازگشتی.
- -f
- استفاده از آخرین بازبینی (head revision) در صورت نیافتن برچسب/تاریخ.
- -F
- حاشیهنویسی پروندههای باینری (دودویی).
- -r revision
- حاشیهنویسی پرونده بر اساس بازبینی/برچسب مشخصشده.
- -D date
- حاشیهنویسی پرونده بر اساس تاریخ مشخصشده.
annotate example - مثال annotate
برای مثال:
- $ 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 - دریافت نسخه (checkout)
Check out sources for editing - دریافت کدهای منبع برای ویرایش
- خلاصه: 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 (checkout options)
این گزینههای استاندارد توسط 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 ببینید.
checkout examples - نمونههای checkout
دریافت یک نسخه از ماژول tc:
- $ cvs checkout tc
-
دریافت یک نسخه از ماژول tc به همان صورتی که یک روز پیش بود:
- $ cvs checkout -D yesterday tc
commit - ثبت تغییرات (commit)
Check files into the repository - تحویل فایلها به مخزن
- خلاصه: 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 options - گزینههای commit
این گزینههای استاندارد توسط 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 بهعنوان پیام گزارش، بهجای باز کردن یک ویرایشگر.
commit examples - مثالهای commit
Committing to a branch - ثبت روی یک شاخه
شما میتوانید با گزینه -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) است.
Creating the branch after editing - ایجاد شاخه پس از ویرایش
فرض کنید روی نرمافزاری بسیار تجربی کار کردهاید که بر پایه هر بازنگریای است که هفته گذشته اتفاقی دریافت (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
diff - بررسی تفاوتها (diff)
Show differences between revisions - نمایش تفاوتهای میان بازنگریها
- خلاصه دستور (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 options - گزینههای diff
این گزینههای استاندارد توسط 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) استفاده میکند.
Line group formats - قالبهای گروه خط
قالبهای گروه خط به شما امکان میدهند قالبهای مناسب برای بسیاری از برنامههایی که ورودی 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 است.
Line formats - قالبهای خط
قالبهای خط نحوه نمایش هر خط گرفتهشده از یک فایل ورودی را بهعنوان بخشی از یک گروه خط در قالب شرطی (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
diff examples - نمونههای diff
خط زیر یک 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 - برونبری (export)
Export sources from CVS, similar to checkout - برونبری کدهای منبع از CVS، مشابه checkout
- خلاصه: 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 options - گزینههای export
این گزینههای استاندارد توسط 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 - تاریخچه (history)
Show status of files and users - نمایش وضعیت پروندهها و کاربران
- خلاصه: 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 ببینید).
history options - گزینههای history
چندین گزینه (که در بالا به صورت -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 - وارد کردن (import)
Import sources into CVS, using vendor branches - وارد کردن کدهای منبع به CVS با استفاده از شاخههای تأمینکننده (vendor branches)
- خلاصه: 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 options - گزینههای import
این گزینهٔ استاندارد توسط 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 output - خروجی import
import با چاپ یک خط به ازای هر پرونده، که پیش از آن یک نویسه نشاندهنده وضعیت پرونده قرار دارد، شما را از پیشرفت کار آگاه میکند:
- U file
- پرونده از پیش در مخزن موجود است و به صورت محلی ویرایش نشده است؛ یک بازبینی جدید ایجاد شده است (در صورت نیاز).
- N file
- پرونده یک پروندهٔ جدید است که به مخزن افزوده شده است.
- C file
- پرونده از پیش در مخزن وجود دارد اما به صورت محلی ویرایش شده است؛ باید تغییرات را ادغام کنید.
- I file
- پرونده نادیده گرفته میشود (به گره `cvsignore' در راهنمای CVS مراجعه کنید).
- L file
- این پرونده یک پیوند نمادین (symbolic link) است؛ cvs import پیوندهای نمادین را نادیده میگیرد. افراد بهطور دورهای پیشنهاد میکنند که این رفتار باید تغییر کند، اما اگر اجماعی دربارهٔ اینکه به چه چیزی باید تغییر یابد وجود داشته باشد، به نظر نمیرسد آشکار باشد. (گزینههای گوناگونی در پروندهٔ modules میتوانند برای بازآفرینی پیوندهای نمادین هنگام checkout، update و غیره استفاده شوند؛ به گره `modules' در راهنمای CVS مراجعه کنید.)
import examples - مثالهای import
به `Tracking sources' در راهنمای CVS، و `From files' در راهنمای CVS مراجعه کنید.
log - گزارش پیشینه (log)
Print out log information for files - چاپ اطلاعات گزارش برای پروندهها
- خلاصه: 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 options - گزینههای log
بهطور پیشفرض، 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 چاپ میکند.
log examples - مثالهای log
مثالها و نمونههای ارائهشده از سوی کاربران با کمال میل پذیرفته میشوند.
rdiff - تفاوتهای انتشار (rdiff)
'patch' format diffs between releases - تفاوتهای قالب 'patch' میان انتشارها
- خلاصه: 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 options - گزینههای rdiff
این گزینههای استاندارد توسط 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 انجام میدهد، بسط خواهد داد.
rdiff examples - نمونههای rdiff
فرض کنید نامهای از 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 - آزادسازی (release)
Indicate that a Module is no longer in use - اعلان اینکه یک پودمان دیگر استفاده نمیشود
- خلاصه: 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 options - گزینههای release
دستور release از یک گزینهٔ دستوری پشتیبانی میکند:
- -d
- در صورت
موفقیتآمیز
بودن
آزادسازی،
رونوشت
کاری
پرونده را
حذف میکند.
اگر این
پرچم داده
نشود،
پروندههای
شما در
دایرکتوری
کاری باقی
خواهند
ماند.
هشدار: دستور release تمام دایرکتوریها و پروندهها را بهطور بازگشتی حذف میکند. این کار اثر جانبی بسیار شدیدی دارد؛ به این صورت که هر دایرکتوری ایجادشده درون کدهای منبع دریافتشده که به مخزن افزوده نشده باشد (با استفاده از دستور add؛ به گره `Adding files' در راهنمای CVS مراجعه کنید)، بیصدا حذف خواهد شد—حتی اگر خالی نباشد!
release output - خروجی release
پیش از آنکه release منابع شما را آزاد کند، برای هر پروندهای که بهروز نباشد یک پیام یکخطی چاپ میکند.
- U file
- P file
- بازبینی جدیدتری از این پرونده در مخزن وجود دارد، و شما رونوشت محلی پرونده را تغییر ندادهاید (U و P معنای یکسانی دارند).
- A file
- پرونده به رونوشت خصوصی شما از کدهای منبع اضافه شده است، اما هنوز در مخزن ثبت (commit) نشده است. اگر رونوشت خود از منابع را حذف کنید، این پرونده از دست خواهد رفت.
- R file
- پرونده از رونوشت خصوصی شما از کدهای منبع حذف شده است، اما هنوز از مخزن حذف نشده، زیرا حذف را هنوز ثبت نکردهاید. به `commit' در راهنمای CVS مراجعه کنید.
- M file
- پرونده در دایرکتوری کاری شما تغییر یافته است. همچنین ممکن است بازبینی جدیدتری درون مخزن وجود داشته باشد.
- ? file
- پروندهٔ file در دایرکتوری کاری شما قرار دارد، اما با هیچ چیزی در مخزن منبع مطابقت ندارد، و در فهرست پروندههای نادیدهگرفتنی cvs نیز قرار ندارد (شرح گزینهٔ -I را ببینید، و به گره `cvsignore' در راهنمای CVS مراجعه کنید). اگر منابع کاری خود را حذف کنید، این پرونده از دست خواهد رفت.
release examples - نمونههای release
دایرکتوری 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 - حذف (remove)
Remove files from active use - حذف پروندهها از استفادهٔ فعال
- خلاصه: remove [-flR] [files...]
- پیشنیاز: مخزن، دایرکتوری کاری.
- تغییرات:
دایرکتوری
کاری.
دستور remove برای حذف پروندههای ناخواسته از استفادهٔ فعال به کار میرود. کاربر معمولاً پیش از فراخوانی دستور remove، پروندهها را از دایرکتوری کاری حذف میکند. تنها دایرکتوری کاری بهروزرسانی میشود. تغییرات در مخزن تا زمان اجرای دستور commit اعمال نخواهند شد.
دستور remove پروندهها را از مخزن حذف نمیکند. cvs تمام دادههای تاریخی را در مخزن نگه میدارد تا امکان بازسازی حالتهای پیشین پروژههای تحت کنترل نسخه وجود داشته باشد.
برای واگردانیِ cvs remove یا احیای پروندههایی که پیشتر حذف شدهاند، به گره `add' در راهنمای CVS مراجعه کنید.
remove options - گزینههای remove
این گزینههای استاندارد توسط remove پشتیبانی میشوند (برای شرح کامل آنها به گره `Common options' در راهنمای CVS مراجعه کنید):
- -l
- محلی؛ فقط در دایرکتوری کاری جاری اجرا شود. به `Recursive behavior' در راهنمای CVS مراجعه کنید.
- -R
- پردازش
بازگشتی
دایرکتوریها.
به `Recursive behavior' در
راهنمای CVS
مراجعه
کنید.
علاوه بر این، این گزینهها نیز پشتیبانی میشوند:
- -f
- توجه داشته
باشید که
این رفتار
استاندارد
گزینهٔ -f
بر پایهٔ
تعریفِ گره
`Common options' در
راهنمای CVS
نیست.
حذف پروندهها پیش از برچیدن آنها از نسخه.
سلسلهمراتبهای کامل دایرکتوری بهسادگی با استفاده از -f حذف میشوند، اما توجه داشته باشید که احیای سلسلهمراتبهای دایرکتوری به همان سادگیِ حذف آنها نیست.
remove examples - نمونههای remove
Removing a file - حذف یک پرونده
- $ 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
Removing entire directories - حذف تمام دایرکتوریها
- $ 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 - بهروزرسانی (update)
Bring work tree in sync with repository - همگامسازی درخت کاری با مخزن
- update [-ACdflPpR] [-I name] [-j rev [-j rev]] [-k kflag] [-r tag|-D date] [-W spec] files...
- پیشنیاز: مخزن، دایرکتوری کاری.
- تغییرات:
دایرکتوری
کاری.
پس از اجرای checkout برای ایجاد رونوشت اختصاصی از کدهای منبع از مخزن مشترک، دیگر توسعهدهندگان به تغییر کد منبع مرکزی ادامه خواهند داد. گهگاه، در زمان مناسب در فرایند توسعه، میتوانید از دستور update درون دایرکتوری کاری خود استفاده کنید تا کارهای خود را با هرگونه بازبینی اعمالشده بر مخزن منبع از زمان آخرین checkout یا update تطبیق دهید.
update options - گزینههای 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 output - خروجی update
دستورهای 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 را ببینید).
AUTHORS - نویسندگان
- Dick Grune
- نویسندهٔ اصلی نسخهٔ اسکریپت شل cvs که در انتشار volume6 در دسامبر ۱۹۸۶ در comp.sources.unix ارسال شد. بخش عمدهای از الگوریتمهای حل تداخل در cvs به او نسبت داده میشود.
- Brian Berliner
- برنامهنویس و طراح خود برنامهٔ cvs در آوریل ۱۹۸۹، بر پایهٔ کار اولیهٔ انجامشده توسط دیک.
- Jeff Polk
- کمک به برایان در طراحی پودمان cvs و پشتیبانی از شاخهٔ تأمینکننده (vendor branch) و نویسندهٔ اسکریپت شل checkin(1) (نیای cvs import).
- Larry Jones, Derek R. Price, and Mark D. Baushke
- به نگهداری cvs برای سالهای متمادی کمک کردهاند.
- و بسیاری افراد دیگر که نام بردن از آنها در اینجا ممکن نیست.
SEE ALSO - همچنین ببینید
جامعترین راهنما برای 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).