| DARCS(1) | General Commands Manual | DARCS(1) |
نام (NAME)
darcs - سیستم کنترل نسخه پیشرفته و توزیعشده مبتنی بر نظریه پچها
خلاصه دستور (SYNOPSIS)
darcs command <arguments|[options]>...
که در آن دستورات و آرگومانهای مربوطه عبارتند از:
darcs help [<darcs_command>
[darcs_subcommand]]
darcs initialize [<directory>]
darcs add <file|directory> ...
darcs whatsnew [file|directory]...
darcs record [file|directory]...
darcs clone <repository> [<directory>]
darcs pull [repository]...
darcs push [repository]
darcs move <source> ... <destination>
darcs remove <file|directory> ...
darcs replace <old> <new> <file>
...
darcs log [file|directory]...
darcs annotate [file|directory]
darcs diff [file|directory]...
darcs show contents [file]...
darcs show dependencies
darcs show files [file|directory]...
darcs show index
darcs show pristine
darcs show repo
darcs show authors
darcs show tags
darcs show patch-index
darcs test [[initialization] command]
darcs revert [file|directory]...
darcs unrevert
darcs amend [file|directory]...
darcs rebase pull [repository]...
darcs rebase apply <patchfile>
darcs rebase suspend
darcs rebase unsuspend
darcs rebase edit
darcs rebase obliterate
darcs rebase log
darcs rebase upgrade
darcs rollback [file|directory]...
darcs unrecord
darcs obliterate
darcs clean [file|directory]...
darcs tag [tagname]
darcs setpref <pref> <value>
darcs send [repository]
darcs apply <patchfile>
darcs optimize clean
darcs optimize http
darcs optimize reorder
darcs optimize enable-patch-index
darcs optimize disable-patch-index
darcs optimize compress
darcs optimize uncompress
darcs optimize relink
darcs optimize upgrade
darcs optimize cache
darcs dist
darcs mark-conflicts [file|directory]...
darcs repair
darcs convert darcs-2 <source>
[<destination>]
darcs convert export
darcs convert import [<directory>]
darcs fetch [repository]...
توضیحات (DESCRIPTION)
برخلاف سیستمهای سنتی کنترل نسخه، دارکس (Darcs) به جای نسخهها بر پایه ردگیری تغییرات عمل میکند: این سیستم میتواند و در صورت نیاز به طور خودکار، ترتیب تغییرات مستقل را تغییر دهد. این بدان معناست که در دارکس، وضعیت یک مخزن باید به جای یک توالی از نسخهها به عنوان یک مجموعهای از پچها در نظر گرفته شود.
یکی دیگر از ویژگیهای متمایز دارکس این است که بیشتر دستورات آن به صورت پیشفرض تعاملی هستند. برای نمونه، دستور darcs record (معادل آنچه معمولاً commit نامیده میشود) تکتک تغییرات ثبتنشده را به شما نشان میدهد و میپرسد که آیا این تغییر باید در پچی که قرار است ثبت شود گنجانده شود یا خیر. به همین ترتیب، دستورات darcs push و darcs pull هر پچ را جداگانه به شما ارائه میدهند و این امکان را فراهم میسازند که پچهای مورد نظر را برای ارسال یا دریافت انتخاب کنید.
گزینهها (OPTIONS)
دستورات مختلف دارکس، گزینههای متفاوتی را میپذیرند. مهمترین گزینههای هر دستور در بخش COMMANDS فهرست شدهاند. برای مشاهده فهرست کامل تمامی گزینههای پذیرفتهشده توسط یک دستور خاص، میتوانید فرمان `darcs command --help` را اجرا کنید.
انتخاب پچها (Selecting Patches):
گزینه --patches پچهایی را برمیگرداند که نام آنها با یک عبارت باقاعده گسترده (extended) مطابقت داشته باشد. برای جزئیات بیشتر به regex(7) مراجعه کنید. گزینه --matches پچهایی را برمیگرداند که با یک عبارت منطقی (بولی) مطابقت دارند: یک یا چند عبارت اولیه که با پرانتزگذاری (گروهبندی) و عملگرهای نقیض (not)، عطف (and) و فصل (or) ترکیب شدهاند. همچنین میتوان از نمادگذاری زبان C برای عملگرهای منطقی (!، && و ||) استفاده کرد.
--patches=regex مترادفی است برای --matches='name regex' --hash=HASH مترادفی است برای --matches='hash HASH' --from-patch و --to-patch مترادفهایی هستند برای --from-match='name... و --to-match='name... --from-hash و --to-hash مترادفهایی هستند برای --from-match='hash...' و --to-match='hash...' ترکیبهای معقولی از گزینههای --from-* و --to-* امکانپذیر است: `darcs log --from-patch='html.*docu' --to-match='date 20040212'` `darcs log --from-hash=368089c6969 --to-patch='^fix.*renamed or moved.$'`
عبارتهای منطقی (بولی) اولیه زیر پشتیبانی میشوند:
exact STRING - بررسی برابری رشته لفظی STRING با نام پچ. name REGEX - تطبیق REGEX با نام پچ. author REGEX - تطبیق REGEX با نویسنده پچ. hunk REGEX - تطبیق REGEX با محتوای یک تکه پچ (hunk patch). comment REGEX - تطبیق REGEX با کل پیام گزارش (log). hash HASH - تطبیق HASH با (پیشوندی از) هش یک پچ. date DATE - تطبیق DATE با تاریخ پچ. touch REGEX - تطبیق مسیر فایلها برای یک پچ.
در اینجا چند مثال آورده شده است:
darcs log --match 'exact "Resolve issue17: use dynamic memory allocation."' darcs log --match 'name issue17' darcs log --match 'name "^[Rr]esolve issue17>"' darcs log --match 'author "David Roundy"' darcs log --match 'author droundy' darcs log --match 'author droundy@darcs.net' darcs log --match 'hunk "foo = 2"' darcs log --match 'hunk "^instance .* Foo where$"' darcs log --match 'comment "prevent deadlocks"' darcs log --match 'hash c719567e92c3b0ab9eddd5290b705712b8b918ef' darcs log --match 'hash c7195' darcs log --match 'date "2006-04-02 22:41"' darcs log --match 'date "tea time yesterday"' darcs log --match 'touch src/foo.c' darcs log --match 'touch src/' darcs log --match 'touch "src/*.(c|h)"'
دستورها (COMMANDS)
darcs help [<darcs_command> [darcs_subcommand]]
بیشترین استفاده/شروع به کار (Most used/starting out):
darcs initialize [<directory>]
فایلها و زیردایرکتوریهای موجود دستنخورده باقی میمانند. میتوانید آنها را با دستور darcs record --look-for-adds ثبت کنید.
دستور Initialize معمولاً به صورت init خلاصه میشود.
در حال حاضر Darcs از سه نوع معناشناسی وصله (patch semantics) پشتیبانی میکند. اینها به نامهای darcs-1، darcs-2 و darcs-3 شناخته میشوند. آنها با یکدیگر ناسازگارند، به این معنا که نمیتوانید وصلهها را میان مخازنی با معناشناسیهای متفاوت تبادل کنید.
بهطور پیشفرض، وصلههای مخزن جدید دارای معناشناسی darcs-2 هستند. با این وجود، ایجاد مخزن با معناشناسی darcs-1 با استفاده از فلگ --darcs-1 امکانپذیر است؛ هرچند این کار توصیه نمیشود، مگر به منظور تبادل وصله با پروژهای که از وصلههایی با معناشناسی darcs-1 استفاده میکند.
معناشناسی darcs-3 آزمایشی (EXPERIMENTAL) بوده و در نسخه 2.16 جدید است. این ویژگی تنها به عنوان پیشنمایش فناوری گنجانده شده و ما استفاده از آن را برای هیچ کار جدیای توصیه نمیکنیم. قالب داده روی دیسک هنوز نهایی نشده است و ما نمیتوانیم و قول نخواهیم داد که نسخههای بعدی با مخازن darcs-3 ایجادشده با نسخههای پیش از 3.0 کار کنند.
دستورهای initialize و clone فایلهای ترجیحات را در دایرکتوری _darcs/prefs/ از مخزن تازه ایجادشده میسازند. با گزینه --with-prefs-templates فایلهای ترجیحات boring و binaries با الگوهای پیشفرض پر خواهند شد. اگر میخواهید این فایلها خالی بمانند از گزینه --no-prefs-templates استفاده کنید. اگر ترجیح میدهید تنظیمات مربوطه را به صورت سراسری نگه دارید، اضافه کردن عبارت 'ALL no-prefs-templates' به فایل ~/darcs/defaults شما سودمند خواهد بود.
darcs add <file|directory> ...
هنگامی که یک پروژه موجود برای نخستین بار به یک مخزن Darcs وارد میشود، اجرای دستور darcs add -r * یا darcs record -l برای افزودن تمام فایلهای منبع اولیه به darcs امری معمول است.
افزودن پیوندهای نمادین (symlinks) پشتیبانی نمیشود.
برنامه Darcs تمام فایلها و پوشههایی را که «کسلکننده» (boring) به نظر میرسند نادیده میگیرد. گزینه --boring این رفتار را بازنویسی (override) میکند.
برنامه Darcs در صورتی که فایل دیگری در همان پوشه دارای نام یکسانی صرفنظر از بزرگی و کوچکی حروف باشد، آن فایل را اضافه نخواهد کرد. گزینه --case-ok این رفتار را بازنویسی میکند. سیستمهای عامل ویندوز و OS X معمولاً از سیستمفایلهایی استفاده میکنند که اجازه نمیدهند فایلهای درون یک پوشه نامهای یکسانی داشته باشند که فقط در بزرگی و کوچکی حروف متفاوتند (برای نمونه، ReadMe و README). اگر از --case-ok استفاده شود، ممکن است مخزن در آن سیستمها غیرقابل استفاده گردد!
darcs whatsnew [file|directory]...
با گزینه --summary، تغییرات به یک خط برای هر فایل خلاصه میشوند، همراه با نشانههای اختصاری که ماهیت و گستره تغییر را مشخص میکنند. گزینه --look-for-adds باعث میشود موارد کاندیدا برای darcs add نیز در خروجی خلاصه گنجانده شوند. نشانههای اختصاری خلاصه به شرح زیر هستند:
- عبارتهای `A f` و `A d/` به ترتیب نمایانگر یک فایل یا دایرکتوری اضافهشده هستند.
- عبارتهای `R f` و `R d/` به ترتیب نمایانگر یک فایل یا دایرکتوری حذفشده هستند.
- عبارت `M f -N +M rP` نمایانگر یک فایل ویرایششده است، با `N` خط حذفشده، `M` خط اضافهشده، و `P` جایگزینی واژگانی.
- عبارت `f -> g` نمایانگر یک فایل یا دایرکتوری جابهجاشده است.
- عبارتهای `a f` و `a d/` هنگام استفاده از گزینه --look-for-adds به ترتیب نمایانگر یک فایل یا دایرکتوری جدید اما اضافهنشده هستند.
- علامت تعجب (!) مانند `R! foo.c` نشان میدهد که این تغییر با تغییری در یک وصله قبلی تداخل دارد. عبارت `duplicated` به این معناست که تغییر مورد نظر دقیقاً مشابه با تغییری در یک وصله قبلی است.
گزینه --machine-readable حاوی مفهوم --summary است، در حالی که خروجی را برای تجزیه ماشینی مناسبتر میکند. فایلهای تغییریافته تنها به صورت `M f` نمایش داده میشوند و جابهجاییها در دو خط نشان داده میشوند: `F f` و `T g` (برگرفته از 'From f To g').
بهطور پیشفرض، darcs whatsnew از قالب درونی Darcs برای تغییرات استفاده میکند. برای مشاهده مقداری از زمینه (خطوط تغییرنیافته) پیرامون هر تغییر، از گزینه --unified استفاده کنید (این گزینه در حالت تعاملی اثری ندارد). برای مشاهده تغییرات در قالب متعارف diff، از دستور darcs diff استفاده کنید؛ اما توجه داشته باشید که darcs diff هنگامی که تغییر نام فایلها در میان باشد، نمیتواند تغییرات را به درستی نمایش دهد.
در صورتی که هیچ تغییر ثبتنشدهای وجود نداشته باشد، این دستور با وضعیت ناموفق (یک کد خروج غیر صفر) پایان مییابد.
darcs record [file|directory]...
هر وصله دارای یک نام، یک توضیحات اختیاری، یک نویسنده و یک تاریخ است.
برنامه Darcs پس از انتخاب تعاملی، یک ویرایشگر متن را اجرا میکند (به darcs help environment مراجعه کنید) تا بتوانید نام وصله (خط اول) و توضیحات وصله (خطهای بعدی) را وارد نمایید.
میتوانید نام وصله را از پیش با استفاده از گزینه -m ارائه دهید که در این حالت ویرایشگر متنی اجرا نخواهد شد، مگر اینکه از --edit-long-comment استفاده کنید.
توضیحات وصله یک بلوک متنی اختیاری به صورت آزاد است. این بخش برای ارائه اطلاعات اضافی به کار میرود که در نام وصله جا نمیشوند؛ برای نمونه، میتواند شامل چرایی و منطق ضروری بودن تغییر باشد.
یک تفاوت فنی میان نام وصله و توضیحات وصله این است که تطبیق با فلگ -p تنها بر روی نام وصلهها انجام میگیرد.
در نهایت، گزینه --logfile به شما اجازه میدهد فایلی را مشخص کنید که از پیش شامل نام و توضیحات وصله است. این قابلیت در صورتی که ثبت قبلی ناموفق بوده و فایل _darcs/patch_description.txt را بر جای گذاشته باشد، سودمند است.
هر وصله به نویسنده آن منتسب میشود، که معمولاً با نشانی ایمیل مشخص میگردد (برای نمونه، `Fred Bloggs <fred@example.net>`). برنامه Darcs برای یافتن این رشته نویسنده چندین مکان را بررسی میکند: گزینه --author، فایلهای _darcs/prefs/author (درون مخزن) و ~/.darcs/author (در دایرکتوری خانگی شما)، و متغیرهای محیطی $DARCS_EMAIL و $EMAIL. اگر هیچکدام از اینها وجود نداشته باشند، Darcs از شما یک رشته نویسنده درخواست کرده و آن را در ~/.darcs/author مینویسد. توجه داشته باشید که اگر بیش از یک نشانی ایمیل دارید، میتوانید همه آنها را در ~/.darcs/author قرار دهید (هر نویسنده در یک خط). برنامه Darcs باز هم از شما نام نویسنده را خواهد پرسید، اما به شما امکان میدهد آن را از فهرست انتخاب کنید یا مقدار دیگری را تایپ نمایید.
اگر میخواهید وابستگیهای صریح را به صورت دستی برای وصله خود تعریف کنید، میتوانید از فلگ --ask-deps استفاده کنید. برخی از وابستگیها ممکن است بهطور خودکار از محتوای وصله استنتاج شوند و امکان حذف آنها وجود ندارد. یک وصله با وابستگیهای مشخص میتواند خالی باشد.
تاریخ وصله بهطور خودکار تولید میشود. این تاریخ را تنها میتوان با استفاده از گزینه --pipe تغییر داد (جعل کرد).
اگر دستور record را با گزینه --pipe اجرا کنید، تاریخ وصله، نویسنده، و توضیحات بلند (long comment) از شما پرسیده خواهد شد. توضیحات بلند تا انتهای فایل یا پایان ورودی استاندارد (stdin) ادامه خواهد یافت. این رابط کاربری برای اسکریپتنویسی darcs و به ویژه برای نوشتن اسکریپتهای تبدیل مخزن در نظر گرفته شده است. اعلانها بیشتر به عنوان یک راهنمای مفید هستند (چرا که اسکریپتها به آنها نیازی ندارند) تا به درک قالب ورودی کمک کنند. در اینجا نمونهای از اعلانهای --pipe آورده شده است:
What is the date? Mon Nov 15 13:38:01 EST 2004 Who is the author? David Roundy What is the log? One or more comment lines
اگر یک دستور آزمون با darcs setpref تعریف شده باشد، تلاش برای ثبت یک وصله باعث اجرای دستور آزمون در یک نسخه تمیز از درخت کاری خواهد شد (یعنی نسخهای که تنها شامل تغییرات ثبتشده است). در صورت شکست آزمون، لغو عملیات ثبت به شما پیشنهاد میشود.
گزینه --set-scripts-executable باعث میشود پیش از اجرای آزمون، اسکریپتها در نسخه تمیز درخت کاری قابل اجرا شوند. برای توضیحی درباره شیوه تشخیص اسکریپت به darcs clone مراجعه کنید.
اگر دستور آزمون شما بسیار کند است (مانند `make all`) و در حال ثبت چندین وصله متوالی هستید، ممکن است بخواهید از --no-test برای صرفنظر کردن از همه آزمونها به جز آزمون نهایی استفاده کنید.
برای مشاهده مقداری از زمینه (خطوط تغییرنیافته) در اطراف هر تغییر، از گزینه --unified استفاده کنید.
darcs clone <repository> [<directory>]
بهطور پیشفرض، Darcs تمام وصلهها را از مخزن اصلی کپی میکند. اگر انتظار دارید مخزن اصلی همچنان در دسترس باقی بماند، میتوانید از --lazy استفاده کنید تا از کپی کردن وصلهها تا زمان نیاز به آنها جلوگیری شود («کپی بر حسب تقاضا»). این ویژگی به ویژه هنگام کپی کردن یک مخزن دوردست با تاریخچهای طولانی که به آن نیازی ندارید بسیار کاربردی است.
هنگام کلون کردن محلی، Darcs در صورت امکان بهطور خودکار از پیوند سخت (hard link) استفاده میکند. این کار افزون بر صرفهجویی در زمان و فضا، امکان جابهجایی یا حذف مخزن اصلی را بدون تأثیر گذاشتن بر روی نسخه کپیشده فراهم میکند. پیوند سخت مستلزم آن است که رونوشت بر روی همان سیستمفایل مخزن اصلی قرار داشته باشد و سیستمفایل از پیوند سخت پشتیبانی کند. این شامل NTFS، HFS+ و تمام سیستمفایلهای همهمنظوره یونیکس (مانند ext، UFS و ZFS) میشود. سیستمفایل FAT از پیوند سخت پشتیبانی نمیکند.
هنگام کلون کردن از یک مکان دوردست، Darcs بستههای (packs) ایجادشده توسط darcs optimize http در مخزن دوردست را جستجو کرده و تلاش میکند از آنها استفاده کند. بستهها فایلهای تکی و بزرگی هستند که میتوانند با سرعتی بیشتر از فایلهای کوچک متعدد دانلود شوند.
دستور Darcs clone تغییرات ثبتنشده در درخت کاری مخزن مبدأ را کپی نخواهد کرد.
میتوانید یک مخزن را در نشانی ssh کپی کنید که در این حالت مخزن جدید همیشه کامل خواهد بود.
غالباً مطلوب است که رونوشتی از یک مخزن ایجاد شود که برخی از وصلهها را در بر نگیرد. برای نمونه، اگر انتشارها برچسبگذاری (tag) شده باشند، darcs clone --tag . رونوشتی از مخزن را در وضعیت آخرین انتشار ایجاد خواهد کرد. وضعیت یک مخزن برچسبگذارینشده را نیز میتوان از طریق یک فایل زمینه (context file) تولیدشده توسط darcs log --context بهطور کاملاً شفاف شناسایی کرد. با دادن نام چنین فایلی، گزینه --context مخزنی ایجاد میکند که تنها شامل وصلههای موجود در آن زمینه است. هنگامی که یک کاربر اشکالی را در نسخهای منتشرنشده از پروژه شما گزارش میدهد، شیوه توصیهشده برای تشخیص دقیق نسخهای که او در حال اجرای آن بوده این است که از او بخواهید یک فایل زمینه را در گزارش اشکال بگنجاند. همچنین میتوانید با استفاده از گزینههای --to-patch یا --to-match یک رونوشت از وضعیت بدون برچسب ایجاد کنید، که وصلههای بعد از نخستین وصله منطبق را مستثنی میکنند. از آنجا که این گزینهها با مجموعه وصلهها به عنوان یک دنباله مرتبشده رفتار میکنند، ممکن است پس از مرتبسازی مجدد با darcs optimize reorder نتایج متفاوتی به دست آورید.
گزینه --set-scripts-executable باعث میشود اسکریپتها در درخت کاری قابل اجرا شوند. اسکریپت به هر فایلی گفته میشود که با یک شهبنگ («#!») شروع شود.
گزینه --inherit-default برای پشتیبانی از یک گردش کار طراحی شده است که در آن شاخههای متفاوتی از همان مخزن بالادستی دارید و میخواهید تمام شاخههایتان همان مخزن بالادستی را به عنوان defaultrepo داشته باشند. این گزینه بیش از همه زمانی سودمند است که با افزودن 'ALL --inherit-default' به فایل ~/darcs/defaults شما به صورت سراسری فعال شود.
برای دستور clone این گزینه مفهوم زیر را دارد: اگر مخزن مبدأ از پیش دارای defaultrepo تنظیمشده باشد (خواه به این دلیل که آن را کلون کردهاید یا به صراحت از گزینه --set-default استفاده کردهاید)، و هر دو مبدأ و مقصد مسیرهای معتبر محلی روی یک میزبان باشند، مخزن مقصد همان defaultrepo مخزن مبدأ را دریافت خواهد کرد. در غیر این صورت، مخزن مقصد خودِ مخزن مبدأ را به عنوان defaultrepo دریافت میکند، یعنی به رفتار پیشفرض (--no-inherit-default) بازمیگردد.
دستورهای initialize و clone فایلهای ترجیحات را در دایرکتوری _darcs/prefs/ از مخزن تازه ایجادشده میسازند. با گزینه --with-prefs-templates فایلهای ترجیحات boring و binaries با الگوهای پیشفرض پر خواهند شد. اگر میخواهید این فایلها خالی بمانند از گزینه --no-prefs-templates استفاده کنید. اگر ترجیح میدهید تنظیمات مربوطه را به صورت سراسری نگه دارید، اضافه کردن عبارت 'ALL no-prefs-templates' به فایل ~/darcs/defaults شما کار را راحتتر خواهد کرد.
darcs pull [repository]...
رفتار پیشفرض (--union) دریافت هر وصلهای است که در هر یک از مخازن مشخصشده وجود دارد. اگر فلگ --intersection را مشخص کنید، darcs تنها آن وصلههایی را دریافت میکند که در تمام مخازن مبدأ وجود داشته باشند. اگر فلگ --complement را مشخص کنید، darcs تنها عناصری از نخستین مخزن را دریافت خواهد کرد که در هیچیک از مخازن باقیمانده وجود نداشته باشند.
اگر --reorder مشخص شود، مجموعه وصلههایی که تنها در مخزن جاری وجود دارند به بالای تاریخچه جاری آورده میشوند. این قابلیت حتی اگر هیچ وصله جدیدی برای دریافت وجود نداشته باشد نیز کار خواهد کرد.
گزینه --inherit-default برای پشتیبانی از گردش کاری طراحی شده است که در آن شاخههای متفاوتی از همان مخزن بالادستی دارید و میخواهید تمام شاخههایتان همان مخزن بالادستی را به عنوان defaultrepo داشته باشند. این قابلیت بیش از همه زمانی سودمند است که با افزودن 'ALL --inherit-default' به فایل ~/darcs/defaults شما به صورت سراسری فعال شود.
برای دستورهای push، pull و send این گزینه به معنای زیر است: مفهوم گزینه --set-default را به گونهای تغییر میدهد که defaultrepo (محلی) را به جای خودِ مخزن دوردست، برابر با defaultrepo مخزن دوردست قرار دهد. این امر تنها زمانی رخ میدهد که مخزن دوردست یک defaultrepo تنظیمشده داشته باشد و هر دو مخزن محلی و دوردست مسیرهای محلی معتبری روی یک میزبان باشند؛ در غیر این صورت به رفتار پیشفرض (--no-inherit-default) بازمیگردد.
برای شرح تفصیلی بسیاری از گزینهها به darcs help apply مراجعه کنید.
darcs push [repository]
گزینه --reorder-patches به همان روشی عمل میکند که برای pull و apply عمل میکرد: به جای قرار دادن وصلههای جدید (که از مخزن محلی شما میآیند) در بالای (یعنی بعد از) وصلههای موجود (دوردست)، وصلههای مختص دوردست را در بالای وصلههایی که ارسال میکنید قرار میدهد. این کار میتواند برای نمونه در حالتی سودمند باشد که یک برچسب (tag) را به صورت محلی ثبت کردهاید و میخواهید این برچسب پس از ارسال، در مخزن دوردست دستنخورده و بدون تداخل بماند.
اگر فلگ --apply-as را مشخص کنید، darcs از sudo برای اعمال وصلهها در قالب یک کاربر دیگر استفاده خواهد کرد. این ویژگی در حالتی سودمند است که بخواهید سیستمی راهاندازی کنید که در آن چند کاربر بتوانند یک مخزن را تغییر دهند، اما نمیخواهید به آنها دسترسی کامل برای نوشتن بدهید. این شیوه در برابر مهاجمان مخرب و حرفهای امن نیست، اما دستکم میتواند مخزن شما را از خطاهای کاربران ناشی، بیدقت یا سهلانگار مصون نگه دارد.
دستور darcs push پیش از ارسال دادههای وصله به یک مکان دوردست از طریق ssh، آنها را فشرده میکند. این کار تا زمانی پاسخگو است که نسخه darcs دوردست قدیمیتر از 2.5 نباشد. اگر خطاهایی دریافت کردید که نشاندهنده یک بسته وصله خراب است، باید دوباره با گزینه --no-compress تلاش کنید.
گزینه --inherit-default برای پشتیبانی از گردش کاری طراحی شده است که در آن شاخههای متفاوتی از همان مخزن بالادستی دارید و میخواهید تمام شاخههایتان همان مخزن بالادستی را به عنوان defaultrepo داشته باشند. این قابلیت بیش از همه زمانی سودمند است که با افزودن 'ALL --inherit-default' به فایل ~/darcs/defaults شما به صورت سراسری فعال شود.
برای دستورهای push، pull و send این گزینه مفهوم زیر را دارد: مفهوم گزینه --set-default را تغییر میدهد تا defaultrepo (محلی) را به جای خودِ مخزن دوردست، برابر با defaultrepo مخزن دوردست قرار دهد. این امر تنها زمانی رخ میدهد که مخزن دوردست یک defaultrepo تنظیمشده داشته باشد و هر دو مخزن محلی و دوردست مسیرهای محلی معتبری روی یک میزبان باشند؛ در غیر این صورت به رفتار پیشفرض (--no-inherit-default) بازمیگردد.
آمادهسازی پچها پیش از ثبت (Preparing patches before recording):
darcs move <source> ... <destination>
اگر فایل دیگری در همان پوشه نامی یکسان داشته باشد و تفاوت تنها در بزرگی و کوچکی حروف باشد، Darcs فایل را تغییر نام نخواهد داد. گزینه --case-ok این رفتار را لغو میکند. سیستمعاملهای ویندوز و OS X معمولاً از سیستمفایلهایی استفاده میکنند که اجازه نمیدهند فایلهای یک پوشه نامی یکسان و فقط با تفاوت در بزرگی و کوچکی حروف داشته باشند (برای نمونه، `ReadMe` و `README`).` اگر از گزینه --case-ok استفاده شود، ممکن است مخزن در آن سیستمها غیرقابل استفاده گردد!
darcs remove <file|directory> ...
توجه داشته باشید که اعمال یک پچ حذف روی یک مخزن (مثلاً با واکشی پچ از طریق pull) همواره بر درخت کاری آن مخزن تأثیر خواهد گذاشت.
darcs replace <old> <new> <file> ...
فایلها بر اساس یک قاعده ساده نشانهگذاری (Tokenize) میشوند: کلمات رشتههایی از نویسههای توکن معتبر هستند و هر آنچه میان آنها قرار دارد (علائم نگارشی و فاصلههای خالی) نادیده گرفته میشود. به طور پیشفرض، نویسههای توکن معتبر شامل حروف، اعداد و زیرخط هستند (یعنی `[A-Za-z0-9_]`).` با این حال اگر توکن قدیمی یا جدید حاوی خط تیره یا نقطه باشد، هر دو نویسه خط تیره و نقطه معتبر در نظر گرفته میشوند (یعنی `[A-Za-z0-9_.-]`).`
مجموعه نویسههای معتبر را میتوان با استفاده از گزینه --token-chars شخصیسازی کرد. آرگومان باید در میان کروشه محصور شده باشد. اگر خط تیره میان دو نویسه در این مجموعه قرار گیرد، به عنوان بازه مجموعه در نظر گرفته میشود. برای نمونه، در بیشتر محلیسازیها عبارت `[A-Z]` بیانگر تمامی حروف بزرگ است. اگر اولین نویسه علامت هشتک (Caret یا ^) باشد، توکنهای معتبر به عنوان متمم نویسههای باقیمانده در نظر گرفته میشوند. برای مثال، `[^:0` میتواند برای تطبیق فیلدها در passwd(5) به کار رود، جایی که رکوردها با خط جدید و فیلدها با دو نقطه از یکدیگر جدا میشوند.
اگر تصمیم به استفاده از --token-chars دارید، اکیداً توصیه میشود که این کار را به صورت یکدست و هماهنگ انجام دهید. پیامدهای استفاده از چندین پچ جایگزینی با آرگومانهای متفاوت --token-chars روی یک فایل یکسان، نه به خوبی آزمایش شده و نه به درستی شناخته شده است.
به طور پیشفرض اگر توکن جدید از قبل استفاده شده باشد، Darcs از انجام جایگزینی خودداری میکند؛ زیرا موارد جایگزینشده از توکنهای موجود قبلی قابل تشخیص نخواهند بود. این رفتار را میتوان با ارائه گزینه --force نادیده گرفت، اما تلاش برای بازگردانی پچ حاصل با دستور `darcs rollback` بر این توکنهای از پیش موجود تأثیر خواهد گذاشت.
محدودیتها:
بخش توکنساز با فایلها مانند رشتههای بایتی رفتار میکند؛ بنابراین امکانپذیر نیست که --token-chars شامل نویسههای چندبایتی، مانند بخشهای غیر ASCII در UTF-8 باشد. به همین ترتیب، تلاش برای جایگزینی یک نویسه با «بیت بالا» (High-bit) از یک کدگذاری تکبایتی، منجر به جایگزینی همان بایت در فایلهایی با کدگذاریهای متفاوت خواهد شد. برای نمونه، نویسه á از ISO 8859-1 با نویسه آلفا (α) از ISO 8859-7 نیز تطبیق خواهد یافت.
به دلیل محدودیتهای موجود در قالب فایل پچ، آرگومانهای --token-chars نمیتوانند حاوی فاصله خالی واقعی (Literal whitespace) باشند. برای نمونه، نمیتوان از `[^ 0t]` برای تعریف تمام نویسهها به جز فاصله، تب و خط جدید به عنوان نویسههای معتبر درون یک کلمه استفاده کرد، زیرا حاوی یک فاصله واقعی است.
برخلاف عبارات کروشهای regex(7) در استاندارد POSIX، کلاسهای نویسه (مانند `[[:alnum:]]`) توسط --token-chars پشتیبانی نمیشوند و بدون هشدار به عنوان مجموعهای ساده از نویسهها در نظر گرفته خواهند شد.
پرسوجو از مخزن (Querying the repository):
darcs log [file|directory]...
هنگامی که مسیرهای فایلها یا دایرکتوریها به عنوان آرگومان داده شوند، فقط پچهایی که بر آن مسیرها تأثیر میگذارند فهرست میشوند. این شامل پچهایی که پیش از جابهجا شدن یا تغییر نام فایلها روی آنها اعمال شدهاند نیز میشود.
هنگام استفاده از --from-tag یا --from-patch، تنها پچهای ثبتشده از زمان آن برچسب یا پچ به بعد فهرست میشوند. به طور مشابه، گزینههای --to-tag و --to-patch فهرست را به پچهای قدیمیتر محدود میکنند.
گزینههای --last و --max-count هر دو تعداد پچهای فهرستشده را محدود میکنند. گزینه اول پیش از سایر فیلترها اعمال میشود، در حالی که گزینه دوم پس از سایر فیلترها اعمال میگردد. برای نمونه، `darcs log foo.c --max-count 3` سه پچ آخر را که بر foo.c تأثیر گذاشتهاند چاپ میکند، در حالی که `darcs log --last 3 foo.c` تنها پچهایی از میان سه پچ آخر کل مخزن را چاپ میکند که بر foo.c تأثیر دارند.
چهار قالب خروجی وجود دارد. حالت پیشفرض --human-readable است. قالب اندکی متفاوت --machine-readable امکان مشاهده وابستگیهای پچ را در حالت غیرتعاملی فراهم میسازد. همچنین میتوانید گزینه --context را انتخاب کنید که یک قالب داخلی است و میتواند مجدداً توسط Darcs خوانده شود (مانند `darcs clone --context`).`
در نهایت، گزینه --xml-output وجود دارد که خروجی معتبر XML تولید میکند... مگر آنکه متادیتای پچ (نویسنده، نام یا توضیحات) حاوی نویسهای غیر ASCII باشد و در یک محلیسازی غیر UTF-8 ثبت شده باشد.
darcs annotate [file|directory]
گزینه --machine-readable میتواند برای تولید خروجی مناسب پردازش پسین ماشینی استفاده شود.
darcs diff [file|directory]...
با گزینه --patch، مقایسه میان درختهای کاری با آن پچ و بدون آن پچ انجام خواهد شد. پچهای پس از پچ انتخابشده در هیچیک از درختهای کاری مقایسهشده حضور ندارند. گزینههای --from-patch و --to-patch اجازه میدهند مجموعه پچها در درختهای کاری «قدیمی» و «جدید» به طور جداگانه مشخص شوند.
گزینههای مرتبط با برچسب (Tag) و تطبیق (Match) نیز پشتیبانی میشوند، مانند `darcs diff --from-tag 1.0 --to-tag 1.1`. تمام این گزینهها ترتیبی را برای مجموعه پچها فرض میکنند، بنابراین نتایج ممکن است تحت تأثیر عملیاتی مانند `darcs optimize reorder` قرار گیرند.
دستور diff(1) همیشه با آرگومانهای -rN و به طور پیشفرض همچنین با -u فراخوانی میشود تا تفاوتها را در قالب یکپارچه (Unified format) نمایش دهد. این قالب را میتوان با ارسال --no-unified غیرفعال کرد. یک آرگومان اضافی را میتوان با استفاده از --diff-opts ارسال کرد، مانند --diff-opts=-ud یا --diff-opts=-wU9.
گزینه --diff-command میتواند برای تعیین یک ابزار جایگزین استفاده شود. آرگومانها را میتوان به صورت جداشده با فاصله خالی اضافه کرد. این مقدار توسط پوسته (Shell) تفسیر نمیشود، بنابراین ساختارهای پوسته قابل استفاده نیستند. آرگومانهای %1 و %2 باید حتماً گنجانده شوند؛ این آرگومانها با دو درخت کاری که با یکدیگر مقایسه میشوند جایگزین خواهند شد. برای نمونه:
darcs diff -p . --diff-command "meld %1 %2"
در صورت استفاده از این گزینه، --diff-opts نادیده گرفته میشود.
darcs show subcommand
darcs show contents [file]...
darcs show dependencies
به طور پیشفرض تمام پچهای موجود در مخزن شما لحاظ میشوند. میتوانید این بازه را با استفاده از گزینههای تطبیق پچ محدود کنید؛ به `darcs help patterns` و گزینههای در دسترس برای این دستور مراجعه فرمایید. برای نمونه، جهت مصورسازی وابستگیهای میان تمام پچها از زمان آخرین برچسب، دستور زیر را اجرا کنید:
darcs show dependencies --from-tag=. | dot -Tpdf -o FILE.pdf
محاسبه نتیجه این دستور بسته به تعداد پچهای موجود در بازه انتخابی ممکن است زمان بسیار(!) زیادی ببرد. برای N پچ، در بدترین حالت به محاسباتی از مرتبه N^3 جابهجایی پچ (Commutation) نیاز دارد.
darcs show files [file|directory]...
یک فایل در صورتی «در انتظار» (Pending) است که به سیستم اضافه شده اما هنوز ثبت (Record) نشده باشد. به طور پیشفرض، فایلها (و دایرکتوریهای) در انتظار فهرست میشوند؛ گزینه --no-pending از این کار جلوگیری میکند.
به طور پیشفرض `darcs show files` هم فایلها و هم دایرکتوریها را فهرست میکند، اما فلگهای --no-files و --no-directories این رفتار را تغییر میدهند.
به طور پیشفرض هر ورودی در یک خط جداگانه قرار میگیرد (یعنی با خط جدید جدا میشوند). اگر خود فایلها حاوی خط جدید یا سایر نویسههای کنترلی باشند، این امر ممکن است مشکلاتی ایجاد کند. برای حل این مشکل، گزینه --null از نویسه تهی (Null) به جای خط جدید استفاده میکند. اسکریپتی که خروجی این دستور را تفسیر میکند باید با این شیوه سازگار باشد؛ دستور `xargs -0` نمونهای از چنین دستوری است.
برای نمونه، جهت فهرست کردن فایلهای تحت کنترل نسخه بر اساس اندازه:
darcs show files -0 | xargs -0 ls -ldS
darcs show index
darcs show pristine
darcs show repo
شناسه «هش ضعیف» (Weak Hash) مجموعه پچهای یک مخزن را مستقل از ترتیب آنها مشخص میکند. از این شناسه میتوان برای مقایسه آسان دو مخزن از یک پروژه مشابه استفاده کرد. این هش از نظر رمزنگاری ایمن نیست.
به طور پیشفرض، خروجی شامل آمارهایی است که نیازمند پیمایش پچهای ثبتشده در مخزن هستند، به ویژه «هش ضعیف» و تعداد پچها. اگر به این دادهها نیازی ندارید، از گزینه --no-enum-patches استفاده کنید تا زمان اجرای این دستور از مرتبه O(n) به O(1) کاهش یابد.
به طور پیشفرض، خروجی در قالبی خوانا برای انسان است. گزینه --xml-output میتواند برای تولید خروجی جهت پردازش پسین ماشینی استفاده شود.
darcs show authors
ممکن است نام یا نشانی ایمیل یک نویسنده در طول زمان تغییر کند. برای اینکه به Darcs اطلاع دهید چه زمانی چندین رشته نویسنده مختلف به یک فرد یکسان اشاره دارند، فایلی به نام `.authorspellings` در ریشه درخت کاری ایجاد کنید. هر خط از این فایل با نام و نشانی متعارف (اصلی) نویسنده آغاز میشود و میتواند با فهرستی از عبارتهای منظم گسترشیافته که با کاما از هم جدا شدهاند ادامه یابد. خطوط خالی و خطوطی که با دو خط تیره آغاز میشوند نادیده گرفته خواهند شد. قالب فایل `.authorspelling` را میتوان با این الگو توصیف کرد:
name <address> [, regexp ]*
در ارتباط با نویسههای ویژه نکاتی وجود دارد که باید در نظر گرفت: فاصلههای خالی حذف میشوند؛ بنابراین اگر در عبارت منظم به فاصله نیاز دارید از [ ] استفاده کنید. از آنجا که کاما به عنوان جداکننده عمل میکند، اگر میخواهید آن را در عبارت منظم به کار ببرید باید آن را اسکیپ کنید. توجه داشته باشید که `.authorspelling` از عبارات منظم گسترشیافته استفاده میکند، بنابراین +، ؟ و موارد مشابه نویسههای متا (Metacharacters) هستند و برای تفسیر لفظی (Literal) باید آنها را اسکیپ نمایید.
هر پچی که رشته نویسنده آن با نشانی متعارف یا هر یک از عبارتهای منظم مرتبط مطابقت داشته باشد، به عنوان اثر آن نویسنده در نظر گرفته میشود. تمام تطبیقها نسبت به بزرگی و کوچکی حروف غیرحساس هستند و به صورت جزئی (تطبیق زیررشته) عمل میکنند. برای تطبیق کل رشته در عبارت منظم از ^ و $ استفاده کنید.
در حال حاضر این مرحله یکسانسازی تنها در دستور `darcs show authors` انجام میشود. سایر دستورات، مانند `darcs log` رشتههای نویسنده را دقیقاً همانگونه که هستند به کار میبرند.
نمونهای از یک فایل `.authorspelling` به صورت زیر است:
-- This is a comment. Fred Nurk <fred@example.com> John Snagge <snagge@bbc.co.uk>, John, snagge@, js@(si|mit).edu Chuck Jones Jr. <chuck@pobox.com>, cj+user@example.com
darcs show tags
نویسههای تب (نویسه کد ۹ در جدول ASCII) در نام برچسبها برای سازگاری بهتر با ابزارهای پوسته به فاصله تبدیل میشوند. در صورت وقوع این تبدیل، یک پیام هشدار چاپ خواهد شد.
darcs show patch-index
darcs test [[initialization] command]
فلگ --linear جستجوی خطی را از مبدأ (head) آغاز کرده و به سمت گذشته حرکت میکند. این راهبرد زمانی بهترین بازدهی را دارد که آزمون با سرعت بسیار بالایی اجرا شود یا پچ مورد نظر نزدیک به مبدأ (head) باشد.
فلگ --bisect جستجوی دودویی (باینری) انجام میدهد. این راهبرد زمانی بهترین بازدهی را دارد که اجرای آزمون بسیار کند باشد یا پچ مورد نظر احتمالاً در گذشته دور مخزن قرار داشته باشد.
فلگ --backoff جستجو را از مبدأ (head) آغاز کرده و با جهشهای بیشتر و بیشتر به سمت گذشته پیش میرود تا جایی که آزمون موفق شود. سپس یک جستجوی دودویی را روی زیرمجموعهای از آن پچهای نادیدهگرفتهشده اجرا میکند. این راهبرد به خوبی کار میکند مگر در شرایطی که پچ مورد نظر در گذشته دور مخزن باشد.
با فرض اینکه بروز شکست رفتاری یکنواخت (Monotonous) داشته باشد، دو گزینه --linear و --bisect نتیجه یکسانی تولید خواهند کرد. (یکنواخت به این معنی است که با دور شدن از head، نتیجه آزمون تنها یک بار از «شکست» به «موفق» تغییر وضعیت میدهد). اگر شکست یکنواخت نباشد، یکی از پچهایی که آزمون را با شکست مواجه کرده به صورت تصادفی پیدا خواهد شد.
اگر دستور آزمون کد خروج ۱۲۵ را بازگرداند، وضعیت مخزن به عنوان «غیرقابل آزمایش» (Untestable) تلقی میشود؛ برای نمونه ممکن است در صورت بروز خطای بیلد یا موارد دیگری که مشکل اصلی مورد نظر شما برای ردیابی نیست، این وضعیت رخ دهد. این حالت میتواند منجر به گزارش چندین پچ به عنوان منشأ شکست شود.
برای نمونه، اگر پچ ۱ موجب شکست در بیلد شود، پچ ۲ آزمونی را در بخش نامرتبطی از کد با شکست مواجه کند و پچ ۳ شکست بیلد را برطرف نماید، پچهای ۱، ۲ و ۳ به عنوان عامل شکست شناسایی خواهند شد.
گزینه --shrink-failures، که به طور پیشفرض فعال است، یک مرحله پسپردازش برای مرتبسازی مجدد پچها اضافه میکند تا شکست را با دقت بیشتری محدود سازد. در مثال بالا، احتمال دارد بتوان پچ ۲ را به قبل از پچ ۱ یا بعد از پچ ۳ منتقل کرد و بدین ترتیب آن را به عنوان تنها دلیل شکست شناسایی نمود.
این کاهش دامنه خطا را میتوان با گزینه --no-shrink-failures غیرفعال کرد.
بازگردانی و تصحیح (Undoing and correcting):
darcs revert [file|directory]...
اگر تصادفاً تغییری را که میخواستید نگه دارید بازگردانی کردید (برای نمونه، تایپ کردن `darcs rev -a` به جای `darcs rec -a`)، میتوانید فوراً دستور `darcs unrevert` را برای بازیابی آن اجرا کنید. این کار تنها در صورتی تضمین میشود که مخزن پس از اجرای `darcs revert` تغییر نکرده باشد.
darcs unrevert
این دستور در صورتی که مخزن پس از انجام بازگردانی تغییر کرده باشد، ممکن است با شکست مواجه شود. دارکس (Darcs) پیش از اجرای یک دستور تعاملی که قطعاً مانع از لغو بازگردانی (unreversion) میشود، از شما تاییدیه خواهد خواست.
darcs amend [file|directory]...
بهطور پیشفرض، `amend` پیشنهاد ثبت تغییرات اضافی را به شما میدهد. اگر در عوض میخواهید تغییراتی را حذف کنید، از فلگ `--unrecord` استفاده نمایید.
هنگام ثبت یک وصله پیشنویس، ایده خوبی است که نام آن را با `DRAFT:` آغاز کنید. پس از پایان کار، آن را با `darcs amend --edit-long-comment` حذف کنید. همچنین، برای تغییر نام وصله بدون باز کردن ویرایشگر، از فلگ `--name`/`-m` استفاده کنید:
darcs amend --match 'name "DRAFT: foo"' --name 'foo2'
همانند `darcs record`، اگر `amend` را با آرگومانهای فایل فرابخوانید، تنها درباره تغییرات مربوط به آن فایلها از شما سوال خواهد شد. بنابراین برای اصلاح یک وصله در foo.c با استفاده از بهبودهای bar.c، این دستور را اجرا میکنید:
darcs amend --match 'touch foo.c' bar.c
توجه داشته باشید که این دستور تاریخچه مخزن شما را ویرایش میکند. این دستور اساساً برای استفاده روی وصلههایی طراحی شده است که خودتان نوشتهاید و هنوز منتشر نکردهاید. استفاده از آن برای وصلههایی که قبلاً منتشر شدهاند یا حتی وصلههایی که خودتان آنها را ننوشتهاید، ممکن است باعث سردرگمی شده و جریان کاری خودتان و دیگران را مختل کند. البته این موضوع تا حد زیادی به نحوه سازماندهی پروژه شما بستگی دارد، بنابراین ممکن است استثناهای معتبری برای این قاعده وجود داشته باشد.
استفاده از گزینه `--not-in-remote` روش خوبی برای محافظت در برابر ویرایش تصادفی وصلههای منتشرشده است. بدون آرگومان، این گزینه هر وصلهای را که در `defaultrepo` نیز موجود باشد، از حالت انتخاب خارج میکند. اگر در یک کپی کلونشده از مخزنی با میزبانی عمومی کار میکنید، در این صورت `defaultrepo` شما همان مخزن عمومی خواهد بود. همچنین میتوانید به این گزینه یک آرگومان بدهید که مسیر یا نشانی وب مخزن دیگری باشد؛ میتوانید از این گزینه چندین بار با مخازن مختلف استفاده کنید، که اثر آن در نظر گرفتن همه آنها به عنوان «بالادست» (upstream) است؛ بدین معنی که از انتخاب هر وصلهای که در هر یک از این مخازن وجود دارد جلوگیری میکند.
شما همچنین میتوانید تنها با استفاده از گزینه مناسب `--match` همراه با کلیدواژه `author`، از ویرایش وصلههای توسعهدهنده دیگر جلوگیری کنید. برای مثال، میتوانید خطی مانند `<cmd> match Your Name` را به فایل `~/.darcs/defaults` خود اضافه نمایید.
darcs rebase subcommand
ایده اصلی این است که میتوانید وصلهها را از انتهای یک مخزن به حالت تعلیق درآورید. این وصلهها دیگر بخشی از تاریخچه نبوده و هیچ اثری روی درخت کاری ندارند. وصلههای معلق برای دستوراتی که از بیرون به مخزن دسترسی دارند (مانند push، pull، clone، send و غیره) نامرئی هستند.
توالی وصلههای معلق را میتوان به روشهایی دستکاری کرد که برای وصلههای عادی مجاز نیستند. برای نمونه، `darcs rebase obliterate` به شما امکان میدهد وصلهای را در این توالی حذف کنید، حتی اگر وصلههای معلق دیگر به آن وابسته باشند. در نتیجه، این وصلههای دیگر دچار تعارض خواهند شد.
شما همچنین میتوانید به روش معمول روی وصلههای عادی عملیات انجام دهید. اگر وصلههای عادی را اضافه یا حذف کنید، وصلههای معلق بهطور خودکار تطبیق داده میشوند تا همچنان بر وضعیت اولیه اعمال شوند، و احتمالاً در این فرآیند دچار تعارض گردند.
توجه داشته باشید به محض اینکه یک وصله معلق شود، هویت خود را بهطور برگشتناپذیری از دست میدهد. این بدان معناست که تعلیق یک وصله مشمول هشدارهای معمول درباره ویرایش تاریخچه پروژه شماست.
نقطه مقابل تعلیق یک وصله، خارج کردن آن از حالت تعلیق (unsuspend) است. این کار آن را دوباره به یک وصله عادی تبدیل میکند. اگر وصله در نتیجه عملیات قبلی روی وصلههای عادی یا معلق دچار تعارض شده باشد، خروج از تعلیق نشانهگذاری تعارض مناسبی را ایجاد خواهد کرد. با این حال توجه داشته باشید که خودِ وصله خارجشده از تعلیق، «دارای تعارض نخواهد بود». این بدان معناست که هیچ راهی برای تولید مجدد نشانهگذاری تعارض وجود ندارد. هنگامی که آن را با ویرایش فایلها یا با استفاده از `darcs revert` حذف کردید، هرگونه اطلاعات درباره تعارض از دست میرود.
تا زمانی که وصلههای معلق دارید، دارکس پس از هر دستور پیام کوتاهی را نمایش میدهد تا به شما یادآوری کند که عملیات ویرایش وصله شما هنوز در جریان است.
darcs rebase pull [repository]...
darcs rebase apply <patchfile>
darcs rebase suspend
توجه داشته باشید که این دستور تاریخچه مخزن شما را ویرایش میکند. این دستور اساساً برای استفاده روی وصلههایی طراحی شده است که خودتان نوشتهاید و هنوز منتشر نکردهاید. استفاده از آن برای وصلههایی که قبلاً منتشر شدهاند یا حتی وصلههایی که خودتان آنها را ننوشتهاید، ممکن است باعث سردرگمی شده و جریان کاری خودتان و دیگران را مختل کند. البته این موضوع تا حد زیادی به نحوه سازماندهی پروژه شما بستگی دارد، بنابراین ممکن است استثناهای معتبری برای این قاعده وجود داشته باشد.
استفاده از گزینه `--not-in-remote` روش خوبی برای محافظت در برابر ویرایش تصادفی وصلههای منتشرشده است. بدون آرگومان، این گزینه هر وصلهای را که در `defaultrepo` نیز موجود باشد، از حالت انتخاب خارج میکند. اگر در یک کپی کلونشده از مخزنی با میزبانی عمومی کار میکنید، در این صورت `defaultrepo` شما همان مخزن عمومی خواهد بود. همچنین میتوانید به این گزینه یک آرگومان بدهید که مسیر یا نشانی وب مخزن دیگری باشد؛ میتوانید از این گزینه چندین بار با مخازن مختلف استفاده کنید، که اثر آن در نظر گرفتن همه آنها به عنوان «بالادست» (upstream) است؛ بدین معنی که از انتخاب هر وصلهای که در هر یک از این مخازن وجود دارد جلوگیری میکند.
شما همچنین میتوانید تنها با استفاده از گزینه مناسب `--match` همراه با کلیدواژه `author`، از ویرایش وصلههای توسعهدهنده دیگر جلوگیری کنید. برای مثال، میتوانید خطی مانند `<cmd> match Your Name` را به فایل `~/.darcs/defaults` خود اضافه نمایید.
darcs rebase unsuspend
darcs rebase edit
darcs rebase obliterate
darcs rebase log
darcs rebase upgrade
انجام این کار بدان معناست که تا زمان اتمام rebase، نمیتوانید از نسخههای دارکس کمتر از ۲.۱۵ با این مخزن استفاده کنید.
darcs rollback [file|directory]...
پیش از اجرای `rollback`، ممکن است بخواهید موقتاً تغییرات درخت کاری خود را (در صورت وجود) لغو کرده و آنها را برای استفاده بعدی ذخیره کنید. برای انجام این کار، میتوانید ابتدا `revert` را اجرا کنید، سپس `rollback` را اجرا نمایید، یک وصله ثبت (record) کنید و در نهایت `unrevert` را برای بازیابی تغییرات ذخیرهشده در درخت کاری خود اجرا نمایید.
darcs unrecord
توجه داشته باشید که این دستور تاریخچه مخزن شما را ویرایش میکند. این دستور اساساً برای استفاده روی وصلههایی طراحی شده است که خودتان نوشتهاید و هنوز منتشر نکردهاید. استفاده از آن برای وصلههایی که قبلاً منتشر شدهاند یا حتی وصلههایی که خودتان آنها را ننوشتهاید، ممکن است باعث سردرگمی شده و جریان کاری خودتان و دیگران را مختل کند. البته این موضوع تا حد زیادی به نحوه سازماندهی پروژه شما بستگی دارد، بنابراین ممکن است استثناهای معتبری برای این قاعده وجود داشته باشد.
استفاده از گزینه `--not-in-remote` روش خوبی برای محافظت در برابر ویرایش تصادفی وصلههای منتشرشده است. بدون آرگومان، این گزینه هر وصلهای را که در `defaultrepo` نیز موجود باشد، از حالت انتخاب خارج میکند. اگر در یک کپی کلونشده از مخزنی با میزبانی عمومی کار میکنید، در این صورت `defaultrepo` شما همان مخزن عمومی خواهد بود. همچنین میتوانید به این گزینه یک آرگومان بدهید که مسیر یا نشانی وب مخزن دیگری باشد؛ میتوانید از این گزینه چندین بار با مخازن مختلف استفاده کنید، که اثر آن در نظر گرفتن همه آنها به عنوان «بالادست» (upstream) است؛ بدین معنی که از انتخاب هر وصلهای که در هر یک از این مخازن وجود دارد جلوگیری میکند.
شما همچنین میتوانید تنها با استفاده از گزینه مناسب `--match` همراه با کلیدواژه `author`، از ویرایش وصلههای توسعهدهنده دیگر جلوگیری کنید. برای مثال، میتوانید خطی مانند `<cmd> match Your Name` را به فایل `~/.darcs/defaults` خود اضافه نمایید.
darcs obliterate
یک روش برای ذخیره وصلههای حذفشده، استفاده از فلگ -O است. با این کار یک بسته وصله (patch bundle) بهصورت محلی ایجاد میشود که بعداً میتوانید آن را با `darcs apply` بر روی مخزن خود اعمال کنید. برای توضیحات دقیقتر به `darcs send` مراجعه نمایید.
توجه داشته باشید که این دستور تاریخچه مخزن شما را ویرایش میکند. این دستور اساساً برای استفاده روی وصلههایی طراحی شده است که خودتان نوشتهاید و هنوز منتشر نکردهاید. استفاده از آن برای وصلههایی که قبلاً منتشر شدهاند یا حتی وصلههایی که خودتان آنها را ننوشتهاید، ممکن است باعث سردرگمی شده و جریان کاری خودتان و دیگران را مختل کند. البته این موضوع تا حد زیادی به نحوه سازماندهی پروژه شما بستگی دارد، بنابراین ممکن است استثناهای معتبری برای این قاعده وجود داشته باشد.
استفاده از گزینه `--not-in-remote` روش خوبی برای محافظت در برابر ویرایش تصادفی وصلههای منتشرشده است. بدون آرگومان، این گزینه هر وصلهای را که در `defaultrepo` نیز موجود باشد، از حالت انتخاب خارج میکند. اگر در یک کپی کلونشده از مخزنی با میزبانی عمومی کار میکنید، در این صورت `defaultrepo` شما همان مخزن عمومی خواهد بود. همچنین میتوانید به این گزینه یک آرگومان بدهید که مسیر یا نشانی وب مخزن دیگری باشد؛ میتوانید از این گزینه چندین بار با مخازن مختلف استفاده کنید، که اثر آن در نظر گرفتن همه آنها به عنوان «بالادست» (upstream) است؛ بدین معنی که از انتخاب هر وصلهای که در هر یک از این مخازن وجود دارد جلوگیری میکند.
شما همچنین میتوانید تنها با استفاده از گزینه مناسب `--match` همراه با کلیدواژه `author`، از ویرایش وصلههای توسعهدهنده دیگر جلوگیری کنید. برای مثال، میتوانید خطی مانند `<cmd> match Your Name` را به فایل `~/.darcs/defaults` خود اضافه نمایید.
darcs clean [file|directory]...
این دستور یک نام مستعار برای `darcs revert -l/--look-for-adds` است؛ به این معنی که روی فایلهایی که هنوز اضافه نشدهاند نیز کار میکند. علاوه بر این میتوانید `--boring` را ارسال کنید تا از شر *تمام* فایلها یا دایرکتوریهای ثبتنشده خلاص شوید.
برای جزئیات بیشتر به توضیحات `darcs revert` مراجعه کنید.
تغییر مستقیم مخزن (Direct modification of the repository):
darcs tag [tagname]
هر وضعیت *مهمی* باید برچسبگذاری شود؛ بهویژه برچسبگذاری هر انتشار پایدار با یک شماره یا نامکد، یک روش استاندارد و پسندیده است. توصیهها درباره شمارهگذاری نسخههای انتشار را میتوانید در http://producingoss.com/en/development-cycle.html بیابید.
برای بازتولید وضعیت یک مخزن `R` در برچسب `t`، از دستور `darcs clone --tag t R` استفاده کنید. با این حال توجه داشته باشید که برچسبها همانند `--patch` به عنوان عبارات باقاعده مطابقت داده میشوند. برای اطمینان از دستیابی به برچسب صحیح، بهتر است از `darcs clone --tag '^t$'` استفاده کنید. دستور `darcs show tags` تمام برچسبهای موجود در مخزن جاری را فهرست میکند.
برچسبگذاری مزایای عملکردی قابل توجهی نیز به همراه دارد: هنگامی که دارکس به برچسبی میرسد که به تمام وصلههای پیشین وابسته است، اغلب میتواند پردازش را متوقف کند. به برچسبی در چنین موقعیتی، برچسب «تمیز» (clean) گفته میشود. برای نمونه، عملیاتی مانند push و pull فقط نیاز دارند وصلههایی را بررسی کنند که پس از آخرین برچسب تمیزِ مشترک قرار دارند.
همانند وصلههای عادی، یک برچسب دارای نام، نویسنده، برچسب زمانی و توضیحات طولانی اختیاری است، اما درخت کاری را تغییر نمیدهد. یک برچسب میتواند هر نامی داشته باشد، اما معمولاً بهتر است یک طرح نامگذاری مشخص را انتخاب کرده و به آن پایبند باشید.
بهطور پیشفرض، یک برچسب کل وضعیت مخزن را در زمان ایجاد برچسب نامگذاری میکند. اگر از گزینه `--ask-deps` استفاده شود، میتوان وصلههایی را که باید به عنوان بخشی از برچسب گنجانده شوند، بهطور صریح انتخاب کرد.
دستور `darcs tag` گزینه `--pipe` را میپذیرد که رفتاری مشابه آنچه در `darcs record` توضیح داده شد دارد.
darcs setpref <pref> <value>
تنظیمات معتبر عبارتند از:
* test -- یک دستور شل که آزمونهای رگرسیون را اجرا میکند * predist -- یک دستور شل برای اجرا قبل از `darcs dist` * boringfile -- مسیر یک فایل اقلام نادیدهگرفتهشده (boring file) تحت کنترل نسخه * binariesfile -- مسیر یک فایل باینری تحت کنترل نسخه
برای مثال، پروژهای که از GNU autotools استفاده میکند، با یک هدف `make test` برای اجرای آزمونهای رگرسیون، میتواند آزمون رگرسیون یکپارچه دارکس را با دستور زیر فعال کند:
darcs setpref test 'autoconf && ./configure && make
&& make test'
توجه داشته باشید که در حال حاضر ادغام (merging) برای تنظیمات پیادهسازی نشده است: اگر دو وصله تلاش کنند ترجیح یکسانی را تنظیم کنند، آخرین وصله اعمالشده بر روی مخزن همیشه اولویت خواهد داشت. این مورد به عنوان یک باگ با اولویت پایین در نظر گرفته میشود، زیرا ترجیحات بهندرت تنظیم میشوند.
تبادل پچها از طریق ایمیل (Exchanging patches by e-mail):
darcs send [repository]
فلگهای --output، --output-auto-name و --to تعیین میکنند که دارکس پس از ایجاد بسته پچ با آن چه کاری انجام دهد. اگر یک آرگومان --output ارائه دهید، بسته پچ در آن فایل ذخیره میشود. اگر --output-auto-name را مشخص کنید، بسته پچ در فایلی با نامی که بهطور خودکار تولید میشود ذخیره میگردد. در صورت ارائه یک یا چند آرگومان --to، بسته پچها به آن مقاصد ارسال میشود. این مقاصد میتوانند آدرسهای ایمیل یا نشانیهای وبی باشند که پچ باید از طریق پروتکل HTTP به آنها ارسال شود.
اگر فلگ --mail را ارائه دهید، دارکس محتویات فایل _darcs/prefs/email را در مخزن هدف بررسی میکند (در صورت وجود) و پچ را با ایمیل به آن آدرس میفرستد. در این حالت، میتوانید از گزینه --cc برای تعیین گیرندگان اضافی بدون بازنویسی آدرس ایمیل پیشفرض مخزن استفاده کنید.
اگر فایل _darcs/prefs/post در مخزن هدف وجود داشته باشد، دارکس آن را به نشانی (URL) مندرج در آن فایل بارگذاری خواهد کرد، که میتواند یک نشانی mailto: یا یک نشانی http:// باشد. در حالت دوم، پچ به آن نشانی ارسال (post) میشود.
اگر هیچ آدرس ایمیلی مرتبط با مخزن وجود نداشته باشد، دارکس از شما یک آدرس ایمیل درخواست خواهد کرد.
از فلگ --subject برای تنظیم موضوع ایمیل ارسالی استفاده کنید. اگر موضوعی در خط فرمان مشخص نکنید، دارکس بر اساس نام پچهای موجود در بسته پچ، موضوعی را ایجاد میکند.
از فلگ --in-reply-to برای تنظیم هدرهای In-Reply-To و References در ایمیل ارسالی استفاده کنید. بهطور پیشفرض هیچ هدر اضافی گنجانده نمیشود، بنابراین ایمیل توسط برنامههای خواندن ایمیل به عنوان پاسخ (reply) تلقی نخواهد شد.
اگر میخواهید توضیحات یا شرحی را همراه با بسته پچها ضمیمه کنید، باید فلگ --edit-description را مشخص نمایید؛ این کار باعث میشود دارکس ویرایشگری را باز کند که میتوانید در آن پیامی برای همراهی با پچهای خود بنویسید.
اگر میخواهید از دستوری متفاوت از دستور پیشفرض برای ارسال ایمیل استفاده کنید، باید یک خط فرمان را با گزینه --sendmail-command مشخص کنید. خط فرمان میتواند شامل مشخصکنندههای قالبی باشد که با مقادیر واقعی جایگزین میشوند. مشخصکنندههای قالب مجاز عبارتند از: %s برای موضوع (subject)، %t برای گیرنده (to)، %c برای رونوشت (cc)، %b برای بدنه ایمیل (body)، %f برای فرستنده (from)، %a برای بسته پچ و همان مشخصکنندهها با حروف بزرگ برای مقادیر کدگذاریشده با فرمت نشانی وب (URL-encoded). علاوه بر این، اگر دستور پیام کامل ایمیل را روی ورودی استاندارد انتظار دارد، میتوانید %< را به انتهای خط فرمان اضافه کنید. برای مثال، خطوط فرمان برای evolution و msmtp به این صورت هستند:
evolution "mailto:%T?subject=%S&attach=%A&cc=%C&body=%B" msmtp -t %<
گزینههای --author را با آدرس بازگشتی (return address) که darcs send برای بسته پچ شما تنظیم میکند اشتباه نگیرید.
به عنوان مثال، اگر دو آدرس ایمیل A و B دارید:
- اگر از --author A استفاده کنید اما دستگاه شما طوری پیکربندی شده باشد که ایمیل را بهطور پیشفرض از آدرس B ارسال کند، آدرس بازگشتی روی پیام شما B خواهد بود.
- اگر از --from A استفاده کنید و کلاینت ایمیل شما از تنظیم اختیاری آدرس From: پشتیبانی کند (بهویژه برخی از کلاینتهای ایمیل غیر شبیه به یونیکس ممکن است از این قابلیت پشتیبانی نکنند)، آدرس بازگشتی A خواهد بود؛ اگر از آن پشتیبانی نکند، آدرس بازگشتی B خواهد بود.
- اگر نه --from و نه --author را مشخص نکنید، آدرس بازگشتی B خواهد بود.
علاوه بر این، مگر اینکه دستور sendmail را با گزینه --sendmail-command مشخص کنید، دارکس ایمیل را با استفاده از دستور ایمیل پیشفرض روی رایانه شما ارسال میکند. این دستور پیشفرض توسط اسکریپت configure تعیین میشود. بنابراین، در برخی از سیستمعاملهای غیر شبیه به یونیکس، به احتمال زیاد --from اصلاً کار نخواهد کرد.
گزینه --inherit-default برای پشتیبانی از گردش کاری طراحی شده است که در آن شاخههای متفاوتی از یک مخزن بالادستی یکسان دارید و میخواهید تمام شاخههایتان همان مخزن بالادستی را به عنوان defaultrepo داشته باشند. این گزینه بیشترین کاربرد را در صورتی دارد که با افزودن عبارت 'ALL --inherit-default' به فایل ~/darcs/defaults خود، آن را بهطور سراسری فعال کنید.
برای دستورهای push، pull و send این گزینه به معنای موارد زیر است: مفهوم گزینه --set-default را به گونهای تغییر میدهد که به جای خود مخزن ریموت، مخزن پیشفرض (local defaultrepo) را برابر با defaultrepo مخزن ریموت قرار دهد. این اتفاق تنها زمانی رخ میدهد که مخزن ریموت دارای یک defaultrepo تنظیمشده باشد و هر دو مخزن محلی و ریموت، مسیرهای محلی معتبر روی یک میزبان (host) یکسان باشند؛ در غیر این صورت به رفتار پیشفرض (--no-inherit-default) بازمیگردد.
darcs apply <patchfile>
اگر فایلی ارائه نشود، بسته از ورودی استاندارد خوانده خواهد شد.
اگر به جای بسته پچ یک ایمیل داده شود، دارکس به دنبال بسته به عنوان یک ضمیمه MIME در آن ایمیل میگردد. در حال حاضر، اگر مرز MIME (MIME boundary) بازنویسی شود، مانند برنامههای Courier و Mail.app، این عمل با شکست مواجه میشود.
اگر gpg(1) نصب باشد، میتوانید از --verify pubring.gpg برای رد بستههایی که با کلیدی در pubring.gpg امضا نشدهاند استفاده کنید.
اگر گزینه --test مشخص شده باشد و آزمایشی تعریف شده باشد (به darcs setpref مراجعه کنید)، در صورتی که آزمایش پس از اعمال بسته شکست بخورد، بسته رد خواهد شد.
برخلاف بیشتر دستورهای دارکس، پیشفرض darcs apply گزینه --all است. از گزینه --interactive برای انتخاب پچهایی از بسته که مایل به اعمال آنها هستید استفاده کنید.
یک بسته پچ ممکن است تعارضهای حلنشدهای با پچهای موجود یا با درخت کاری ایجاد کند. بهطور پیشفرض، دارکس از اعمال پچهای دارای تعارض خودداری خواهد کرد (--no-allow-conflicts).
گزینه --mark-conflicts به دارکس دستور میدهد که تعارضها را مجاز دانسته و تلاش کند نشانهگذاری تعارض را در درخت کاری شما اضافه کند. توجه داشته باشید که این کار ممکن است (تا حدی) با شکست مواجه شود، زیرا برخی تعارضها قابل نشانهگذاری نیستند، مانند تعارض بین دو بار افزودن یک فایل یکسان. در این حالت دارکس به شما هشدار میدهد و در عوض تغییرات متناقض را نمایش میدهد. هنگامی که دارکس تعارض با تغییرات ثبتنشده را تشخیص دهد، هشدار بیشتری داده و از شما میخواهد تأیید کنید که مایل به ادامه هستید. دلیل این امر آن است که تغییرات ثبتنشده اصلی شما نمیتوانند بهطور خودکار توسط دارکس بازیابی شوند.
توجه داشته باشید که نشانهگذاری تعارض چیزی است که دارکس به فایلهای درخت کاری شما اضافه میکند. با این حال، همیشه میتوانید آن را با استفاده از darcs mark-conflicts دوباره بازسازی کنید.
گزینه --external-merge به شما امکان میدهد تعارضها را با استفاده از یک ابزار ادغام خارجی حل کنید. در این گزینه، %a با جد مشترک (مبنای ادغام)، %1 با نسخه اول، %2 با نسخه دوم، و %o با مسیری که محتوای حلشده شما باید در آن قرار گیرد جایگزین میشود. برای مثال، برای استفاده از ابزار ادغام بصری xxdiff میتوانید این عبارت را مشخص کنید: --external-merge='xxdiff -m -O -M %o %1 %a %2'
گزینه --allow-conflicts تعارضها را مجاز میشمارد اما نشانهگذاری تعارض را اضافه نمیکند. این گزینه زمانی مفید است که میخواهید با یک مخزن صرفاً به عنوان مجموعهای از پچها رفتار کنید، مانند استفاده از darcs pull --union برای دریافت تمام پچهای همکارانتان پیش از قطع اتصال اینترنت (آفلاین شدن). مجدداً، نشانهگذاری تعارض را میتوان در هر زمان بعداً با استفاده از darcs mark-conflicts اضافه کرد.
برای اطلاعات بیشتر درباره تعارضها در دارکس و نحوه حل آنها، به راهنمای darcs mark-conflicts مراجعه کنید.
سایر دستورها (Other commands):
darcs optimize subcommand
برای جزئیات بیشتر به توضیحات زیردستورها مراجعه کنید.
darcs optimize clean
darcs optimize http
darcs optimize reorder
با گزینه --deep تلاش میشود تمام برچسبها در کل مخزن بهینهسازی شوند. این کار تاریخچه پچها را به دستههای کوچکتر تقسیم میکند که میتواند کارایی را بهبود بخشد، اما نیازمند حضور تمامی پچها است. بنابراین، این حالت برای کلونهای تنبل (lazy clones) مناسبت کمتری دارد.
darcs optimize enable-patch-index
darcs optimize disable-patch-index
darcs optimize compress
دستورهای darcs optimize uncompress و darcs optimize compress میتوانند برای اطمینان از این مورد استفاده شوند که پچهای موجود در مخزن جاری به ترتیب غیرفشرده یا فشرده هستند.
darcs optimize uncompress
دستورهای darcs optimize uncompress و darcs optimize compress میتوانند برای اطمینان از این مورد استفاده شوند که پچهای موجود در مخزن جاری به ترتیب غیرفشرده یا فشرده هستند.
darcs optimize relink
دارکس به صورت خودکار از پیوندهای سخت استفاده میکند، بنابراین این دستور به ندرت مورد نیاز است. بیشترین کاربرد آن در حالتی است که از cp -r به جای darcs clone برای کپی کردن یک مخزن استفاده کرده باشید، یا پچ یکسانی را از یک مخزن ریموت به چندین مخزن محلی کشیده (pull) باشید.
darcs optimize upgrade
darcs optimize cache
همچنین به صورت خودکار کش سراسری را به قالب دستهبندیشده (bucketed) پیشفرض منتقل میکند.
darcs dist
بهطور پیشفرض، بایگانی (و دایرکتوری سطح بالا در داخل بایگانی) نامی همنام با مخزن دارد، اما میتوان آن را با گزینه --dist-name بازنویسی کرد.
اگر یک دستور predist تنظیم شده باشد (به darcs setpref مراجعه کنید)، آن دستور پیش از بایگانی روی وضعیت ثبتشده اجرا خواهد شد. به عنوان مثال، پروژههای autotools آن را به autoconf && automake تنظیم میکنند.
اگر از --zip استفاده شود، تطبیقدهندهها و دستور predist نادیده گرفته میشوند.
darcs mark-conflicts [file|directory]...
v v v v v v v initial state ============= first choice ************* ...more choices... ************* last choice ^ ^ ^ ^ ^ ^ ^
اگر این نشانهگذاری تعارض را بدون حل واقعی تعارض به صورت تصادفی لغو (revert) کرده یا به صورت دستی حذف کردید، میتوانید از darcs mark-conflicts برای ایجاد مجدد آن استفاده کنید؛ و همچنین در صورتی که از darcs apply یا darcs pull با گزینه --allow-conflicts استفاده کرده باشید که در آنها تعارضها در ابتدا نشانهگذاری نمیشوند.
در دارکس، یک تعارض زمانی حلشده به شمار میرود که تمام تغییرات دخیل در تعارض (که میتواند بیش از دو مورد باشد) مورد وابستگی یک یا چند پچ بعدی قرار گرفته باشند. اگر برای تعارضی خاص یک راهحل ثبت (record) کنید، darcs mark-conflicts دیگر آن را نشانهگذاری نخواهد کرد و نشان میدهد که حل شده است. اگر تغییرات ثبتنشدهای دارید، این تغییرات نیز دقیقاً مانند این است که از قبل آنها را ثبت کرده باشید و به عنوان راهحلهای (بالقوه) تعارض محسوب میشوند.
این اصل به وابستگیهای صریح «معنایی» نیز گسترش مییابد. برای نمونه، ثبت یک برچسب (tag) بهطور خودکار تمام تعارضها را به عنوان حلشده علامتگذاری میکند.
در مثال شماتیک بالا، «initial state» با وضعیت ثبتشده فایل در مخزن شما مطابقت دارد. به عبارت دیگر، اثر ثبتشده یک تعارض این است که هیچیک از تغییرات متناقض اعمال نمیشوند. این معمولاً وضعیتی نیست که شما آن را یک حل موفقیتآمیز تعارض در نظر بگیرید؛ اما شرایط استثنایی وجود دارند که ممکن است دقیقاً همان چیزی باشد که میخواهید. برای اینکه به دارکس بگویید میخواهید این تعارض به عنوان حلشده در نظر گرفته شود، از darcs record --ask-deps برای ثبت پچی استفاده کنید که به صراحت به تمام پچهای دخیل در تعارض وابسته است.
darcs repair
darcs convert subcommand
برای جزئیات به توضیحات زیردستورها مراجعه کنید.
darcs convert darcs-2 <source> [<destination>]
هشدار: مخزن تولیدشده توسط این دستور برای Darcs 1.x قابل فهم نیست و پچها نمیتوانند بین مخازنی با قالبهای darcs-1 و darcs-2 رد و بدل شوند. همچنین، نباید پچها را بین مخازنی که با فراخوانیهای متفاوت این دستور ایجاد شدهاند مبادله کنید. این بدین معناست:
- پیش از انجام این تبدیل، باید هر پچی را که در جای دیگری وجود دارد و ممکن است بخواهید در آینده ادغام کنید، در این مخزن ادغام نمایید تا قابل ادغام باقی بمانند (همیشه میتوانید پس از تبدیل دوباره آنها را حذف کنید).
- پس از تبدیل، باید به همه کسانی که فورکی (انشعابی) از این مخزن دارند بگویید که آن را کنار بگذارند و یک فورک جدید از مخزن تبدیلشده بسازند.
دستورهای initialize و clone فایلهای ترجیحات را در دایرکتوری _darcs/prefs/ مخزن تازه ایجادشده ایجاد میکنند. با گزینه --with-prefs-templates، فایلهای ترجیحات boring و binaries با الگوهای پیشفرض پر خواهند شد. اگر میخواهید این فایلها را خالی بگذارید، از گزینه --no-prefs-templates استفاده کنید. اگر ترجیح میدهید تنظیمات مربوطه را بهطور سراسری نگه دارید، اضافه کردن عبارت 'ALL no-prefs-templates' به فایل ~/darcs/defaults شما مناسب خواهد بود.
darcs convert export
برای یک بار خروجی گرفتن، میتوانید از این دستورالعمل استفاده کنید:
$ cd repo $ git init ../mirror $ darcs convert export | (cd ../mirror && git fast-import)
برای خروجی گرفتن افزایشی با استفاده از فایلهای نشانهگذاری (marksfiles):
$ cd repo $ git init ../mirror $ touch ../mirror/git.marks $ darcs convert export --read-marks darcs.marks --write-marks darcs.marks | (cd ../mirror && git fast-import --import-marks=git.marks --export-marks=git.marks)
در صورت خروجی گرفتن افزایشی، دقت کنید که هرگز پچها را در مخزن دارکس مبدأ اصلاح (amend)، حذف یا بازآرایی نکنید.
همچنین توجه داشته باشید در صورتی که مخزن دارکس حاوی تعارض باشد، خروجی گرفتن از آن به گیت از نظر تاریخچه کاملاً منطبق و دقیق نخواهد بود.
محدودیتها:
- دایرکتوریهای خالی توسط پروتکل fast-export پشتیبانی نمیشوند.
- نامفایلهای دارای کاراکترهای یونیکد در حال حاضر بهدرستی مدیریت نمیشوند. مشاهده کنید: http://bugs.darcs.net/issue2359
darcs convert import [<directory>]
برای تبدیل یک مخزن گیت به یک مخزن جدید دارکس میتوانید این دستور را اجرا کنید:
$ (cd gitrepo && git fast-export --all -M) | darcs convert import darcsmirror
هشدار: مخازن گیت که دارای شاخه هستند نتایج عجیبی تولید خواهند کرد، مسئولیت استفاده بر عهده خودتان است.
واردسازی افزایشی با فایلهای نشانهگذاری در حال حاضر پشتیبانی نمیشود.
دستورهای initialize و clone فایلهای ترجیحات را در دایرکتوری _darcs/prefs/ مخزن تازه ایجادشده ایجاد میکنند. با گزینه --with-prefs-templates، فایلهای ترجیحات boring و binaries با الگوهای پیشفرض پر خواهند شد. اگر میخواهید این فایلها را خالی بگذارید، از گزینه --no-prefs-templates استفاده کنید. اگر ترجیح میدهید تنظیمات مربوطه را بهطور سراسری نگه دارید، اضافه کردن عبارت 'ALL no-prefs-templates' به فایل ~/darcs/defaults شما مناسب خواهد بود.
darcs fetch [repository]...
رفتار fetch اساساً مشابه دستور pull است، بنابراین لطفاً برای آگاهی بیشتر به راهنمای pull مراجعه کنید.
محیط (ENVIRONMENT)
HOME and APPDATA
ترجیحات به ازای هر کاربر در $HOME/.darcs (در یونیکس) یا %APPDATA%/darcs (در ویندوز) تنظیم میشوند. همچنین این مسیر مکان پیشفرض حافظه موقت (کش) است.
DARCS_EDITOR, VISUAL, and EDITOR
برای ویرایش توضیحات وصله یا دیدگاه ایمیل، Darcs یک ویرایشگر خارجی را فراخوانی میکند. ویرایشگر برگزیده شما میتواند از طریق هر یک از متغیرهای محیطی $DARCS_EDITOR، $VISUAL یا $EDITOR تنظیم شود. اگر هیچیک از این متغیرها تنظیم نشده باشند، nano استفاده میشود. در صورتی که nano کرش کند یا در PATH شما پیدا نشود، به ترتیب vi، emacs، emacs -nw و (در ویندوز) edit امتحان میشوند.
DARCS_PAGER and PAGER
اگر خروجی دستوری بیش از ۲۰ خط باشد، Darcs یک صفحهبند (pager) را فراخوانی میکند. Darcs از صفحهبند مشخصشده توسط $DARCS_PAGER یا $PAGER استفاده خواهد کرد. اگر هیچکدام تنظیم نشده باشند، less استفاده میشود. برای عدم استفاده از صفحهبند، $DARCS_PAGER (یا در صورت تنظیم نبودن آن، $PAGER) را با یک رشته خالی مقداردهی کنید.
DARCS_DONT_COLOR, DARCS_ALWAYS_COLOR, and DARCS_ALTERNATIVE_COLOR
اگر ترمینال توالیهای فرار رنگی ANSI را درک کند، darcs هنگام نمایش وصلهها کلمات کلیدی و جداکنندههای مشخصی را برجسته میکند و همچنین خطوط قطعات وصله (hunk) را بر اساس حذف یا اضافه شدن، رنگی چاپ میکند. این قابلیت را میتوان با تنظیم متغیر محیطی DARCS_DONT_COLOR به مقدار 1 غیرفعال کرد.
اگر از صفحهبندی استفاده میکنید که رنگهای ANSI را پشتیبانی میکند (مانند less -R)، میتوانید با تنظیم DARCS_ALWAYS_COLOR به مقدار 1، darcs را وادار کنید که همیشه خروجی را برجستهسازی کند. اگر قادر به دیدن رنگها نیستید، میتوانید DARCS_ALTERNATIVE_COLOR را روی 1 تنظیم کنید تا darcs به جای رنگها، از کدهای ANSI برای متن پررنگ (bold) و تصویر معکوس (reverse video) استفاده کند.
DARCS_DONT_ESCAPE_TRAILING_SPACES and DARCS_DONT_ESCAPE_TRAILING_CR
بهطور پیشفرض darcs هنگام نمایش محتوای وصله، هرگونه فاصله (space) در انتهای خطوط را اسکیپ (در صورت امکان با برجستهسازی) میکند. اگر این رفتار را نمیخواهید، میتوانید با تنظیم DARCS_DONT_ESCAPE_TRAILING_SPACES به 1 آن را غیرفعال کنید. یک حالت خاص منحصراً برای کاراکترهای بازگشت به ابتدای سطر (carriage return) وجود دارد: DARCS_DONT_ESCAPE_TRAILING_CR.
DARCS_DONT_ESCAPE_ANYTHING, DARCS_DONT_ESCAPE_EXTRA, DARCS_ESCAPE_EXTRA, DARCS_DONT_ESCAPE_ISPRINT, and DARCS_ESCAPE_8BIT
بسته به کدگذاری مشخصشده در تنظیمات محلی (locale) شما، Darcs هنگام چاپ محتویات وصله روی ترمینال نیاز دارد کاراکترهای مشخصی را اسکیپ کند.
بهطور پیشفرض، darcs فرض میکند که کدگذاری محلی شما با ASCII سازگار است. این شامل UTF-8 و برخی کدگذاریهای ۸-بیتی مانند ISO/IEC-8859 (شامل انواع مختلف آن) میشود. از آنجا که ASCII شامل کاراکترهای کنترلی مانند backspace است (که در صورت چاپ مستقیم روی ترمینال میتواند محتوای وصله را از دید کاربر پنهان کند) و حتی کاراکترهایی که ممکن است خطرات امنیتی مانند هدایت دستورات به پوسته را ایجاد کنند، darcs موظف است این کاراکترها را اسکیپ کند. این کاراکترها به صورت ^<حرف کنترلی> یا <کد هگز> چاپ میشوند. همچنین Darcs از نشانهگذاری ویژهای برای پایان خطوطی که پیش از آنها نویسههای فاصله خالی قرار دارند استفاده میکند، زیرا در غیر این صورت این فاصلهها قابل تشخیص نخواهند بود.
اگر از کدگذاری استفاده میکنید که با ASCII سازگار نیست، اوضاع کمی پیچیدهتر است. چنین کدگذاریهایی شامل UTF-16 و UTF-32 و همچنین بسیاری از کدگذاریهایی هستند که با پیدایش یونیکد منسوخ شدند. در این حالت شما دو گزینه دارید: میتوانید DARCS_DONT_ESCAPE_ANYTHING را برابر با 1 قرار دهید. در این صورت هر چیزی که مجموعه کدها را وارونه نکند به درستی کار خواهد کرد و تمام جلوههای ترمینال شما به کار خود ادامه میدهند. این متغیر محیطی همچنین زمانی کاربرد دارد که خروجی را به یک صفحهبند یا فیلتر خارجی لولهکشی (pipe) کنید که نحوه کار با کدگذاری شما را بهتر از darcs میداند. توجه داشته باشید که با این تنظیم، تمام اسکیپ کردنها از جمله اسکیپ ویژه فاصلههای انتهای خطوط غیرفعال خواهد شد.
امکان دیگر این است که با استفاده از DARCS_DONT_ESCAPE_EXTRA و DARCS_ESCAPE_EXTRA بهطور صریح به darcs اعلام کنید که چه بایتهایی را اسکیپ کند یا نکند. مقادیر آنها باید رشتههایی متشکل از بایتهای دقیق مورد نظر باشند. دستورات اسکیپ کردن نسبت به عدم اسکیپ اولویت دارند. با این حال کاراکترهای فاصله در انتهای خطوط همچنان اسکیپ میشوند. متغیر محیطی ویژه DARCS_DONT_ESCAPE_TRAILING_CR اسکیپ کردن کاراکتر بازگشت به ابتدای سطر (carriage return) در انتهای خط (به سبک DOS) را غیرفعال میکند.
به دلایل تاریخی، darcs همچنین از DARCS_DONT_ESCAPE_ISPRINT و DARCS_USE_ISPRINT (که هممعنی هستند) پشتیبانی میکند. اینها فقط برای کدگذاریهای ۸-بیتی مانند ISO-8859 معنا دارند و دیگر نیازی به آنها نیست، زیرا امروزه darcs بهطور پیشفرض رفتار درستی را در این زمینه در پیش میگیرد.
در نهایت، اگر در موقعیتی با حساسیت امنیتی بسیار بالا قرار دارید (یا به هر دلیل محتاط هستید)، میتوانید DARCS_ESCAPE_8BIT را روی 1 تنظیم کنید. این امر باعث میشود که darcs علاوه بر کاراکترهای کنترلی ASCII، تمامی بایتهای غیر ASCII را نیز اسکیپ کند.
DARCS_TMPDIR and TMPDIR
دستور Darcs اغلب پوشههای موقت ایجاد میکند. برای نمونه، دستور darcs diff دو پوشه موقت برای درختهای کاری جهت مقایسه تفاوتها میسازد. بهطور پیشفرض پوشههای موقت در /tmp یا در صورت عدم وجود آن، در _darcs (درون مخزن جاری) ایجاد میشوند. این مورد را میتوان با مشخص کردن پوشهای دیگر در فایل _darcs/prefs/tmpdir یا متغیرهای محیطی $DARCS_TMPDIR یا $TMPDIR بازنویسی کرد.
DARCS_KEEP_TMPDIR
اگر متغیر محیطی DARCS_KEEP_TMPDIR تعریف شده باشد، darcs پوشههای موقتی را که ایجاد میکند حذف نخواهد کرد. این قابلیت در درجه اول برای اشکالزدایی خود Darcs در نظر گرفته شده است، اما برای نمونه میتواند برای تشخیص اینکه چرا ترجیحات آزمون شما (نگاه کنید به darcs setpref) هنگام اجرای darcs record شکست میخورد اما در اجرای دستی کار میکند، مفید باشد.
DARCS_EMAIL and EMAIL
هر وصله به نویسنده آن نسبت داده میشود که معمولاً با نشانی ایمیل مشخص میگردد (برای مثال، Fred Bloggs <fred@example.net>). برنامه Darcs برای یافتن رشته نویسنده چندین مکان را بررسی میکند: گزینه --author، فایلهای _darcs/prefs/author (درون مخزن) و ~/.darcs/author (در پوشه خانگی شما)، و متغیرهای محیطی $DARCS_EMAIL و $EMAIL. اگر هیچیک از این موارد وجود نداشته باشند، Darcs رشته نویسنده را از شما میپرسد و آن را در ~/.darcs/author مینویسد. توجه داشته باشید اگر بیش از یک نشانی ایمیل دارید، میتوانید همه آنها را در ~/.darcs/author قرار دهید (هر نویسنده در یک خط). برنامه Darcs همچنان نویسنده را از شما میپرسد، اما به شما امکان میدهد نویسنده را از فهرست انتخاب کرده یا مقدار دیگری تایپ کنید.
SENDMAIL
در یونیکس، دستور darcs send به sendmail(8) وابسته است. گزینه --sendmail-command یا متغیر محیطی $SENDMAIL میتوانند برای ارائه یک مسیر صریح به این برنامه استفاده شوند؛ در غیر این صورت مکانهای استاندارد /usr/sbin/sendmail و /usr/lib/sendmail امتحان خواهند شد.
DARCS_SLOPPY_LOCKS
اگر در برخی سیستمهای فایل با خطایی از این قبیل مواجه شدید:
darcs: takeLock [...]: atomic_create [...]: unsupported operation
میتوانید مقدار DARCS_SLOPPY_LOCKS=True را صادر (export) کرده و امتحان کنید.
DARCS_SSH
مخازن با قالب [user@]host:[dir] به عنوان مخازن راه دور در نظر گرفته میشوند که Darcs از طریق برنامه خارجی ssh(1) به آنها دسترسی پیدا میکند.
متغیر محیطی $DARCS_SSH میتواند برای تعیین یک کلاینت SSH جایگزین استفاده شود. آرگومانها را میتوان با فاصله خالی گنجاند. این مقدار توسط پوسته تفسیر نمیشود، بنابراین ساختارهای پوسته قابل استفاده نیستند؛ بهویژه، امکان اینکه نام برنامه شامل فاصله خالی از طریق نقلقول یا اسکیپ باشد وجود ندارد.
DARCS_SCP and DARCS_SFTP
هنگام خواندن از یک مخزن راه دور، Darcs تلاش میکند دستور darcs transfer-mode را روی میزبان راه دور اجرا کند. این کار در صورتی که روی میزبان راه دور فقط Darcs 1 نصب باشد، اصلاً Darcs نصب نباشد یا فقط SFTP مجاز باشد، با شکست مواجه میشود.
اگر transfer-mode ناموفق باشد، Darcs به عنوان جایگزین از scp(1) و sftp(1) استفاده خواهد کرد. دستورات فراخوانیشده را میتوان به ترتیب با متغیرهای محیطی $DARCS_SCP و $DARCS_SFTP سفارشیسازی کرد که رفتاری مشابه $DARCS_SSH دارند. اگر طرف راه دور تنها sftp را مجاز میداند، تنظیم DARCS_SCP=sftp را امتحان کنید.
همچنین scp توسط دستور darcs clone در صورتی که مقصد یک پوشه راه دور ssh باشد استفاده میشود. این عملیات را میتوان با تنظیم DARCS_SCP=rsync به میزان قابل توجهی سریعتر کرد.
SSH_PORT
اگر این متغیر محیطی تنظیم شده باشد، به عنوان شماره درگاه (پورت) برای تمامی فراخوانیهای SSH انجامشده توسط Darcs (هنگام دسترسی به مخازن راه دور از طریق SSH) استفاده میشود. این گزینه زمانی مفید است که سرور SSH شما روی درگاه پیشفرض اجرا نشود و کلاینت SSH شما از ssh_config(5) پشتیبانی نکند. کاربران OpenSSH احتمالاً ترجیح میدهند چیزی مانند Host *.example.net Port 443 را در فایل ~/.ssh/config خود قرار دهند.
DARCS_CONNECTION_TIMEOUT
حداکثر زمان بر حسب ثانیه را مشخص میکند که darcs اجازه میدهد یک اتصال طول بکشد. در صورتی که این متغیر مشخص نشود، مقدار پیشفرض ۳۰ ثانیه است. این گزینه فقط با curl کار میکند.
فایلها (FILES)
_darcs/prefs/motd
فایل _darcs/prefs/motd میتواند شامل «پیام روز» (message of the day) باشد که به کاربرانی که بدون گزینه --quiet از مخزن کلون کرده یا pull میگیرند نمایش داده میشود.
_darcs/prefs/email
فایل _darcs/prefs/email برای ارائه نشانی ایمیل برای مخزن شما استفاده میشود تا دیگران هنگام ارسال یک وصله به شما از طریق darcs send، از آن استفاده کنند. محتوای این فایل صرفاً باید یک نشانی ایمیل باشد.
_darcs/prefs/post
اگر فایل _darcs/prefs/post در مخزن مقصد وجود داشته باشد، دستور darcs send وصله را به نشانی اینترنتی (URL) موجود در آن فایل بارگذاری میکند که میتواند یک نشانی اینترنتی mailto: یا یک نشانی http:// باشد. در حالت دوم، وصله به آن نشانی اینترنتی ارسال (post) میشود.
_darcs/prefs/author
فایل _darcs/prefs/author شامل نشانی ایمیل (یا نام) است که هنگام ثبت وصلهها در این مخزن به عنوان نویسنده استفاده میشود، برای مثال David Roundy <droundy@abridgegame.org>. این فایل مقادیر متغیرهای محیطی $DARCS_EMAIL و $EMAIL را بازنویسی و لغو میکند.
_darcs/prefs/defaults
گزینههای پیشفرض برای دستورات darcs. هر خط از این فایل قالب زیر را دارد:
COMMAND FLAG VALUE
که در آن COMMAND یا نام دستوری است که پیشفرض برای آن اعمال میشود، یا عبارت ALL است که نشان میدهد پیشفرض روی تمامی دستوراتی که آن فلگ را میپذیرند اعمال میشود. عبارت FLAG نام گزینه یا شناسه طولانی با یا بدون -- است، یعنی verbose یا --verbose. در نهایت، اگر فلگ نیازی به مقدار نداشته باشد، میتوان از گزینه VALUE صرفنظر کرد. اگر مقدار حاوی فاصله باشد، به جای نقلقول دوتایی از نقلقول تکی برای در بر گرفتن آن استفاده کنید. هر خط تنها یک فلگ میپذیرد. برای تنظیم چندین پیشفرض برای یک دستور یکسان (یا برای دستورات ALL)، از چند خط استفاده کنید.
گزینههای فهرستشده در فایل پیشفرضها صرفاً همان پیشفرض هستند: شما میتوانید هر پیشفرضی را در خط فرمان بازنویسی کنید.
توجه داشته باشید که استفاده از ALL به راحتی میتواند پیامدهای پیشبینینشدهای داشته باشد، بهویژه اگر دستورات در نسخههای جدیدتر darcs گزینههایی را بپذیرند که در نسخههای قبلی نمیپذیرفتند. تنها گزینههای امن را با ALL به کار ببرید.
برای نمونه، اگر ساعت سیستم شما نامنظم است، میتوانید با افزودن خط زیر به darcs دستور دهید که همیشه زمانهای اصلاح فایل را نادیده بگیرد:
ALL ignore-times
برخی از گزینهها وجود دارند که بهطور ویژه برای استفاده در _darcs/prefs/defaults در نظر گرفته شدهاند. یکی از آنها --disable است. همانطور که از نامش پیداست، این گزینه هر دستوری را که آن را به عنوان آرگومان دریافت کند غیرفعال میسازد. بنابراین، اگر نگران هستید که با استفاده سهوی از دستوری مانند amend به مخازن خود آسیب برسانید، خط زیر را اضافه کنید:
amend disable
یک فایل پیشفرضهای سراسری میتواند با نام .darcs/defaults در پوشه خانگی شما ایجاد شود. در صورت بروز تداخل، پیشفرضهای یک مخزن خاص اولویت دارند.
_darcs/prefs/boring
فایل _darcs/prefs/boring میتواند حاوی فهرستی از عبارتهای منظم (regex) باشد که فایلهایی را توصیف میکنند که انتظار ندارید به پروژه خود اضافه کنید، مانند فایلهای شیء (object files). یک مخزن تازه ایجاد شده دارای یک فایل boring است که شامل بسیاری از فایلهای متداول کنترل نسخه، پشتیبانگیری، موقت و کامپایلشده میباشد.
شاید بخواهید فایل boring را تحت کنترل نسخه قرار دهید. برای این کار میتوانید از دستور darcs setpref استفاده کنید تا مقدار 'boringfile' را به نام فایل دلخواه خود تنظیم کنید (برای نمونه darcs setpref boringfile .boring، که در آن .boring مسیر فایلی در مخزن است که توسط darcs به مخزن شما اضافه شده است). ترجیح boringfile بر _darcs/prefs/boring اولویت دارد، بنابراین حتماً محتوای آن فایل را درون boringfile کپی کنید.
شما همچنین میتوانید یک فایل عبارات منظم boring به نام ~/.darcs/boring در پوشه خانگی خود ایجاد کنید که با تمام مخازن darcs شما استفاده خواهد شد.
هر فایلی که قبلاً توسط darcs مدیریت نشده باشد و مسیر آن در مخزن با هر یک از عبارتهای منظم boring مطابقت داشته باشد، نادیدهگرفتنی (boring) تلقی میشود. فایل boring برای پالایش فایلهای ارائهشده به darcs add استفاده میشود تا بتوانید از دستور سادهای مانند darcs add newdir newdir/* استفاده کنید بدون اینکه تصادفاً دستهای از فایلهای شیء را اضافه کنید. این فایل همچنین زمانی که گزینه --look-for-adds به دستورات whatsnew یا record داده میشود، استفاده میگردد. توجه داشته باشید به محض اینکه یک فایل به darcs اضافه شد، دیگر نادیدهگرفتنی تلقی نمیشود، حتی اگر با فیلتر فایل boring مطابقت داشته باشد.
_darcs/prefs/binaries
فایل _darcs/prefs/binaries میتواند شامل فهرستی از عبارتهای منظم باشد که فایلهایی را توصیف میکنند که باید به جای فایلهای متنی به عنوان فایلهای باینری در نظر گرفته شوند. Darcs بهطور خودکار فایلهایی را که حاوی کاراکترهای ^Z یا NULL در ۴۰۹۶ بایت اول باشند، به عنوان فایل باینری در نظر میگیرد. احتمالاً مایل خواهید بود که فایل binaries را تحت کنترل نسخه قرار دهید. برای این کار میتوانید از دستور darcs setpref برای تنظیم مقدار 'binariesfile' به نام فایل دلخواه خود استفاده کنید (برای نمونه darcs setpref binariesfile ./.binaries، که در آن .binaries فایلی است که توسط darcs به مخزن شما اضافه شده است). همانند فایل boring، در صورت تمایل میتوانید یک فایل ~/.darcs/binaries نیز ایجاد کنید.
_darcs/prefs/defaultrepo
شامل نشانی اینترنتی (URL) مخزن راه دور پیشفرض است که توسط دستورات pull، push، send و optimize relink استفاده میشود. Darcs این فایل را بهطور خودکار یا زمانی که گزینه --set-default به کار میرود، ویرایش میکند.
_darcs/prefs/sources
علاوه بر defaultrepo، برنامه darcs همچنین سایر مکانهای استفادهشده در دستورات برای تبادل وصلهها (مانند push، pull، send) را پیگیری میکند. این موارد متعاقباً به عنوان منابع جایگزین برای بارگیری وصلهها استفاده میشوند. این فایل شامل خطوطی مانند موارد زیر است:
cache:/home/droundy/.cache/darcs readonly:/home/otheruser/.cache/darcs repo:http://darcs.net
پیشوند cache: نشان میدهد که darcs میتواند از آن به عنوان حافظه موقت (کش) خواندنی-نوشتنی برای وصلهها استفاده کند، readonly: نشاندهنده حافظه موقتی است که فقطخواندنی است، و repo: یک مخزن (احتمالاً از راه دور) را نشان میدهد. ترتیب ورودیها اهمیتی ندارد: darcs همیشه پیش از مسیرهای راه دور، مسیرهای محلی را امتحان خواهد کرد و تنها مسیرهای محلی به عنوان موارد بالقوه قابل نوشتن استفاده میشوند.
یک کش سراسری بهطور پیشفرض در پوشه خانگی شما تحت عنوان .cache/darcs (نسخههای قدیمیتر darcs از .darcs/cache برای این کار استفاده میکردند) یا در صورت تنظیم متغیر محیطی، در $XDG_CACHE_HOME/darcs فعال است؛ به این نشانی مراجعه کنید:
https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
این حافظه موقت به darcs اجازه میدهد از بارگیری مجدد وصلهها جلوگیری کند (برای مثال هنگام انجام کلون دوم از همان مخزن)، و همچنین به darcs امکان میدهد برای کاهش مصرف دیسک از پیوندهای سخت (hard links) استفاده نماید.
توجه داشته باشید که پوشه کش باید روی همان سیستم فایلی قرار داشته باشد که مخازن شما در آن هستند، بنابراین ممکن است لازم باشد آن را تغییر دهید. همچنین اگر چند سیستم فایل دارید که در آنها از darcs استفاده میکنید، میتوانید از چندین پوشه کش روی سیستمهای فایل مختلف استفاده کنید.
در حالی که darcs بهطور خودکار ورودیهایی را به _darcs/prefs/sources اضافه میکند، در حال حاضر آنها را حذف نمیکند. اگر یک یا چند ورودی در دسترس نباشند (برای مثال به این دلیل که روی یک رسانه جداشدنی قرار داشتهاند)، darcs با نمایش یک راهنمایی به شما پیشنهاد میکند که آن ورودیها را حذف کنید. این کار به این دلیل انجام میشود که برخی سیستمها مهلتهای زمانی (timeouts) بسیار طولانی برای برخی رسانههای قابل دسترسی از راه دور دارند (مانند NFS روی automounter در لینوکس) که میتواند عملیات darcs را به میزان قابل توجهی کند کند. از سوی دیگر، هنگامی که مخزنی را با --lazy از مکانی که دیگر در دسترس نیست کلون میکنید، این راهنمایی ممکن است به شما سرنخی بدهد که وصلهها در کجا یافت میشوند تا بتوانید برای بازیابی دسترسی به آنها تلاش کنید.
_darcs/prefs/tmpdir
بهطور پیشفرض پوشههای موقت در /tmp یا در صورت عدم وجود آن، در _darcs (درون مخزن جاری) ایجاد میشوند. این مورد را میتوان با مشخص کردن پوشهای دیگر در فایل _darcs/prefs/tmpdir یا متغیرهای محیطی $DARCS_TMPDIR یا $TMPDIR لغو و بازنویسی کرد.
_darcs/prefs/prefs
شامل ترجیحات تنظیمشده توسط دستور darcs setpref است. بهصورت دستی ویرایش نکنید.
اشکالات (BUGS)
در نشانی http://bugs.darcs.net میتوانید فهرستی از اشکالات شناختهشده در Darcs را بیابید. اشکالات ناشناخته را میتوان در آن سایت (پس از ایجاد حساب کاربری) یا با ارسال ایمیل گزارش به bugs@darcs.net گزارش داد.
همچنین ببینید (SEE ALSO)
وبسایت Darcs اطلاعات تکمیلی فراوانی ارائه میدهد. این وبسایت در نشانی زیر در دسترس است:
مجوز (LICENSE)
برنامه Darcs یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU GPL) همانطور که توسط بنیاد نرمافزارهای آزاد منتشر شده است، چه نسخه ۲ یا (به انتخاب خودتان) هر نسخه پس از آن، بازتوزیع کرده و/یا تغییر دهید.
| 2.18.5 (release) |