.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "MR 1" .TH MR 1 2024-07-04 "perl v5.38.2" mr .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" mr \- ابزاری برای مدیریت تمامی مخازن کنترل نسخه به صورت یکپارچه .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBmr\fR [options] checkout .PP \&\fBmr\fR [options] update .PP \&\fBmr\fR [options] status .PP \&\fBmr\fR [options] clean [\-f] .PP \&\fBmr\fR [options] commit [\-m "message"] .PP \&\fBmr\fR [options] record [\-m "message"] .PP \&\fBmr\fR [options] fetch .PP \&\fBmr\fR [options] push .PP \&\fBmr\fR [options] diff .PP \&\fBmr\fR [options] log .PP \&\fBmr\fR [options] grep pattern .PP \&\fBmr\fR [options] run command [param ...] .PP \&\fBmr\fR [options] bootstrap src [directory] .PP \&\fBmr\fR [options] register [repository] .PP \&\fBmr\fR [options] config section ["setting=[value]" ...] .PP \&\fBmr\fR [options] action [params ...] .PP \&\fBmr\fR [options] [online|offline] .PP \&\fBmr\fR [options] remember action [params ...] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" دستور \&\fBmr\fR ابزاری برای مدیریت تمامی مخازن کنترل نسخه شما است. این ابزار می‌تواند عملیات checkout، به‌روزرسانی (update) یا سایر اقدامات را روی مجموعه‌ای از مخازن به گونه‌ای انجام دهد که گویی یک مخزن واحد و یکپارچه هستند. این برنامه از هر ترکیبی از مخازن Subversion، git، cvs، mercurial، bzr، darcs، fossil و veracity پشتیبانی می‌کند، و پشتیبانی از سایر سیستم‌های کنترل نسخه را نیز می‌توان به آسانی به آن افزود. .PP دستور \&\fBmr\fR به تمامی مخازن ثبت‌شده در مسیر دایرکتوری کاری جاری شما یا زیرشاخه‌های آن وارد شده (\f(CWcd\fR) و روی آن‌ها عملیات انجام می‌دهد. یا چنانچه در یک زیردایرکتوری از مخزنی قرار داشته باشید که شامل هیچ مخزن ثبت‌شده دیگری نیست، در همان دایرکتوری می‌ماند و تنها بر روی همان مخزن کار می‌کند. .PP پیکربندی \&\fBmr\fR توسط فایل‌های ‎.mrconfig انجام می‌شود که فهرست مخازن را در خود دارند. این ابزار کار خود را با خواندن فایل ‎.mrconfig در دایرکتوری خانگی (home) شما آغاز می‌کند، و این فایل به نوبه خود می‌تواند فایل‌های ‎.mrconfig دیگر را از درون مخازن به صورت زنجیره‌ای بارگذاری کند. همچنین به طور خودکار به دنبال فایل ‎.mrconfig در دایرکتوری جاری یا در یکی از دایرکتوری‌های والد آن می‌گردد. .PP این دستورات از پیش تعریف‌شده برای کاربران هر سیستم کنترل نسخه‌ای آشنا خواهند بود: .IP "checkout (or co)" 4 .IX Item "checkout (or co)" مخازنی را که هنوز دریافت (checkout) نشده‌اند، دریافت می‌کند. .IP update 4 .IX Item "update" هر مخزن را از روی مخزن ریموت پیکربندی‌شده آن به‌روزرسانی می‌کند. .Sp اگر مخزنی هنوز دریافت نشده باشد، ابتدا آن را checkout می‌کند. .IP status 4 .IX Item "status" یک گزارش وضعیت برای هر مخزن نمایش می‌دهد، و نشان می‌دهد چه تغییرات ثبت‌نشده‌ای (uncommitted) در مخزن وجود دارد. برای سیستم‌های کنترل نسخه توزیع‌شده، شاخه‌های محلی ارسال‌نشده (unpushed) را نیز نمایش می‌دهد. .IP clean 4 .IX Item "clean" فایل‌های نادیده‌گرفته‌شده (ignored)، فایل‌های ردیابی‌نشده (untracked) و سایر فایل‌های زائد را در دایرکتوری کاری چاپ می‌کند. .Sp پارامتر اختیاری .B \-f امکان حذف فایل‌ها علاوه بر چاپ آن‌ها را فراهم می‌کند. .IP "commit (or ci)" 4 .IX Item "commit (or ci)" تغییرات را در هر مخزن ثبت (commit) می‌کند. (به طور پیش‌فرض، هنگام استفاده از سیستم‌های توزیع‌شده مانند git، تغییرات به مخزن ریموت نیز ارسال/push می‌شوند. اگر این رفتار پیش‌فرض را نمی‌پسندید، می‌توانید آن را در ‎.mrconfig خود تغییر دهید یا در عوض از record استفاده کنید.) .Sp پارامتر اختیاری .B \-m امکان تعیین پیام کامیت را فراهم می‌کند. .IP record 4 .IX Item "record" تغییرات را در مخزن محلی ثبت می‌کند، اما آن‌ها را به مخزن ریموت ارسال (push) نمی‌کند. تنها برای سیستم‌های کنترل نسخه توزیع‌شده پشتیبانی می‌شود. .Sp پارامتر اختیاری .B \-m امکان تعیین پیام کامیت را فراهم می‌کند. .IP fetch 4 .IX Item "fetch" تغییرات را از مخزن ریموت هر مخزن واکشی (fetch) می‌کند، اما نسخه کاری (working copy) را به‌روزرسانی نمی‌کند. تنها برای برخی از سیستم‌های کنترل نسخه توزیع‌شده پشتیبانی می‌شود. .IP push 4 .IX Item "push" تغییرات کامیت‌شده محلی را به مخزن ریموت ارسال (push) می‌کند. برای سیستم‌های کنترل نسخه متمرکز یک عملیات بی‌اثر (no-op) است. .IP diff 4 .IX Item "diff" تغییرات ثبت‌نشده (diff) را نمایش می‌دهد. .IP log 4 .IX Item "log" تاریخچه کامیت‌ها (commit log) را نمایش می‌دهد. .IP "grep pattern" 4 .IX Item "grep pattern" با استفاده از زیردستور grep به دنبال یک الگو در هر مخزن می‌گردد. روی سیستم‌های کنترل نسخه‌ای که grep اختصاصی ندارند از ack یا ack-grep استفاده می‌کند. مقدار بازگشتی زیردستورهای grep را نادیده می‌گیرد تا بتوانید از \&\f(CW\*(C`mr \-m grep foo\*(C'\fR استفاده کنید و در مخازنی که تطابقی ندارند خروجی دریافت نکنید. .IP "run command [param ...]" 4 .IX Item "run command [param ...]" دستور مشخص‌شده را در هر مخزن اجرا می‌کند. .PP این دستورات نیز در دسترس هستند: .IP "bootstrap src [directory]" 4 .IX Item "bootstrap src [directory]" باعث می‌شود mr منبع \&\f(CW\*(C`src\*(C'\fR را دریافت کرده و از آن به عنوان یک فایل ‎.mrconfig برای دریافت (checkout) مخازن فهرست‌شده در آن به دایرکتوری مشخص‌شده استفاده کند. .Sp دستور \&\fBmr\fR چندین نوع منبع را شناسایی می‌کند: .RS 4 .IP "URL for curl" 4 .IX Item "URL for curl" پارامتر \&\f(CW\*(C`src\*(C'\fR می‌تواند یک نشانی اینترنتی قابل دریافت توسط \&\fBcurl\fR باشد. .IP "copy via ssh" 4 .IX Item "copy via ssh" برای استفاده از \&\fBscp\fR جهت دانلود، پارامتر \&\f(CW\*(C`src\*(C'\fR می‌تواند به صورت \&\f(CW\*(C`ssh://[user@]host:file\*(C'\fR باشد. .IP "local file" 4 .IX Item "local file" می‌توانید فایل پیکربندی را با روش‌های دیگر دریافت کرده و مسیر (\fBpath\fR) آن را به عنوان \&\f(CW\*(C`src\*(C'\fR ارسال کنید. .IP "standard input" 4 .IX Item "standard input" اگر منبع \&\f(CW\*(C`src\*(C'\fR تنها شامل یک خط تیره \&\f(CW\*(C`\-\*(C'\fR باشد، فایل پیکربندی از ورودی استاندارد خوانده می‌شود. .RE .RS 4 .Sp اگر دایرکتوری وجود نداشته باشد، ایجاد خواهد شد. چنانچه دایرکتوری مشخص نشود، دایرکتوری جاری استفاده می‌شود. .Sp به عنوان یک حالت خاص، اگر منبع \&\f(CW\*(C`src\*(C'\fR شامل مخزنی با نام "." باشد، آن مخزن در بالاترین سطح دایرکتوری مشخص‌شده checkout می‌شود. .RE .IP "list (or ls)" 4 .IX Item "list (or ls)" مخازنی را که mr روی آن‌ها عمل خواهد کرد فهرست می‌کند. .IP register 4 .IX Item "register" یک مخزن موجود را در یک فایل mrconfig ثبت می‌کند. به طور پیش‌فرض، مخزن موجود در دایرکتوری جاری ثبت می‌شود، یا می‌توانید دایرکتوری مورد نظر برای ثبت را مشخص کنید. .Sp فایل mrconfig که اصلاح می‌شود یا توسط گزینه .B \-c انتخاب می‌شود یا با جستجو برای نزدیک‌ترین فایل شناخته‌شده در دایرکتوری جاری یا یکی از والدین آن تعیین می‌گردد. .IP config 4 .IX Item "config" یک مقدار را از فایل mrconfig اضافه، ویرایش یا حذف می‌کند یا آن را چاپ می‌نماید. پارامتر بعدی نام بخشی است که مقدار در آن قرار دارد. برای افزودن یا ویرایش مقادیر، از یک یا چند نمونه "setting=value" استفاده کنید. از "setting=" برای حذف یک تنظیم استفاده کنید. برای دریافت مقدار یک تنظیم، صرفاً از "setting" استفاده کنید. .Sp برای مثال، برای افزودن (یا ویرایش) یک مخزن در src/foo: .Sp .Vb 1 \& mr config src/foo checkout="svn co svn://example.com/foo/trunk foo" .Ve .Sp برای نمایش دستوری که mr برای به‌روزرسانی مخزن در src/foo استفاده می‌کند: .Sp .Vb 1 \& mr config src/foo update .Ve .Sp برای مشاهده کتابخانه توابع داخلی شل موجود در mr: .Sp .Vb 1 \& mr config DEFAULT lib .Ve .Sp فایل mrconfig مورد استفاده یا توسط گزینه .B \-c انتخاب می‌شود یا با جستجو برای نزدیک‌ترین فایل شناخته‌شده در دایرکتوری جاری یا یکی از والدین آن تعیین می‌گردد. .IP offline 4 .IX Item "offline" به mr اعلام می‌کند که در حالت آفلاین قرار دارد. هر دستوری که در حالت آفلاین با شکست مواجه شود به خاطر سپرده شده و زمانی که به mr اعلام شود آنلاین است، دوباره اجرا خواهد شد. .IP online 4 .IX Item "online" به mr اعلام می‌کند که دوباره در حالت آنلاین قرار دارد. دستوراتی که در زمان حالت آفلاین ناموفق بوده‌اند مجدداً اجرا خواهند شد. .IP remember 4 .IX Item "remember" یک دستور را برای اجرای بعدی هنگام ورود مجدد mr به حالت آنلاین به خاطر می‌سپارد. این کار به طور ضمنی mr را در حالت آفلاین قرار می‌دهد. این دستور می‌تواند هر دستور معمولی mr باشد. این ویژگی زمانی مفید است که می‌دانید یک دستور به دلیل آفلاین بودن ناموفق خواهد بود، بنابراین اصلاً نمی‌خواهید اکنون آن را اجرا کنید، بلکه فقط می‌خواهید به خاطر بسپارد تا پس از آنلاین شدن مجدد اجرا شود. .IP help 4 .IX Item "help" این راهنما را نمایش می‌دهد. .PP نام اقدامات را می‌توان به هر زیررشته بدون ابهامی خلاصه کرد، بنابراین "mr st" معادل "mr status" و "mr up" معادل "mr update" است. .PP پارامترهای اضافی را می‌توان به اکثر دستورات ارسال کرد، که بدون تغییر به سیستم کنترل نسخه زیرین منتقل می‌شوند. این قابلیت عمدتاً زمانی مفید است که تمام مخازنی که mr روی آن‌ها عمل می‌کند از یک سیستم کنترل نسخه یکسان استفاده کنند. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .IP "\-d directory" 4 .IX Item "-d directory" .PD 0 .IP "\-\-directory directory" 4 .IX Item "--directory directory" .PD بالاترین دایرکتوری را که \&\fBmr\fR باید در آن کار کند مشخص می‌کند. مقدار پیش‌فرض، دایرکتوری کاری جاری است. .IP "\-c mrconfig" 4 .IX Item "-c mrconfig" .PD 0 .IP "\-\-config mrconfig" 4 .IX Item "--config mrconfig" .PD از فایل mrconfig مشخص‌شده استفاده می‌کند. حالت پیش‌فرض استفاده از \&\fI~/.mrconfig\fR و همچنین جستجو برای یک فایل \&\fI.mrconfig\fR در دایرکتوری جاری یا در یکی از دایرکتوری‌های والد آن است. .IP \-f 4 .IX Item "-f" .PD 0 .IP \-\-force 4 .IX Item "--force" .PD برنامه mr را وادار می‌کند تا روی مخازنی که معمولاً به دلیل پیکربندی‌شان نادیده گرفته می‌شدند نیز عمل کند. .IP \-\-force\-env 4 .IX Item "--force-env" برنامه mr را وادار به اجرا می‌کند حتی اگر متغیرهای محیطی بالقوه خطرناک مقداردهی شده باشند. .IP \-v 4 .IX Item "-v" .PD 0 .IP \-\-verbose 4 .IX Item "--verbose" .PD خروجی پرجزئیات و مشروح تولید می‌کند. .IP \-m 4 .IX Item "-m" .PD 0 .IP \-\-minimal 4 .IX Item "--minimal" .PD خروجی را به حداقل می‌رساند. اگر دستوری با شکست مواجه شود یا خروجی تولید کند، خروجی معمول نمایش داده خواهد شد. .IP \-q 4 .IX Item "-q" .PD 0 .IP \-\-quiet 4 .IX Item "--quiet" .PD حالت بی‌صدا. خروجی معمول mr و همچنین هرگونه خروجی حاصل از دستورات اجرا شده (از جمله خروجی خطای استاندارد stderr) را خاموش می‌کند. در صورت شکست یک دستور، خروجی آن نمایش داده خواهد شد. .IP \-k 4 .IX Item "-k" .PD 0 .IP \-\-insecure 4 .IX Item "--insecure" .PD پذیرش گواهی‌های نامعتبر یا تاییدنشده SSL هنگام عملیات راه‌اندازی اولیه (bootstrap). .IP \-s 4 .IX Item "-s" .PD 0 .IP \-\-stats 4 .IX Item "--stats" .PD خط آماری نمایش داده شده در پایان را گسترش می‌دهد تا شامل اطلاعاتی درباره این که دقیقاً کدام مخازن شکست خورده یا نادیده گرفته شده‌اند (در صورت وجود) باشد. .IP \-i 4 .IX Item "-i" .PD 0 .IP \-\-interactive 4 .IX Item "--interactive" .PD حالت تعاملی. اگر پردازش یک مخزن با شکست مواجه شود، یک زیرپوسته (subshell) آغاز می‌شود که می‌توانید از آن برای بررسی یا رفع مشکل استفاده کنید. برای ادامه اجرای mr از زیرپوسته خارج شوید. .IP "\-n [number]" 4 .IX Item "-n [number]" .PD 0 .IP "\-\-no\-recurse [number]" 4 .IX Item "--no-recurse [number]" .PD اگر عددی مشخص نشود، تنها روی مخزن دایرکتوری جاری عمل می‌کند و به صورت بازگشتی به مخازن عمیق‌تر وارد نمی‌شود. .Sp اگر عددی مشخص شود، حداکثر تا آن تعداد زیرشاخه به صورت بازگشتی وارد مخازن می‌شود. به عنوان مثال، با .B \-n 2 وارد ‎./src/foo می‌شود، اما وارد ‎./src/packages/bar نخواهد شد. .IP "\-j [number]" 4 .IX Item "-j [number]" .PD 0 .IP "\-\-jobs [number]" 4 .IX Item "--jobs [number]" .PD تعداد پردازش‌های مشخص‌شده را به صورت موازی اجرا می‌کند، یا در صورت عدم تعیین عدد، تعداد نامحدودی کار را موازی اجرا می‌نماید. این امر می‌تواند به طور چشمگیری سرعت عملیاتی نظیر به‌روزرسانی‌ها را افزایش دهد. استفاده از آن برای عملیات تعاملی توصیه نمی‌شود. .Sp توجه داشته باشید که اجرای بیش از ۱۰ کار به صورت همزمان احتمالاً با محدودیت‌های اتصال ssh تداخل پیدا می‌کند. اجرای بین ۳ تا ۵ کار همزمان سرعت مناسبی در به‌روزرسانی‌ها بدون تحمیل بار سنگین به سیستم فراهم می‌کند. .IP \-\-cache 4 .IX Item "--cache" خروجی دستورات و مقادیر بازگشتی را پس از اجرای هر دستور در فایل‌هایی درون درخت دایرکتوری \&\fI~/.mrcache/\fR ذخیره می‌کند. .Sp هنگام اجرا از زیردایرکتوری‌های یک مخزن نادیده گرفته می‌شود مگر اینکه \&\-\-top فعال باشد. .Sp این گزینه توسط افزونه شل \&\f(CW\*(C`cache\-mr\-status.sh\*(C'\fR استفاده می‌شود. .IP \-\-cached 4 .IX Item "--cached" برای مخازنی که حافظه موقت (کَش) آن‌ها پر شده است، به جای اجرای دستورات خروجی ذخیره‌شده را چاپ می‌کند. برای مخازنی با کَش خالی، دستورات را اجرا کرده و خروجی را در حافظه موقت ذخیره می‌کند. .Sp هنگام اجرا از زیردایرکتوری‌های یک مخزن نادیده گرفته می‌شود مگر اینکه \&\-\-top فعال باشد. .Sp این گزینه بیشتر زمانی کاربرد دارد که افزونه شل \&\f(CW\*(C`cache\-mr\-status.sh\*(C'\fR فعال شده باشد. .IP \-\-uncache 4 .IX Item "--uncache" برای مخازنی که حافظه موقت آن‌ها مقداردهی شده است، پیش از اجرای هر دستوری خروجی ذخیره‌شده را حذف می‌کند. .Sp این گزینه برای کاربران افزونه شل \&\f(CW\*(C`cache\-mr\-status.sh\*(C'\fR می‌تواند مفید باشد. .IP \-\-top 4 .IX Item "--top" هنگامی که از زیردایرکتوری‌های یک مخزن اجرا می‌شود، پیش از اجرای هر دستوری مسیر دایرکتوری را به بالاترین سطح (ریشه) مخزن تغییر می‌دهد. .Sp این گزینه توسط افزونه شل \&\f(CW\*(C`cache\-mr\-status.sh\*(C'\fR استفاده می‌شود. .IP \-t 4 .IX Item "-t" .PD 0 .IP \-\-trust\-all 4 .IX Item "--trust-all" .PD به تمامی فایل‌های mrconfig اعتماد می‌کند، حتی اگر در \&\fI~/.mrtrust\fR فهرست نشده باشند. با احتیاط استفاده شود. .IP \-p 4 .IX Item "-p" .PD 0 .IP \-\-path 4 .IX Item "--path" .PD این گزینه منسوخ‌شده نادیده گرفته می‌شود. .SH "فایل‌های پیکربندی (MRCONFIG FILES)" .IX Header "MRCONFIG FILES" در اینجا یک نمونه فایل \&\fI.mrconfig\fR آورده شده است: .PP .Vb 3 \& [src] \& checkout = svn checkout svn://svn.example.com/src/trunk src \& chain = true \& \& [src/linux\-2.6] \& checkout = git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux\-2.6.git && \& cd linux\-2.6 && \& git checkout \-b mybranch origin/master .Ve .PP فایل \&\fI.mrconfig\fR از گونه‌ای از قالب فایل INI استفاده می‌کند. خطوطی که با "#" شروع می‌شوند توضیح (کامنت) هستند. مقادیر را می‌توان با ایجاد تورفتگی (فاصله خالی) در خط بعدی ادامه داد. .PP بخش \&\f(CW\*(C`DEFAULT\*(C'\fR امکان تعیین مقادیر پیش‌فرض را برای بخش‌هایی که پس از آن می‌آیند فراهم می‌کند. .PP بخش \&\f(CW\*(C`ALIAS\*(C'\fR امکان افزودن نام مستعار (alias) برای اقدامات را فراهم می‌سازد. هر تنظیم یک نام مستعار است و مقدار آن همان اقدامی است که باید استفاده شود. .PP تمامی بخش‌های دیگر، مخازن را اضافه می‌کنند. هدر بخش، دایرکتوری محل قرارگیری مخزن را مشخص می‌کند. این مسیر نسبت به دایرکتوری حاوی فایل mrconfig سنجیده می‌شود، اما می‌توانید از مسیرهای مطلق نیز استفاده کنید. (توجه داشته باشید که می‌توانید از متغیرهای محیطی در نام بخش‌ها استفاده کنید؛ آن‌ها برای بسط داده شدن از شل عبور داده می‌شوند. برای مثال، \&\f(CW\*(C`[$HOSTNAME]\*(C'\fR یا \&\f(CW\*(C`[${HOSTNAME}foo]\*(C'\fR). .PP درون هر بخش، هر تنظیم یک دستور شل را برای اجرا جهت مدیریت یک اقدام خاص تعریف می‌کند. برنامه mr شامل گرداننده‌های پیش‌فرض برای "update"، "status"، "commit" و سایر اقدامات استاندارد است. .PP معمولاً تنها باید مشخص کنید که برای "checkout" چه کاری انجام شود. در اینجا دستوری را مشخص می‌کنید که برای ایجاد نسخه checkout از مخزن اجرا شود. این دستور در دایرکتوری والد اجرا می‌شود و باید دایرکتوری مخزن را ایجاد کند. بنابراین از \&\f(CW\*(C`git clone\*(C'\fR، \f(CW\*(C`svn checkout\*(C'\fR، \f(CW\*(C`bzr branch\*(C'\fR یا \&\f(CW\*(C`bzr checkout\*(C'\fR (برای شاخه‌های پیوندخورده) و غیره استفاده کنید. .PP توجه داشته باشید که این دستورات شل در محیط شل با \&\f(CW\*(C`set \-e\*(C'\fR اجرا می‌شوند، که در آن هر پارامتر اضافی ارسالی در \&\f(CW$@\fR در دسترس است. تمامی دستورات به جز "checkout" در داخل مخزن اجرا می‌شوند، هرچند لزوماً در بالاترین سطح آن نیستند. .PP متغیر محیطی \&\f(CW\*(C`MR_REPO\*(C'\fR روی مسیر بالاترین سطح مخزن تنظیم می‌شود. (برای اقدام "register"، متغیر "MR_REPO" در عوض روی نام پایه دایرکتوری که باید هنگام checkout مخزن ایجاد شود تنظیم می‌گردد.) .PP متغیر محیطی \&\f(CW\*(C`MR_CONFIG\*(C'\fR روی فایل ‎.mrconfig که مخزن در حال پردازش را تعریف می‌کند تنظیم می‌شود، یا چنانچه مخزن هنوز در یک فایل پیکربندی نباشد، روی فایل \&\fI.mrconfig\fR که باید برای ثبت مخزن اصلاح شود تنظیم می‌گردد. .PP متغیر محیطی \&\f(CW\*(C`MR_ACTION\*(C'\fR روی دستوری که در حال اجرا است (مانند update، checkout و غیره) تنظیم می‌شود. .PP چندین تنظیم دارای معانی خاصی هستند: .IP skip 4 .IX Item "skip" اگر "skip" تنظیم شده باشد و دستور آن مقدار درستی (true) برگرداند، آن‌گاه \&\fBmr\fR از انجام عملیات روی آن مخزن صرف‌نظر می‌کند. نام اقدام در \&\f(CW$1\fR به دستور ارسال می‌شود. .Sp در اینجا دو مثال آورده شده است. اولی از مخزن صرف‌نظر می‌کند مگر اینکه mr توسط joey اجرا شده باشد. دومی از تابع hours_since (موجود در کتابخانه داخلی mr) استفاده می‌کند تا از به‌روزرسانی مخزن صرف‌نظر کند مگر اینکه دست‌کم ۱۲ ساعت از آخرین به‌روزرسانی گذشته باشد. .Sp .Vb 3 \& [mystuff] \& checkout = ... \& skip = test \`whoami\` != joey \& \& [linux] \& checkout = ... \& skip = [ "$1" = update ] && ! hours_since "$1" 12 .Ve .Sp روش دیگر استفاده از skip برای دریافت تنبل (lazy checkout) است. این کار باعث می‌شود mr تا زمانی که مخزن از قبل وجود نداشته باشد، از کار بر روی آن صرف‌نظر کند. برای فعال‌سازی مخزن، باید صراحتاً آن را checkout کنید (با استفاده از "mr \-\-force \-d foo checkout"). .Sp .Vb 3 \& [foo] \& checkout = ... \& skip = lazy .Ve .IP order 4 .IX Item "order" تنظیم "order" می‌تواند برای لغو ترتیب پیش‌فرض مخازن استفاده شود. مقدار پیش‌فرض order برابر با ۱۰ است. از مقادیر کوچک‌تر برای پردازش زودتر مخازن و از مقادیر بزرگ‌تر برای پردازش دیرتر آن‌ها استفاده کنید. .Sp توجه داشته باشید اگر مخزنی در یک زیردایرکتوری از مخزن دیگری قرار دارد، تعیین ترتیب آن برای پردازش زودتر توصیه نمی‌شود. .IP chain 4 .IX Item "chain" اگر "chain" تنظیم شده باشد و دستور آن مقدار درستی برگرداند، آن‌گاه \&\fBmr\fR تلاش خواهد کرد یک فایل \&\fI.mrconfig\fR را از ریشه مخزن بارگذاری کند. .IP include 4 .IX Item "include" اگر "include" تنظیم شده باشد، دستور آن اجرا می‌شود و باید محتوای اضافی فایل mrconfig را در خروجی تولید کند. این محتوا به گونه‌ای گنجانده می‌شود که گویی بخشی از فایل دربرگیرنده بوده است. .Sp برخلاف سایر موارد، "include" نیازی ندارد که درون یک بخش قرار گیرد. .Sp دستور \&\fBmr\fR چندین کتابخانه را همراه خود ارائه می‌دهد که می‌توانند برای افزودن پشتیبانی از ابزارهای جانبی کنترل نسخه (مانند unison، git-svn، git-fake-bare و git-subtree) گنجانده شوند. برای افزودن همه آن‌ها می‌توانید از دستور زیر استفاده کنید: .Sp .Vb 1 \& include = cat /usr/share/mr/* .Ve .Sp برای جزئیات بیشتر به هر یک از فایل‌ها مراجعه کنید. .IP deleted 4 .IX Item "deleted" اگر "deleted" تنظیم شده باشد و دستور آن مقدار درستی برگرداند، آن‌گاه \&\fBmr\fR با مخزن به عنوان مخزن حذف‌شده رفتار می‌کند. این ابزار هرگز مخزن را واقعاً حذف نمی‌کند، اما اگر دایرکتوری مخزن را مشاهده کند هشدار خواهد داد. این قابلیت زمانی مفید است که یک فایل mrconfig میان چندین رایانه به اشتراک گذاشته شده باشد، تا وضعیت مخازن قدیمی ثبت شده و حذف آن‌ها فراموش نشود. .IP lib 4 .IX Item "lib" تنظیم "lib" می‌تواند شامل کدهای شل باشد که پیش از هر دستوری اجرا می‌شوند؛ این کار می‌تواند روشی سودمند برای تعریف توابع شل جهت استفاده در سایر دستورات باشد. .Sp برخلاف اکثر تنظیمات دیگر، این مورد را می‌توان چندین بار مشخص کرد، که در این صورت قطعات کد شل به صورت تجمعی به یکدیگر متصل می‌شوند. .IP fixups 4 .IX Item "fixups" اگر "fixups" تنظیم شده باشد، دستور آن هر زمان که یک مخزن checkout یا به‌روزرسانی (update) شود، اجرا می‌گردد. این کار روشی ساده برای انجام مواردی مانند اصلاح مجوزها یا سایر دستکاری‌ها روی محتوای مخزن، در هنگام تغییر مخزن فراهم می‌کند. .IP jobs 4 .IX Item "jobs" اگر "jobs" تنظیم شده باشد، تعداد پردازش‌های مشخص‌شده را به صورت موازی اجرا می‌کند. این امر می‌تواند به طور چشمگیری سرعت عملیاتی نظیر به‌روزرسانی‌ها را افزایش دهد. .Sp توجه داشته باشید که اجرای بیش از ۱۰ کار به صورت همزمان احتمالاً با محدودیت‌های اتصال ssh تداخل پیدا می‌کند. اجرای بین ۳ تا ۵ کار همزمان سرعت مناسبی در به‌روزرسانی‌ها بدون تحمیل بار سنگین به سیستم فراهم می‌کند. .IP VCS_action 4 .IX Item "VCS_action" هنگام جستجو برای دستوری جهت اجرای یک اقدام معین، mr ابتدا به دنبال تنظیمی با همان نام اقدام می‌گردد. اگر یافت نشد، به دنبال تنظیمی با نام "VCS_action" می‌گردد (که در آن نام سیستم کنترل نسخه و اقدام جایگزین می‌شود). اگر آن هم یافت نشد، به دنبال تنظیمی با نام "action_default" می‌گردد (که در آن نام اقدام جایگزین می‌شود). .Sp درون ساختار برنامه، mr تنظیماتی برای "git_update"، "svn_update" و غیره دارد. برای تغییر اقدامی که برای یک سیستم کنترل نسخه خاص انجام می‌شود، می‌توانید این اقدامات ویژه VCS را بازنویسی (override) کنید. برای افزودن یک سیستم کنترل نسخه جدید، می‌توانید اقدامات اختصاصی VCS را برای آن اضافه کنید. .IP "pre_ and post_" 4 .IX Item "pre_ and post_" اگر "pre_action" تنظیم شده باشد، دستور آن پیش از انجام اقدام مشخص‌شده توسط mr اجرا می‌شود. به همین ترتیب، دستورات "post_action" پس از اینکه mr اقدام مشخص‌شده را با موفقیت انجام داد اجرا می‌شوند. به عنوان مثال، "pre_commit" پیش از کامیت اجرا می‌شود؛ "post_update" پس از به‌روزرسانی اجرا می‌شود. .IP _prepend 4 .IX Item "_prepend" هر تنظیمی می‌تواند با پسوند \&\f(CW\*(C`_prepend\*(C'\fR همراه شود تا مقداری اضافی را به ابتدای مقدار موجود آن تنظیم بیفزاید. یک نویسه انتهای خط بین مقدار اضافی و مقدار موجود درج می‌شود. به این ترتیب، اقدامات را می‌توان به صورت تجمعی ساخت. .Sp این قابلیت برای اعمال دستورات تعدیل‌کننده مانند nice، ionice یا nocache مفید است. برای اعمال دستورات تعدیل‌کننده، مطمئن شوید که این پسوند را با نویسه ادامه خط در شل (کاراکتر بک‌اسلش \&\f(CW\*(C`\e\*(C'\fR در اکثر شل‌ها) پایان می‌دهید تا نویسه انتهای خط اضافه شده توسط این پسوند نادیده گرفته شود. .IP _append 4 .IX Item "_append" هر تنظیمی می‌تواند با پسوند \&\f(CW\*(C`_append\*(C'\fR همراه شود تا مقداری اضافی را به انتهای مقدار موجود آن تنظیم بیفزاید. نویسه‌های انتهای خط در پایان مقدار موجود و پس از مقدار اضافی درج می‌شوند. به این ترتیب، اقدامات را می‌توان به صورت تجمعی ساخت. .IP _default 4 .IX Item "_default" هر تنظیمی می‌تواند با پسوند \&\f(CW\*(C`_default\*(C'\fR همراه شود تا مقدار تنظیم را در صورتی که تنظیمی ویژه آن VCS یافت نشود، تعیین کند. این ویژگی عمدتاً برای بی‌اثر کردن اقدامات در اکثر سیستم‌های VCS استفاده می‌شود، به این صورت که action_default روی "true" تنظیم شده و سپس اقدام برای هر VCS که از آن پشتیبانی می‌کند مقداردهی می‌شود. .Sp این قابلیت توسط افزونه \&\f(CW\*(C`upgrade\*(C'\fR در mr استفاده می‌شود. .IP VCS_test 4 .IX Item "VCS_test" نام سیستم کنترل نسخه با اجرای هر اقدام تعریف‌شده "VCS_test" تعیین می‌شود تا زمانی که یکی از آن‌ها با موفقیت پایان یابد. .SH "فایل‌های غیرقابل اعتماد (UNTRUSTED MRCONFIG FILES)" .IX Header "UNTRUSTED MRCONFIG FILES" از آنجا که فایل‌های mrconfig می‌توانند شامل دستورات دلخواه شل باشند، قادر به انجام هر کاری هستند. این انعطاف‌پذیری خوب است، اما همچنین به یک فایل مخرب mrconfig اجازه می‌دهد کل دایرکتوری خانگی شما را حذف کند. چنین فایلی ممکن است درون مخزنی قرار داشته باشد که فایل اصلی \&\fI~/.mrconfig\fR شما آن را checkout می‌کند. برای جلوگیری از نگرانی در مورد دستورات مخرب در یک فایل mrconfig، برنامه mr به طور پیش‌فرض تمام فایل‌های mrconfig به جز فایل اصلی \&\fI~/.mrconfig\fR را در حالت غیرقابل اعتماد (untrusted mode) می‌خواند. در حالت غیرقابل اعتماد، فایل‌های mrconfig تنها مجاز به اجرای دستورات امن و شناخته‌شده (مانند "git clone") به شیوه‌ای کاملاً بررسی‌شده هستند. .PP برای پیکربندی mr جهت اعتماد به سایر فایل‌های mrconfig، آن‌ها را در \&\fI~/.mrtrust\fR فهرست کنید. در هر خط باید یک فایل mrconfig درج شود. یا باید مسیر کامل فایل ذکر شود، یا مسیر می‌تواند با \&\fI~/\fR آغاز شود تا فایلی نسبت به دایرکتوری خانگی شما مشخص گردد. .SH "فایل لاگ آفلاین (OFFLINE LOG FILE)" .IX Header "OFFLINE LOG FILE" فایل \&\fI~/.mrlog\fR شامل دستوراتی است که mr به دلیل آفلاین بودن به خاطر سپرده است تا بعداً اجرا کند. می‌توانید این فایل را حذف یا ویرایش کنید تا دستورات حذف شوند، یا حتی دستورات دیگری را برای اجرا توسط 'mr online' اضافه کنید. در صورت وجود این فایل، mr فرض می‌کند در حالت آفلاین قرار دارد. .SH "افزونه‌ها (EXTENSIONS)" .IX Header "EXTENSIONS" برنامه mr می‌تواند برای پشتیبانی از مواردی مانند unison و git-svn توسعه یابد. برخی فایل‌های ارائه‌دهنده چنین افزونه‌هایی در \&\fI/usr/share/mr/\fR موجود هستند. برخی از فایل‌های ارائه دهنده افزونه‌های شل mr در \&\fI/usr/share/mr.sh/\fR قرار دارند. برای جزئیات نحوه استفاده از آن‌ها به مستندات درون فایل‌ها مراجعه کنید. .SH "وضعیت خروج (EXIT STATUS)" .IX Header "EXIT STATUS" اگر دستوری در هر یک از مخازن با شکست مواجه شود، mr مقدار غیرصفر بازمی‌گرداند. .SH "نویسنده (AUTHOR)" .IX Header "AUTHOR" کپی‌رایت 2007\-2011 Joey Hess .PP تحت مجوز گنو GPL نسخه ۲ یا بالاتر. .PP