MR(1) mr MR(1) نام (NAME) mr - ابزاری برای مدیریت تمامی مخازن کنترل نسخه به صورت یکپارچه خلاصه دستور (SYNOPSIS) mr [options] checkout mr [options] update mr [options] status mr [options] clean [-f] mr [options] commit [-m "message"] mr [options] record [-m "message"] mr [options] fetch mr [options] push mr [options] diff mr [options] log mr [options] grep pattern mr [options] run command [param ...] mr [options] bootstrap src [directory] mr [options] register [repository] mr [options] config section ["setting=[value]" ...] mr [options] action [params ...] mr [options] [online|offline] mr [options] remember action [params ...] توضیحات (DESCRIPTION) دستور mr ابزاری برای مدیریت تمامی مخازن کنترل نسخه شما است. این ابزار می‌تواند عملیات checkout، به‌روزرسانی (update) یا سایر اقدامات را روی مجموعه‌ای از مخازن به گونه‌ای انجام دهد که گویی یک مخزن واحد و یکپارچه هستند. این برنامه از هر ترکیبی از مخازن Subversion، git، cvs، mercurial، bzr، darcs، fossil و veracity پشتیبانی می‌کند، و پشتیبانی از سایر سیستم‌های کنترل نسخه را نیز می‌توان به آسانی به آن افزود. دستور mr به تمامی مخازن ثبت‌شده در مسیر دایرکتوری کاری جاری شما یا زیرشاخه‌های آن وارد شده (cd) و روی آن‌ها عملیات انجام می‌دهد. یا چنانچه در یک زیردایرکتوری از مخزنی قرار داشته باشید که شامل هیچ مخزن ثبت‌شده دیگری نیست، در همان دایرکتوری می‌ماند و تنها بر روی همان مخزن کار می‌کند. پیکربندی mr توسط فایل‌های ‎.mrconfig انجام می‌شود که فهرست مخازن را در خود دارند. این ابزار کار خود را با خواندن فایل ‎.mrconfig در دایرکتوری خانگی (home) شما آغاز می‌کند، و این فایل به نوبه خود می‌تواند فایل‌های ‎.mrconfig دیگر را از درون مخازن به صورت زنجیره‌ای بارگذاری کند. همچنین به طور خودکار به دنبال فایل ‎.mrconfig در دایرکتوری جاری یا در یکی از دایرکتوری‌های والد آن می‌گردد. این دستورات از پیش تعریف‌شده برای کاربران هر سیستم کنترل نسخه‌ای آشنا خواهند بود: checkout (or co) مخازنی را که هنوز دریافت (checkout) نشده‌اند، دریافت می‌کند. update هر مخزن را از روی مخزن ریموت پیکربندی‌شده آن به‌روزرسانی می‌کند. اگر مخزنی هنوز دریافت نشده باشد، ابتدا آن را checkout می‌کند. status یک گزارش وضعیت برای هر مخزن نمایش می‌دهد، و نشان می‌دهد چه تغییرات ثبت‌نشده‌ای (uncommitted) در مخزن وجود دارد. برای سیستم‌های کنترل نسخه توزیع‌شده، شاخه‌های محلی ارسال‌نشده (unpushed) را نیز نمایش می‌دهد. clean فایل‌های نادیده‌گرفته‌شده (ignored)، فایل‌های ردیابی‌نشده (untracked) و سایر فایل‌های زائد را در دایرکتوری کاری چاپ می‌کند. پارامتر اختیاری -f امکان حذف فایل‌ها علاوه بر چاپ آن‌ها را فراهم می‌کند. commit (or ci) تغییرات را در هر مخزن ثبت (commit) می‌کند. (به طور پیش‌فرض، هنگام استفاده از سیستم‌های توزیع‌شده مانند git، تغییرات به مخزن ریموت نیز ارسال/push می‌شوند. اگر این رفتار پیش‌فرض را نمی‌پسندید، می‌توانید آن را در ‎.mrconfig خود تغییر دهید یا در عوض از record استفاده کنید.) پارامتر اختیاری -m امکان تعیین پیام کامیت را فراهم می‌کند. record تغییرات را در مخزن محلی ثبت می‌کند، اما آن‌ها را به مخزن ریموت ارسال (push) نمی‌کند. تنها برای سیستم‌های کنترل نسخه توزیع‌شده پشتیبانی می‌شود. پارامتر اختیاری -m امکان تعیین پیام کامیت را فراهم می‌کند. fetch تغییرات را از مخزن ریموت هر مخزن واکشی (fetch) می‌کند، اما نسخه کاری (working copy) را به‌روزرسانی نمی‌کند. تنها برای برخی از سیستم‌های کنترل نسخه توزیع‌شده پشتیبانی می‌شود. push تغییرات کامیت‌شده محلی را به مخزن ریموت ارسال (push) می‌کند. برای سیستم‌های کنترل نسخه متمرکز یک عملیات بی‌اثر (no-op) است. diff تغییرات ثبت‌نشده (diff) را نمایش می‌دهد. log تاریخچه کامیت‌ها (commit log) را نمایش می‌دهد. grep pattern با استفاده از زیردستور grep به دنبال یک الگو در هر مخزن می‌گردد. روی سیستم‌های کنترل نسخه‌ای که grep اختصاصی ندارند از ack یا ack-grep استفاده می‌کند. مقدار بازگشتی زیردستورهای grep را نادیده می‌گیرد تا بتوانید از "mr -m grep foo" استفاده کنید و در مخازنی که تطابقی ندارند خروجی دریافت نکنید. run command [param ...] دستور مشخص‌شده را در هر مخزن اجرا می‌کند. این دستورات نیز در دسترس هستند: bootstrap src [directory] باعث می‌شود mr منبع "src" را دریافت کرده و از آن به عنوان یک فایل ‎.mrconfig برای دریافت (checkout) مخازن فهرست‌شده در آن به دایرکتوری مشخص‌شده استفاده کند. دستور mr چندین نوع منبع را شناسایی می‌کند: URL for curl پارامتر "src" می‌تواند یک نشانی اینترنتی قابل دریافت توسط curl باشد. copy via ssh برای استفاده از scp جهت دانلود، پارامتر "src" می‌تواند به صورت "ssh://[user@]host:file" باشد. local file می‌توانید فایل پیکربندی را با روش‌های دیگر دریافت کرده و مسیر (path) آن را به عنوان "src" ارسال کنید. standard input اگر منبع "src" تنها شامل یک خط تیره "-" باشد، فایل پیکربندی از ورودی استاندارد خوانده می‌شود. اگر دایرکتوری وجود نداشته باشد، ایجاد خواهد شد. چنانچه دایرکتوری مشخص نشود، دایرکتوری جاری استفاده می‌شود. به عنوان یک حالت خاص، اگر منبع "src" شامل مخزنی با نام "." باشد، آن مخزن در بالاترین سطح دایرکتوری مشخص‌شده checkout می‌شود. list (or ls) مخازنی را که mr روی آن‌ها عمل خواهد کرد فهرست می‌کند. register یک مخزن موجود را در یک فایل mrconfig ثبت می‌کند. به طور پیش‌فرض، مخزن موجود در دایرکتوری جاری ثبت می‌شود، یا می‌توانید دایرکتوری مورد نظر برای ثبت را مشخص کنید. فایل mrconfig که اصلاح می‌شود یا توسط گزینه -c انتخاب می‌شود یا با جستجو برای نزدیک‌ترین فایل شناخته‌شده در دایرکتوری جاری یا یکی از والدین آن تعیین می‌گردد. config یک مقدار را از فایل mrconfig اضافه، ویرایش یا حذف می‌کند یا آن را چاپ می‌نماید. پارامتر بعدی نام بخشی است که مقدار در آن قرار دارد. برای افزودن یا ویرایش مقادیر، از یک یا چند نمونه "setting=value" استفاده کنید. از "setting=" برای حذف یک تنظیم استفاده کنید. برای دریافت مقدار یک تنظیم، صرفاً از "setting" استفاده کنید. برای مثال، برای افزودن (یا ویرایش) یک مخزن در src/foo: mr config src/foo checkout="svn co svn://example.com/foo/trunk foo" برای نمایش دستوری که mr برای به‌روزرسانی مخزن در src/foo استفاده می‌کند: mr config src/foo update برای مشاهده کتابخانه توابع داخلی شل موجود در mr: mr config DEFAULT lib فایل mrconfig مورد استفاده یا توسط گزینه -c انتخاب می‌شود یا با جستجو برای نزدیک‌ترین فایل شناخته‌شده در دایرکتوری جاری یا یکی از والدین آن تعیین می‌گردد. offline به mr اعلام می‌کند که در حالت آفلاین قرار دارد. هر دستوری که در حالت آفلاین با شکست مواجه شود به خاطر سپرده شده و زمانی که به mr اعلام شود آنلاین است، دوباره اجرا خواهد شد. online به mr اعلام می‌کند که دوباره در حالت آنلاین قرار دارد. دستوراتی که در زمان حالت آفلاین ناموفق بوده‌اند مجدداً اجرا خواهند شد. remember یک دستور را برای اجرای بعدی هنگام ورود مجدد mr به حالت آنلاین به خاطر می‌سپارد. این کار به طور ضمنی mr را در حالت آفلاین قرار می‌دهد. این دستور می‌تواند هر دستور معمولی mr باشد. این ویژگی زمانی مفید است که می‌دانید یک دستور به دلیل آفلاین بودن ناموفق خواهد بود، بنابراین اصلاً نمی‌خواهید اکنون آن را اجرا کنید، بلکه فقط می‌خواهید به خاطر بسپارد تا پس از آنلاین شدن مجدد اجرا شود. help این راهنما را نمایش می‌دهد. نام اقدامات را می‌توان به هر زیررشته بدون ابهامی خلاصه کرد، بنابراین "mr st" معادل "mr status" و "mr up" معادل "mr update" است. پارامترهای اضافی را می‌توان به اکثر دستورات ارسال کرد، که بدون تغییر به سیستم کنترل نسخه زیرین منتقل می‌شوند. این قابلیت عمدتاً زمانی مفید است که تمام مخازنی که mr روی آن‌ها عمل می‌کند از یک سیستم کنترل نسخه یکسان استفاده کنند. گزینه‌ها (OPTIONS) -d directory --directory directory بالاترین دایرکتوری را که mr باید در آن کار کند مشخص می‌کند. مقدار پیش‌فرض، دایرکتوری کاری جاری است. -c mrconfig --config mrconfig از فایل mrconfig مشخص‌شده استفاده می‌کند. حالت پیش‌فرض استفاده از ~/.mrconfig و همچنین جستجو برای یک فایل .mrconfig در دایرکتوری جاری یا در یکی از دایرکتوری‌های والد آن است. -f --force برنامه mr را وادار می‌کند تا روی مخازنی که معمولاً به دلیل پیکربندی‌شان نادیده گرفته می‌شدند نیز عمل کند. --force-env برنامه mr را وادار به اجرا می‌کند حتی اگر متغیرهای محیطی بالقوه خطرناک مقداردهی شده باشند. -v --verbose خروجی پرجزئیات و مشروح تولید می‌کند. -m --minimal خروجی را به حداقل می‌رساند. اگر دستوری با شکست مواجه شود یا خروجی تولید کند، خروجی معمول نمایش داده خواهد شد. -q --quiet حالت بی‌صدا. خروجی معمول mr و همچنین هرگونه خروجی حاصل از دستورات اجرا شده (از جمله خروجی خطای استاندارد stderr) را خاموش می‌کند. در صورت شکست یک دستور، خروجی آن نمایش داده خواهد شد. -k --insecure پذیرش گواهی‌های نامعتبر یا تاییدنشده SSL هنگام عملیات راه‌اندازی اولیه (bootstrap). -s --stats خط آماری نمایش داده شده در پایان را گسترش می‌دهد تا شامل اطلاعاتی درباره این که دقیقاً کدام مخازن شکست خورده یا نادیده گرفته شده‌اند (در صورت وجود) باشد. -i --interactive حالت تعاملی. اگر پردازش یک مخزن با شکست مواجه شود، یک زیرپوسته (subshell) آغاز می‌شود که می‌توانید از آن برای بررسی یا رفع مشکل استفاده کنید. برای ادامه اجرای mr از زیرپوسته خارج شوید. -n [number] --no-recurse [number] اگر عددی مشخص نشود، تنها روی مخزن دایرکتوری جاری عمل می‌کند و به صورت بازگشتی به مخازن عمیق‌تر وارد نمی‌شود. اگر عددی مشخص شود، حداکثر تا آن تعداد زیرشاخه به صورت بازگشتی وارد مخازن می‌شود. به عنوان مثال، با -n 2 وارد ‎./src/foo می‌شود، اما وارد ‎./src/packages/bar نخواهد شد. -j [number] --jobs [number] تعداد پردازش‌های مشخص‌شده را به صورت موازی اجرا می‌کند، یا در صورت عدم تعیین عدد، تعداد نامحدودی کار را موازی اجرا می‌نماید. این امر می‌تواند به طور چشمگیری سرعت عملیاتی نظیر به‌روزرسانی‌ها را افزایش دهد. استفاده از آن برای عملیات تعاملی توصیه نمی‌شود. توجه داشته باشید که اجرای بیش از ۱۰ کار به صورت همزمان احتمالاً با محدودیت‌های اتصال ssh تداخل پیدا می‌کند. اجرای بین ۳ تا ۵ کار همزمان سرعت مناسبی در به‌روزرسانی‌ها بدون تحمیل بار سنگین به سیستم فراهم می‌کند. --cache خروجی دستورات و مقادیر بازگشتی را پس از اجرای هر دستور در فایل‌هایی درون درخت دایرکتوری ~/.mrcache/ ذخیره می‌کند. هنگام اجرا از زیردایرکتوری‌های یک مخزن نادیده گرفته می‌شود مگر اینکه --top فعال باشد. این گزینه توسط افزونه شل "cache-mr-status.sh" استفاده می‌شود. --cached برای مخازنی که حافظه موقت (کَش) آن‌ها پر شده است، به جای اجرای دستورات خروجی ذخیره‌شده را چاپ می‌کند. برای مخازنی با کَش خالی، دستورات را اجرا کرده و خروجی را در حافظه موقت ذخیره می‌کند. هنگام اجرا از زیردایرکتوری‌های یک مخزن نادیده گرفته می‌شود مگر اینکه --top فعال باشد. این گزینه بیشتر زمانی کاربرد دارد که افزونه شل "cache-mr-status.sh" فعال شده باشد. --uncache برای مخازنی که حافظه موقت آن‌ها مقداردهی شده است، پیش از اجرای هر دستوری خروجی ذخیره‌شده را حذف می‌کند. این گزینه برای کاربران افزونه شل "cache-mr-status.sh" می‌تواند مفید باشد. --top هنگامی که از زیردایرکتوری‌های یک مخزن اجرا می‌شود، پیش از اجرای هر دستوری مسیر دایرکتوری را به بالاترین سطح (ریشه) مخزن تغییر می‌دهد. این گزینه توسط افزونه شل "cache-mr-status.sh" استفاده می‌شود. -t --trust-all به تمامی فایل‌های mrconfig اعتماد می‌کند، حتی اگر در ~/.mrtrust فهرست نشده باشند. با احتیاط استفاده شود. -p --path این گزینه منسوخ‌شده نادیده گرفته می‌شود. فایل‌های پیکربندی (MRCONFIG FILES) در اینجا یک نمونه فایل .mrconfig آورده شده است: [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 فایل .mrconfig از گونه‌ای از قالب فایل INI استفاده می‌کند. خطوطی که با "#" شروع می‌شوند توضیح (کامنت) هستند. مقادیر را می‌توان با ایجاد تورفتگی (فاصله خالی) در خط بعدی ادامه داد. بخش "DEFAULT" امکان تعیین مقادیر پیش‌فرض را برای بخش‌هایی که پس از آن می‌آیند فراهم می‌کند. بخش "ALIAS" امکان افزودن نام مستعار (alias) برای اقدامات را فراهم می‌سازد. هر تنظیم یک نام مستعار است و مقدار آن همان اقدامی است که باید استفاده شود. تمامی بخش‌های دیگر، مخازن را اضافه می‌کنند. هدر بخش، دایرکتوری محل قرارگیری مخزن را مشخص می‌کند. این مسیر نسبت به دایرکتوری حاوی فایل mrconfig سنجیده می‌شود، اما می‌توانید از مسیرهای مطلق نیز استفاده کنید. (توجه داشته باشید که می‌توانید از متغیرهای محیطی در نام بخش‌ها استفاده کنید؛ آن‌ها برای بسط داده شدن از شل عبور داده می‌شوند. برای مثال، "[$HOSTNAME]" یا "[${HOSTNAME}foo]"). درون هر بخش، هر تنظیم یک دستور شل را برای اجرا جهت مدیریت یک اقدام خاص تعریف می‌کند. برنامه mr شامل گرداننده‌های پیش‌فرض برای "update"، "status"، "commit" و سایر اقدامات استاندارد است. معمولاً تنها باید مشخص کنید که برای "checkout" چه کاری انجام شود. در اینجا دستوری را مشخص می‌کنید که برای ایجاد نسخه checkout از مخزن اجرا شود. این دستور در دایرکتوری والد اجرا می‌شود و باید دایرکتوری مخزن را ایجاد کند. بنابراین از "git clone"، "svn checkout"، "bzr branch" یا "bzr checkout" (برای شاخه‌های پیوندخورده) و غیره استفاده کنید. توجه داشته باشید که این دستورات شل در محیط شل با "set -e" اجرا می‌شوند، که در آن هر پارامتر اضافی ارسالی در $@ در دسترس است. تمامی دستورات به جز "checkout" در داخل مخزن اجرا می‌شوند، هرچند لزوماً در بالاترین سطح آن نیستند. متغیر محیطی "MR_REPO" روی مسیر بالاترین سطح مخزن تنظیم می‌شود. (برای اقدام "register"، متغیر "MR_REPO" در عوض روی نام پایه دایرکتوری که باید هنگام checkout مخزن ایجاد شود تنظیم می‌گردد.) متغیر محیطی "MR_CONFIG" روی فایل ‎.mrconfig که مخزن در حال پردازش را تعریف می‌کند تنظیم می‌شود، یا چنانچه مخزن هنوز در یک فایل پیکربندی نباشد، روی فایل .mrconfig که باید برای ثبت مخزن اصلاح شود تنظیم می‌گردد. متغیر محیطی "MR_ACTION" روی دستوری که در حال اجرا است (مانند update، checkout و غیره) تنظیم می‌شود. چندین تنظیم دارای معانی خاصی هستند: skip اگر "skip" تنظیم شده باشد و دستور آن مقدار درستی (true) برگرداند، آن‌گاه mr از انجام عملیات روی آن مخزن صرف‌نظر می‌کند. نام اقدام در $1 به دستور ارسال می‌شود. در اینجا دو مثال آورده شده است. اولی از مخزن صرف‌نظر می‌کند مگر اینکه mr توسط joey اجرا شده باشد. دومی از تابع hours_since (موجود در کتابخانه داخلی mr) استفاده می‌کند تا از به‌روزرسانی مخزن صرف‌نظر کند مگر اینکه دست‌کم ۱۲ ساعت از آخرین به‌روزرسانی گذشته باشد. [mystuff] checkout = ... skip = test `whoami` != joey [linux] checkout = ... skip = [ "$1" = update ] && ! hours_since "$1" 12 روش دیگر استفاده از skip برای دریافت تنبل (lazy checkout) است. این کار باعث می‌شود mr تا زمانی که مخزن از قبل وجود نداشته باشد، از کار بر روی آن صرف‌نظر کند. برای فعال‌سازی مخزن، باید صراحتاً آن را checkout کنید (با استفاده از "mr --force -d foo checkout"). [foo] checkout = ... skip = lazy order تنظیم "order" می‌تواند برای لغو ترتیب پیش‌فرض مخازن استفاده شود. مقدار پیش‌فرض order برابر با ۱۰ است. از مقادیر کوچک‌تر برای پردازش زودتر مخازن و از مقادیر بزرگ‌تر برای پردازش دیرتر آن‌ها استفاده کنید. توجه داشته باشید اگر مخزنی در یک زیردایرکتوری از مخزن دیگری قرار دارد، تعیین ترتیب آن برای پردازش زودتر توصیه نمی‌شود. chain اگر "chain" تنظیم شده باشد و دستور آن مقدار درستی برگرداند، آن‌گاه mr تلاش خواهد کرد یک فایل .mrconfig را از ریشه مخزن بارگذاری کند. include اگر "include" تنظیم شده باشد، دستور آن اجرا می‌شود و باید محتوای اضافی فایل mrconfig را در خروجی تولید کند. این محتوا به گونه‌ای گنجانده می‌شود که گویی بخشی از فایل دربرگیرنده بوده است. برخلاف سایر موارد، "include" نیازی ندارد که درون یک بخش قرار گیرد. دستور mr چندین کتابخانه را همراه خود ارائه می‌دهد که می‌توانند برای افزودن پشتیبانی از ابزارهای جانبی کنترل نسخه (مانند unison، git- svn، git-fake-bare و git-subtree) گنجانده شوند. برای افزودن همه آن‌ها می‌توانید از دستور زیر استفاده کنید: include = cat /usr/share/mr/* برای جزئیات بیشتر به هر یک از فایل‌ها مراجعه کنید. deleted اگر "deleted" تنظیم شده باشد و دستور آن مقدار درستی برگرداند، آن‌گاه mr با مخزن به عنوان مخزن حذف‌شده رفتار می‌کند. این ابزار هرگز مخزن را واقعاً حذف نمی‌کند، اما اگر دایرکتوری مخزن را مشاهده کند هشدار خواهد داد. این قابلیت زمانی مفید است که یک فایل mrconfig میان چندین رایانه به اشتراک گذاشته شده باشد، تا وضعیت مخازن قدیمی ثبت شده و حذف آن‌ها فراموش نشود. lib تنظیم "lib" می‌تواند شامل کدهای شل باشد که پیش از هر دستوری اجرا می‌شوند؛ این کار می‌تواند روشی سودمند برای تعریف توابع شل جهت استفاده در سایر دستورات باشد. برخلاف اکثر تنظیمات دیگر، این مورد را می‌توان چندین بار مشخص کرد، که در این صورت قطعات کد شل به صورت تجمعی به یکدیگر متصل می‌شوند. fixups اگر "fixups" تنظیم شده باشد، دستور آن هر زمان که یک مخزن checkout یا به‌روزرسانی (update) شود، اجرا می‌گردد. این کار روشی ساده برای انجام مواردی مانند اصلاح مجوزها یا سایر دستکاری‌ها روی محتوای مخزن، در هنگام تغییر مخزن فراهم می‌کند. jobs اگر "jobs" تنظیم شده باشد، تعداد پردازش‌های مشخص‌شده را به صورت موازی اجرا می‌کند. این امر می‌تواند به طور چشمگیری سرعت عملیاتی نظیر به‌روزرسانی‌ها را افزایش دهد. توجه داشته باشید که اجرای بیش از ۱۰ کار به صورت همزمان احتمالاً با محدودیت‌های اتصال ssh تداخل پیدا می‌کند. اجرای بین ۳ تا ۵ کار همزمان سرعت مناسبی در به‌روزرسانی‌ها بدون تحمیل بار سنگین به سیستم فراهم می‌کند. VCS_action هنگام جستجو برای دستوری جهت اجرای یک اقدام معین، mr ابتدا به دنبال تنظیمی با همان نام اقدام می‌گردد. اگر یافت نشد، به دنبال تنظیمی با نام "VCS_action" می‌گردد (که در آن نام سیستم کنترل نسخه و اقدام جایگزین می‌شود). اگر آن هم یافت نشد، به دنبال تنظیمی با نام "action_default" می‌گردد (که در آن نام اقدام جایگزین می‌شود). درون ساختار برنامه، mr تنظیماتی برای "git_update"، "svn_update" و غیره دارد. برای تغییر اقدامی که برای یک سیستم کنترل نسخه خاص انجام می‌شود، می‌توانید این اقدامات ویژه VCS را بازنویسی (override) کنید. برای افزودن یک سیستم کنترل نسخه جدید، می‌توانید اقدامات اختصاصی VCS را برای آن اضافه کنید. pre_ and post_ اگر "pre_action" تنظیم شده باشد، دستور آن پیش از انجام اقدام مشخص‌شده توسط mr اجرا می‌شود. به همین ترتیب، دستورات "post_action" پس از اینکه mr اقدام مشخص‌شده را با موفقیت انجام داد اجرا می‌شوند. به عنوان مثال، "pre_commit" پیش از کامیت اجرا می‌شود؛ "post_update" پس از به‌روزرسانی اجرا می‌شود. _prepend هر تنظیمی می‌تواند با پسوند "_prepend" همراه شود تا مقداری اضافی را به ابتدای مقدار موجود آن تنظیم بیفزاید. یک نویسه انتهای خط بین مقدار اضافی و مقدار موجود درج می‌شود. به این ترتیب، اقدامات را می‌توان به صورت تجمعی ساخت. این قابلیت برای اعمال دستورات تعدیل‌کننده مانند nice، ionice یا nocache مفید است. برای اعمال دستورات تعدیل‌کننده، مطمئن شوید که این پسوند را با نویسه ادامه خط در شل (کاراکتر بک‌اسلش "\" در اکثر شل‌ها) پایان می‌دهید تا نویسه انتهای خط اضافه شده توسط این پسوند نادیده گرفته شود. _append هر تنظیمی می‌تواند با پسوند "_append" همراه شود تا مقداری اضافی را به انتهای مقدار موجود آن تنظیم بیفزاید. نویسه‌های انتهای خط در پایان مقدار موجود و پس از مقدار اضافی درج می‌شوند. به این ترتیب، اقدامات را می‌توان به صورت تجمعی ساخت. _default هر تنظیمی می‌تواند با پسوند "_default" همراه شود تا مقدار تنظیم را در صورتی که تنظیمی ویژه آن VCS یافت نشود، تعیین کند. این ویژگی عمدتاً برای بی‌اثر کردن اقدامات در اکثر سیستم‌های VCS استفاده می‌شود، به این صورت که action_default روی "true" تنظیم شده و سپس اقدام برای هر VCS که از آن پشتیبانی می‌کند مقداردهی می‌شود. این قابلیت توسط افزونه "upgrade" در mr استفاده می‌شود. VCS_test نام سیستم کنترل نسخه با اجرای هر اقدام تعریف‌شده "VCS_test" تعیین می‌شود تا زمانی که یکی از آن‌ها با موفقیت پایان یابد. فایل‌های غیرقابل اعتماد (UNTRUSTED MRCONFIG FILES) از آنجا که فایل‌های mrconfig می‌توانند شامل دستورات دلخواه شل باشند، قادر به انجام هر کاری هستند. این انعطاف‌پذیری خوب است، اما همچنین به یک فایل مخرب mrconfig اجازه می‌دهد کل دایرکتوری خانگی شما را حذف کند. چنین فایلی ممکن است درون مخزنی قرار داشته باشد که فایل اصلی ~/.mrconfig شما آن را checkout می‌کند. برای جلوگیری از نگرانی در مورد دستورات مخرب در یک فایل mrconfig، برنامه mr به طور پیش‌فرض تمام فایل‌های mrconfig به جز فایل اصلی ~/.mrconfig را در حالت غیرقابل اعتماد (untrusted mode) می‌خواند. در حالت غیرقابل اعتماد، فایل‌های mrconfig تنها مجاز به اجرای دستورات امن و شناخته‌شده (مانند "git clone") به شیوه‌ای کاملاً بررسی‌شده هستند. برای پیکربندی mr جهت اعتماد به سایر فایل‌های mrconfig، آن‌ها را در ~/.mrtrust فهرست کنید. در هر خط باید یک فایل mrconfig درج شود. یا باید مسیر کامل فایل ذکر شود، یا مسیر می‌تواند با ~/ آغاز شود تا فایلی نسبت به دایرکتوری خانگی شما مشخص گردد. فایل لاگ آفلاین (OFFLINE LOG FILE) فایل ~/.mrlog شامل دستوراتی است که mr به دلیل آفلاین بودن به خاطر سپرده است تا بعداً اجرا کند. می‌توانید این فایل را حذف یا ویرایش کنید تا دستورات حذف شوند، یا حتی دستورات دیگری را برای اجرا توسط 'mr online' اضافه کنید. در صورت وجود این فایل، mr فرض می‌کند در حالت آفلاین قرار دارد. افزونه‌ها (EXTENSIONS) برنامه mr می‌تواند برای پشتیبانی از مواردی مانند unison و git-svn توسعه یابد. برخی فایل‌های ارائه‌دهنده چنین افزونه‌هایی در /usr/share/mr/ موجود هستند. برخی از فایل‌های ارائه دهنده افزونه‌های شل mr در /usr/share/mr.sh/ قرار دارند. برای جزئیات نحوه استفاده از آن‌ها به مستندات درون فایل‌ها مراجعه کنید. وضعیت خروج (EXIT STATUS) اگر دستوری در هر یک از مخازن با شکست مواجه شود، mr مقدار غیرصفر بازمی‌گرداند. نویسنده (AUTHOR) کپی‌رایت 2007-2011 Joey Hess تحت مجوز گنو GPL نسخه ۲ یا بالاتر. perl v5.38.2 2024-07-04 MR(1)