cvs(5) File Formats Manual cvs(5)

cvs - قالب پرونده‌ها و دایرکتوری‌های کنترلی سامانه نسخه‌بندی همزمان CVS

این مستندات ممکن است دیگر به‌روز نباشند. لطفاً همان‌طور که در cvs(1) مشخص شده است به Cederqvist (راهنمای CVS) مراجعه کنید.

$CVSROOT/CVSROOT/commitinfo,v
$CVSROOT/CVSROOT/cvsignore,v
$CVSROOT/CVSROOT/cvswrappers,v
$CVSROOT/CVSROOT/editinfo,v
$CVSROOT/CVSROOT/history
$CVSROOT/CVSROOT/loginfo,v
$CVSROOT/CVSROOT/modules,v
$CVSROOT/CVSROOT/rcsinfo,v
$CVSROOT/CVSROOT/taginfo,v

cvs سامانه‌ای برای فراهم کردن کنترل مبدأ برای مجموعه‌های سلسله‌مراتبی از دایرکتوری‌های مبدأ است. دستورات و رویه‌های استفاده از cvs در cvs(1) شرح داده شده‌اند.

cvs با رونوشت‌برداری از نسخه‌های خاص پرونده‌ها به (و بازگرداندن تغییرات از) working directories (دایرکتوری‌های کاری) خصوصی توسعه‌دهندگان، source repositories (مخازن مبدأ) را مدیریت می‌کند؛ یعنی دایرکتوری‌هایی که شامل رونوشت‌های اصلی پرونده‌های تحت کنترل نسخه هستند. از نظر ساختار پرونده‌ای، هر مخزن مبدأ منفرد یک زیردایرکتوری بی‌واسطه از $CVSROOT است.

پرونده‌هایی که در اینجا شرح داده شده‌اند پرونده‌های پشتیبان هستند؛ وجود آن‌ها برای کارکرد cvs الزامی نیست، اما به شما امکان می‌دهند تا عملکرد cvs را انعطاف‌پذیرتر کنید.

می‌توانید از پرونده «modules» برای تعریف نام‌های نمادین برای مجموعه‌هایی از کدهای مبدأ نگهداری‌شده با cvs استفاده کنید. اگر پرونده «modules» وجود نداشته باشد، توسعه‌دهندگان باید مسیرهای کامل (مطلق، یا نسبی نسبت به $CVSROOT) را برای پرونده‌هایی که مایل به مدیریت آن‌ها با دستورات cvs هستند مشخص کنند.

می‌توانید از پرونده «commitinfo» برای تعریف برنامه‌هایی استفاده کنید که هر زمان `cvs commit' در آستانه اجرا است، اجرا شوند. این برنامه‌ها برای بررسی‌های «پیش از ثبت» (pre-commit) جهت اعتبارسنجی اینکه پرونده‌های تغییریافته، افزوده‌شده و حذف‌شده واقعاً آماده ثبت هستند، استفاده می‌شوند. برخی از کاربردهای این بررسی ممکن است بستن دسترسی بخشی از (یا تمام) مخزن مبدأ برای فرد یا گروهی خاص باشد. یا شاید اعتبارسنجی اینکه پرونده‌های تغییریافته با استانداردهای شیوه‌نامه کدنویسی آن محیط مطابقت دارند.

می‌توانید از پرونده «cvswrappers» برای ثبت دستورات لفاف (wrapper) cvs استفاده کنید تا هنگام ورود پرونده‌ها به مخزن یا خروج از آن به کار گرفته شوند. لفاف‌ها امکان پردازش پرونده یا دایرکتوری را در مسیر ورود و خروج از CVS فراهم می‌کنند. کاربردهای در نظر گرفته‌شده فراوان است؛ یک کاربرد احتمالی می‌تواند قالب‌بندی مجدد یک پرونده C پیش از ثبت آن باشد، تا تمامی کدهای موجود در مخزن ظاهری یکدست داشته باشند.

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

می‌توانید از پرونده «taginfo» برای تعریف برنامه‌هایی استفاده کنید که پس از هر عملیات tag یا rtag اجرا شوند. این برنامه‌ها ممکن است برای ضمیمه کردن یک پیام به پرونده‌ای حاوی نام برچسب جدید و برنامه‌نویسی که آن را ایجاد کرده، یا ارسال ایمیل به گروهی از توسعه‌دهندگان، یا شاید ارسال پیام به یک گروه خبری خاص استفاده شوند.

می‌توانید از پرونده «rcsinfo» برای تعریف قالب‌های پیام‌های گزارش استفاده کنید.

می‌توانید از پرونده «editinfo» برای تعریف برنامه‌ای استفاده کنید که جهت ویرایش/اعتبارسنجی مدخل‌های گزارش `cvs commit' اجرا شود. این قابلیت بیشترین کاربرد را در ترکیب با مشخصات قالب‌های «rcsinfo» دارد، زیرا می‌تواند بررسی کند که آیا فیلدهای مناسب قالب توسط کاربری که تغییر را ثبت می‌کند تکمیل شده‌اند یا خیر.

می‌توانید از پرونده «cvsignore» برای مشخص کردن فهرست پیش‌فرض پرونده‌هایی که باید هنگام update نادیده گرفته شوند استفاده کنید.

می‌توانید از پرونده «history» برای ثبت دستورات cvs که بر مخزن تأثیر می‌گذارند استفاده کنید. ایجاد این پرونده قابلیت ثبت تاریخچه را فعال می‌کند.

پرونده «modules» تعاریف شما از نام‌ها را برای مجموعه‌های کد مبدأ ثبت می‌کند. در صورتی که با استفاده از cvs پرونده‌ای با قالب صحیح را در `$CVSROOT/CVSROOT/modules,v' ثبت (check in) کنید، cvs از این تعاریف استفاده خواهد کرد.

پرونده «modules» علاوه بر تعاریف ماژول‌ها می‌تواند حاوی خطوط خالی و توضیحات (خطوطی که با `#' آغاز می‌شوند) باشد. خطوط طولانی را می‌توان با قرار دادن یک بک‌اسلش («\») به عنوان آخرین نویسه خط، در خط بعدی ادامه داد.

یک module definition (تعریف ماژول) یک خط منفرد از پرونده «modules» در یکی از دو قالب ممکن است. در هر دو حالت، mname نشان‌دهنده نام نمادین ماژول است و ادامه خط تعریف آن می‌باشد.

mname -a aliases...
این ساده‌ترین روش برای تعریف ماژول mname است. گزینه `-a' این تعریف را به عنوان یک نام مستعار ساده مشخص می‌کند: cvs با هر بار استفاده از mname (به عنوان آرگومان دستور) طوری رفتار می‌کند که گویی فهرست نام‌های aliases به جای آن مشخص شده است. aliases می‌تواند شامل نام سایر ماژول‌ها یا مسیرها باشد. هنگامی که در aliases از مسیرها استفاده می‌کنید، `cvs checkout' تمام دایرکتوری‌های میانی را در دایرکتوری کاری ایجاد می‌کند، دقیقاً مانند اینکه آن مسیر به صراحت در آرگومان‌های cvs مشخص شده باشد.

mname [ options ] dir [ files... ] [ &module... ]

در ساده‌ترین حالت، این شکل از تعریف ماژول به `mname dir' خلاصه می‌شود. این کار تمامی پرونده‌های موجود در دایرکتوری dir را به عنوان ماژول mname تعریف می‌کند. dir یک مسیر نسبی (از $CVSROOT) به دایرکتوری مبدأ در یکی از مخازن مبدأ است. در این حالت، هنگام checkout، یک دایرکتوری منفرد به نام mname به عنوان دایرکتوری کاری ایجاد می‌شود؛ به طور پیش‌فرض هیچ سطح دایرکتوری میانی استفاده نمی‌شود، حتی اگر dir مسیری شامل چندین سطح دایرکتوری بوده باشد.

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

m4test  unsupported/gnu/m4 foreach.m4 forloop.m4

با این تعریف، اجرای `cvs checkout m4test' یک دایرکتوری کاری منفرد به نام «m4test» حاوی دو پرونده فهرست‌شده ایجاد می‌کند که هر دو از یک دایرکتوری مشترک در چند سطح عمق در مخزن مبدأ cvs می‌آیند.

یک تعریف ماژول می‌تواند با گنجاندن `&module' در تعریف خود، به سایر ماژول‌ها ارجاع دهد. دستور checkout برای هر یک از این moduleها، یک زیردایرکتوری در دایرکتوری کاری شما ایجاد می‌کند.
ویژگی جدید در cvs 1.3؛ اگر تعاریف ماژول‌ها را با نسخه‌های قدیمی‌تر cvs به اشتراک می‌گذارید، از این ویژگی اجتناب کنید.

در نهایت، می‌توانید از یک یا چند مورد از options (گزینه‌های) زیر در تعاریف ماژول‌ها استفاده کنید:

`-d name' برای نام‌گذاری دایرکتوری کاری به چیزی غیر از نام ماژول.
ویژگی جدید در cvs 1.3؛ اگر تعاریف ماژول‌ها را با نسخه‌های قدیمی‌تر cvs به اشتراک می‌گذارید، از این ویژگی اجتناب کنید.

`-i prog' به شما امکان می‌دهد تا برنامه‌ای (prog) را برای اجرا در زمان ثبت (commit) شدن پرونده‌های یک ماژول مشخص کنید. prog با یک آرگومان منفرد اجرا می‌شود که مسیر کامل دایرکتوری مربوطه در مخزن مبدأ است. پرونده‌های «commitinfo»، «loginfo» و «editinfo» روش‌های دیگری برای فراخوانی یک برنامه هنگام commit فراهم می‌کنند.

`-o prog' به شما امکان می‌دهد برنامه‌ای (prog) را برای اجرا در زمان دریافت (checkout) پرونده‌های یک ماژول مشخص کنید. prog با یک آرگومان منفرد، یعنی نام ماژول، اجرا می‌شود.

`-e prog' به شما امکان می‌دهد برنامه‌ای (prog) را برای اجرا در زمان برون‌ریزی (export) پرونده‌های یک ماژول مشخص کنید. prog با یک آرگومان منفرد، یعنی نام ماژول، اجرا می‌شود.

`-t prog' به شما امکان می‌دهد برنامه‌ای (prog) را برای اجرا در زمان برچسب‌گذاری (tag) پرونده‌های یک ماژول مشخص کنید. prog با دو آرگومان اجرا می‌شود: نام ماژول و برچسب نمادین مشخص‌شده برای rtag.

`-u prog' به شما امکان می‌دهد برنامه‌ای (prog) را برای اجرا در زمانی که `cvs update' از دایرکتوری سطح بالای ماژول دریافت‌شده اجرا می‌شود مشخص کنید. prog با یک آرگومان منفرد اجرا می‌شود که مسیر کامل به مخزن مبدأ برای این ماژول است.

این پرونده‌ها همگی برنامه‌هایی را برای فراخوانی در نقاط مختلف فرایند `cvs commit' مشخص می‌کنند. آن‌ها ساختار مشترکی دارند. هر خط یک جفت فیلد است: یک عبارت باقاعده (regular expression)، که با فاصله خالی از یک نام پرونده یا الگوی خط فرمان جدا شده است. هر زمان که یکی از عبارات باقاعده با نام دایرکتوری در مخزن مطابقت داشته باشد، ادامه خط استفاده می‌شود. اگر خط با نویسه # شروع شود، کل خط به عنوان توضیح در نظر گرفته شده و نادیده گرفته می‌شود. فاصله خالی بین فیلدها نیز نادیده گرفته می‌شود.

برای «loginfo»، ادامه خط یک الگوی خط فرمان برای اجرا است. الگوها علاوه بر نام برنامه، می‌توانند شامل هر فهرست دلخواهی از آرگومان‌ها باشند. اگر در جایی از فهرست آرگومان‌ها `%s' را بنویسید، cvs در آن نقطه، فهرست پرونده‌های تحت تأثیر commit را فراهم می‌کند. نخستین مدخل در این فهرست، مسیر نسبی درون مخزن مبدأ است که تغییر در آن در حال اعمال است. آرگومان‌های باقی‌مانده پرونده‌هایی را فهرست می‌کنند که با این فراخوانی commit در حال تغییر، افزوده‌شدن یا حذف شدن هستند.

برای «taginfo»، ادامه خط یک الگوی خط فرمان برای اجرا است. آرگومان‌هایی که به دستور ارسال می‌شوند، به ترتیب عبارتند از: tagname (نام برچسب)، operation (عملیات، یعنی add برای `tag'، mov برای `tag -F'، و del برای `tag -d')، repository (مخزن)، و موارد باقی‌مانده جفت‌هایی از filename revision (نام پرونده و نسخه) هستند. خروج غیرصفر برنامه پالایه باعث لغو برچسب‌گذاری خواهد شد.

برای «commitinfo»، ادامه خط یک الگوی خط فرمان برای اجرا است. این الگو علاوه بر نام برنامه، می‌تواند شامل هر فهرست دلخواهی از آرگومان‌ها باشد. مسیر کامل به مخزن مبدأ فعلی به انتهای الگو اضافه می‌شود، و پس از آن نام پرونده‌های دخیل در ثبت (پرونده‌های افزوده‌شده، حذف‌شده و تغییریافته) می‌آید.

برای «rcsinfo»، ادامه خط مسیر کامل پرونده‌ای است که باید در قالب پیام گزارش بارگیری شود.

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

می‌توانید به جای عبارت باقاعده از یکی از دو رشته ویژه استفاده کنید: `ALL' یک الگوی خط فرمان را مشخص می‌کند که همیشه باید اجرا شود، و `DEFAULT' الگوی خط فرمانی را مشخص می‌کند که در صورت عدم تطابق هیچ عبارت باقاعده‌ای استفاده می‌شود.

پرونده «commitinfo» شامل دستوراتی برای اجرا پیش از هرگونه فعالیت commit دیگر است، تا به شما امکان بررسی هر شرطی را بدهد که پیش از پیشروی commit باید برآورده شود. ادامه commit تنها در صورتی اجرا می‌شود که تمامی دستورات انتخاب‌شده از این پرونده با وضعیت خروج 0 پایان یابند.

پرونده «rcsinfo» به شما امکان می‌دهد تا قالب‌های گزارش را برای نشست گزارش‌گیری commit مشخص کنید؛ می‌توانید از این برای فراهم کردن فرمی برای ویرایش هنگام پر کردن گزارش commit استفاده کنید. فیلد پس از عبارت باقاعده در این پرونده، شامل نام پرونده‌ها (پرونده‌های حاوی فرم‌های گزارش‌گیری) به جای الگوهای دستور است.

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

پرونده «loginfo» شامل دستوراتی برای اجرا در پایان عملیات ثبت است. متنی که به عنوان پیام گزارش ثبت مشخص شده است از طریق لوله (pipe) به دستور فرستاده می‌شود؛ کاربردهای معمول شامل ارسال ایمیل، ثبت یک مقاله در یک گروه خبری، یا ضمیمه کردن به یک پرونده مرکزی است.

فهرست پیش‌فرض پرونده‌ها (یا الگوهای نام پرونده sh(1)) برای نادیده گرفتن در حین `cvs update'. در زمان راه‌اندازی، cvs فهرست پیش‌فرض الگوهای نام پرونده کامپایل‌شده داخلی را بارگیری می‌کند (به cvs(1) مراجعه کنید). سپس فهرست مربوط به هر مخزن موجود در $CVSROOT/CVSROOT/cvsignore بارگیری می‌شود، در صورتی که وجود داشته باشد. سپس فهرست مخصوص کاربر از `$HOME/.cvsignore' بارگیری می‌شود. در نهایت، همان‌طور که cvs در دایرکتوری‌های شما پیمایش می‌کند، هر زمان که پرونده «.cvsignore» مخصوص دایرکتوری را بیابد آن را بارگیری می‌کند. این پرونده‌های مخصوص دایرکتوری تنها برای دقیقاً همان دایرکتوری حاوی آن‌ها معتبر هستند، نه برای هیچ‌یک از زیردایرکتوری‌ها.
این پرونده را در $CVSROOT/CVSROOT ایجاد کنید تا ثبت وقایع تاریخچه فعال شود (به توضیحات `cvs history' مراجعه کنید).

cvs(1)

حق نشر © 1992 Cygnus Support, Brian Berliner, and Jeff Polk

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

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

مجوز رونوشت‌برداری و توزیع ترجمه‌های این راهنما به زبان‌های دیگر تحت شرایط فوق برای نسخه‌های تغییریافته اعطا می‌شود، با این تفاوت که این اعلان مجوز می‌تواند در ترجمه‌های تأییدشده توسط بنیاد نرم‌افزار آزاد (Free Software Foundation) به جای زبان انگلیسی اصلی گنجانده شود.

12 February 1992