quilt(1) General Commands Manual quilt(1)

quilt - مدیریت مجموعه‌ای از وصله‌ها

quilt [--quiltrc file] [--trace] command [options]
quilt [command] -h
quilt --version

Quilt ابزاری برای مدیریت مجموعه‌های بزرگ وصله با ثبت و پیگیری تغییراتی است که هر وصله ایجاد می‌کند. وصله‌ها را می‌توان اعمال کرد، واگردانی کرد، تازه‌سازی کرد و مانند آن. مفهوم بنیادین فلسفی آن این است که مادهٔ کاری اصلی شما، خودِ وصله‌ها هستند.

در quilt، تمام کارها درون یک درخت دایرکتوری واحد انجام می‌شود. دستورها را می‌توان از هر کجای درخت کد منبع اجرا کرد. همانند CVS، Subversion، یا Git، ابزار quilt دستورهایی به شکل “quilt command” می‌پذیرد. یک دستور را می‌توان تا زمانی که بخش مشخص‌شدهٔ آن بدون ابهام باشد، کوتاه (مخفف) کرد. اگر command بیش از حد کوتاه و دارای ابهام باشد، quilt همهٔ دستورهای منطبق با آن پیشوند را فهرست کرده و خارج می‌شود. همهٔ دستورها در صورت دریافت گزینهٔ “-h”، یک پیام راهنمای مختصر متناسب با زمینه نمایش داده و خارج می‌شوند.

Quilt یک پشته از وصله‌ها را مدیریت می‌کند. وصله‌ها به‌صورت افزایشی بر روی درخت پایه و همهٔ وصله‌های قبلی اعمال می‌شوند. می‌توان آن‌ها را روی پشته قرار داد (“quilt push”) و از روی پشته برداشت (“quilt pop”). دستورهایی برای پرس‌وجوی محتویات پشته (“quilt applied”، “quilt previous”، “quilt top”) و وصله‌هایی که در یک لحظهٔ خاص اعمال نشده‌اند (“quilt next”، “quilt unapplied”) در دسترس هستند. به‌طور پیش‌فرض، بیشتر دستورها روی بالاترین وصلهٔ موجود در پشته اعمال می‌شوند.

فایل‌های وصله در زیردایرکتوری patches درخت کد منبع قرار دارند (به Example of working tree، در بخش FILES، در زیر مراجعه کنید). متغیر محیطی QUILT_PATCHES این مکان پیش‌فرض را لغو (بازنویسی) می‌کند. در صورتی که در دایرکتوری جاری پیدا نشود، آن زیردایرکتوری به‌صورت بازگشتی در دایرکتوری‌های والد جستجو می‌شود (این رفتار شبیه به روشی است که Git برای یافتن فایل‌های پیکربندی خود استفاده می‌کند). دایرکتوری patches می‌تواند شامل زیردایرکتوری‌هایی باشد. همچنین می‌تواند به‌جای یک دایرکتوری، یک پیوند نمادین باشد.

Quilt فایلی به نام series ایجاد و نگهداری می‌کند که ترتیب اعمال وصله‌ها را مشخص می‌سازد. متغیر محیطی QUILT_SERIES این نام پیش‌فرض را لغو (بازنویسی) می‌کند. می‌توانید در هر زمان محتویات فایل series را با “quilt series” بررسی کنید. در این فایل، نام هر فایل وصله در یک سطر جداگانه قرار دارد. فایل‌های وصله با مسیرهای نسبی نسبت به دایرکتوری patches مشخص می‌شوند؛ وصله‌ها ممکن است در زیردایرکتوری‌های درون این دایرکتوری قرار داشته باشند. سطرهایی از فایل series که با نویسهٔ هش (#) آغاز می‌شوند، نادیده گرفته می‌شوند. گزینه‌های وصله، مانند سطح حذف مسیر (strip level) یا معکوس بودن وصله، را می‌توان پس از نام هر فایل وصله اضافه کرد. گزینه‌ها با یک فاصله شروع می‌شوند، با فاصله از هم جدا می‌شوند و از نحو گزینه‌های patch(1) پیروی می‌کنند (برای مثال، “-p2”). هنگامی که دستوری با پشتیبانی از این گزینه‌ها استفاده شود، Quilt آن‌ها را به‌طور خودکار ثبت می‌کند. بدون مشخص کردن گزینه‌ها، سطح حذف مسیر 1 (strip level 1) فرض می‌شود. همچنین می‌توانید پس از نام فایل وصله و گزینه‌ها، با درج یک فاصله و به دنبال آن نویسهٔ هش، یک توضیح اضافه کنید. هنگامی که quilt وصله‌ای را اضافه، حذف یا تغییر نام می‌دهد، فایل series را به‌طور خودکار به‌روزرسانی می‌کند. کاربران quilt می‌توانند فایل‌های series را در حالی که برخی وصله‌ها اعمال شده‌اند تغییر دهند، مشروط بر آنکه وصله‌های اعمال‌شده در ترتیب اولیهٔ خود باقی بمانند. مگر در حالتی که سازوکاری برای تولید خودکار فایل series وجود داشته باشد، باید آن را به همراه هر مجموعه‌ای از وصله‌های مدیریت‌شده با quilt که توزیع می‌کنید، ارائه دهید. می‌توان از فایل‌های series مختلفی برای ترکیب وصله‌ها به روش‌های گوناگون استفاده کرد که (به‌عنوان مثال) متناظر با شاخه‌های توسعهٔ مختلف هستند.

پیش از اعمال یک وصله، رونوشت‌هایی از تمام فایل‌هایی که وصله تغییر می‌دهد در دایرکتوری .pc/patch-name ذخیره می‌شوند، که در آن patch-name نام وصله است (برای مثال، fix-buffer-overflow.patch). وصله به فهرست وصله‌های در حال حاضر اعمال‌شده (.pc/applied-patches) اضافه می‌شود. سپس، هنگامی که یک وصله بازتولید می‌شود (“quilt refresh”)، نسخه‌های پشتیبان موجود در .pc/patch-name با استفاده از GNU diff(1) با نسخه‌های فعلی فایل‌ها در درخت کد منبع مقایسه می‌شوند.

فرآیند مشابهی هنگام ایجاد یک وصلهٔ جدید (“quilt new”) رخ می‌دهد؛ نام فایل وصلهٔ جدید به فایل series اضافه می‌شود. فایلی که قرار است توسط وصله تغییر کند پشتیبان‌گیری شده و برای ویرایش باز می‌شود (“quilt edit”). پس از ویرایش، اثر تغییرات خود را بررسی کنید (“quilt diff”)؛ تغییرات تا زمانی که “quilt refresh” را برای نوشتن آن‌ها در فایل وصله فراخوانی نکنید، به‌صورت محلی در درخت کاری شما باقی می‌مانند.

مستندات مربوط به یک وصله را می‌توان در ابتدای فایل وصله قرار داد (“quilt header”). Quilt هنگام انجام تازه‌سازی، دقت می‌کند تا تمام متن‌های پیش از وصلهٔ اصلی حفظ شوند. (این قابلیت محدود به وصله‌ها در قالب یکپارچه است؛ به راهنمای GNU Diffutils مراجعه کنید.)

فایل series در دایرکتوری .pc ، در ریشهٔ درخت کد منبع، و در دایرکتوری patches جستجو می‌شود. نخستین فایل series که پیدا شود مورد استفاده قرار می‌گیرد. این فایل همچنین می‌تواند یک پیوند نمادین، یا فایلی با چندین پیوند سخت باشد. معمولاً تنها از یک فایل series برای یک مجموعه از وصله‌ها استفاده می‌شود، که زیردایرکتوری patches را به مکانی مناسب برای آن تبدیل می‌کند.

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

یک یا چند فایل را به بالاترین پچ یا پچ مشخص‌شده اضافه می‌کند. فایل‌ها باید پیش از تغییر یافتن به پچ افزوده شوند. فایل‌هایی که توسط پچ‌های اعمال‌شده بالاتر از پچ مشخص‌شده تغییر کرده‌اند را نمی‌توان اضافه کرد.

پچی که فایل‌ها باید به آن افزوده شوند.

چاپ یک فهرست حاشیه‌نویسی‌شده از فایل مشخص‌شده که نشان می‌دهد کدام پچ‌ها کدام خطوط را تغییر می‌دهند. تنها پچ‌های اعمال‌شده گنجانده می‌شوند.

توقف بررسی تغییرات در پچ مشخص‌شده به جای بالاترین پچ.

چاپ فهرستی از پچ‌های اعمال‌شده، یا تمام پچ‌ها تا و خود پچ مشخص‌شده در فایل series.

حذف پچ مشخص‌شده یا بالاترین پچ از فایل series. اگر پچ اعمال شده باشد، quilt ابتدا تلاش می‌کند آن را واگردانی کند. (در حال حاضر تنها بالاترین پچ می‌تواند حذف شود.)

حذف پچ بعدی پس از بالاترین پچ، به جای پچ مشخص‌شده یا بالاترین پچ.
حذف فایل پچ پاک‌شده از دایرکتوری patches نیز انجام شود.

تغییر نام فایل پچ به patch~ به جای حذف آن. در صورتی که با `-r' استفاده نشود نادیده گرفته می‌شود.

تولید یک diff از فایل(های) مشخص‌شده در بالاترین پچ یا پچ مشخص‌شده. اگر هیچ فایلی مشخص نشود، تمام فایل‌هایی که تغییر یافته‌اند گنجانده می‌شوند.

ایجاد یک پچ به سبک -p n (حالت‌های -p0 یا -p1 پشتیبانی می‌شوند).
ایجاد یک پچ به سبک -p1، اما استفاده از a/file و b/file به عنوان نام‌های فایل اصلی و جدید به جای نام‌های پیش‌فرض dir.orig/file و dir/file.

ایجاد یک diff یکپارچه (-u, -U) با num خط زمینه (context). ایجاد یک diff زمینه‌ای (-c, -C) با num خط زمینه. تعداد خطوط زمینه به طور پیش‌فرض ۳ است.

مهرهای زمانی (timestamps) فایل در سرآیند پچ گنجانده نشوند.

خطوط Index: در خروجی درج نشوند.

نوشتن تغییراتی که نسبت به بالاترین پچ یا پچ مشخص‌شده انجام شده‌اند در خروجی استاندارد.
ایجاد یک diff معکوس.

ایجاد یک diff برای پچ مشخص‌شده. (به طور پیش‌فرض بالاترین پچ.)

ایجاد یک diff ترکیبی برای تمام پچ‌های بین این پچ و پچ مشخص‌شده با -P. نام پچ `-' معادل مشخص کردن اولین پچ اعمال‌شده است.

گرفتن diff در برابر snapshot (دستور `quilt snapshot -h' را ببینید).

استفاده از ابزار مشخص‌شده برای تولید diff. این ابزار با نام فایل‌های اصلی و جدید به عنوان آرگومان فراخوانی می‌شود.

استفاده از رنگ‌آمیزی نحوی (حالت auto تنها زمانی آن را فعال می‌کند که خروجی یک tty باشد).

مرتب‌سازی فایل‌ها بر اساس نام آن‌ها به جای حفظ ترتیب اولیه.

ویرایش فایل(های) مشخص‌شده در $EDITOR پس از افزودن آن(ها) به بالاترین پچ.

چاپ فهرست فایل‌هایی که بالاترین پچ یا پچ مشخص‌شده تغییر می‌دهد.

فهرست کردن تمام فایل‌ها در تمام پچ‌های اعمال‌شده.
افزودن نام پچ به خروجی.
خروجی پرگوتر و کاربرپسندتر.

ایجاد فهرستی برای تمام پچ‌های بین این پچ و بالاترین یا پچ مشخص‌شده. نام پچ `-' معادل مشخص کردن اولین پچ اعمال‌شده است.

ادغام پچ خوانده‌شده از ورودی استاندارد در بالاترین پچ: پس از اطمینان از اینکه تمام فایل‌های تغییریافته بخشی از بالاترین پچ هستند، پچ با سطح برش (strip level) مشخص‌شده (که به طور پیش‌فرض ۱ است) اعمال می‌شود.

اعمال پچ به صورت معکوس.
عملیات بی‌صدا.
اعمال اجباری، حتی اگر پچ دارای ردشدگی (rejects) باشد. مگر در حالت بی‌صدا، پچ به صورت تعاملی اعمال می‌شود: ابزار patch ممکن است سوالاتی بپرسد.

تعداد اجزای مسیر (pathname components) که باید هنگام اعمال فایل پچ از نام فایل‌ها حذف شوند.

انشعاب (fork) بالاترین پچ. انشعاب یک پچ به معنی ایجاد یک نسخه رونوشت دقیق از آن تحت یک نام جدید است، و استفاده از آن نام جدید به جای نسخه اصلی در series فعلی. این امر زمانی مفید است که یک پچ باید تغییر داده شود، اما نسخه اصلی آن باید حفظ شود، مثلاً به این دلیل که در series دیگری استفاده شده یا برای حفظ تاریخچه. یک توالی معمول از دستورها عبارت است از: fork، edit، refresh.

اگر new_name تعیین نشود، نام پچ منشعب‌شده همان نام پچ فعلی به همراه `-2' خواهد بود. اگر نام پچ از قبل با یک خط تیره و عدد پایان یابد، عدد آن افزایش می‌یابد (مثلاً patch.diff، patch-2.diff، patch-3.diff).

تولید یک گراف جهت‌دار dot(1) که وابستگی‌های بین پچ‌های اعمال‌شده را نشان می‌دهد. یک پچ به پچ دیگری وابسته است اگر هر دو یک فایل را تغییر دهند، یا با گزینه --lines، در صورتی که تغییرات آن‌ها هم‌پوشانی داشته باشد. مگر اینکه خلاف آن مشخص شده باشد، گراف شامل تمام پچ‌هایی است که بالاترین پچ به آن‌ها وابسته است. هنگامی که نام یک پچ به جای بالاترین پچ مشخص شود، یک گراف برای پچ مشخص‌شده ایجاد می‌شود. این گراف شامل تمام پچ‌های دیگر خواهد بود که این پچ به آن‌ها وابسته است، و همچنین تمام پچ‌هایی که به این پچ وابسته‌اند.

تولید گرافی شامل تمام پچ‌های اعمال‌شده و وابستگی‌های آن‌ها. (پچ‌های اعمال‌نشده گنجانده نمی‌شوند.)

حذف یال‌های متعدی (transitive edges) از گراف.

محاسبه وابستگی‌ها با بررسی خطوطی که پچ‌ها تغییر می‌دهند. مگر اینکه مقدار num متفاوتی مشخص شده باشد، دو خط زمینه گنجانده می‌شود..IP " --edge-labels=files" 8

برچسب‌گذاری یال‌های گراف با نام فایل‌هایی که وصله‌های مجاور تغییر می‌دهند.

تولید مستقیم یک فایل خروجی PostScript.

جستجو با grep در میان فایل‌های منبع به‌صورت بازگشتی، با صرف‌نظر از وصله‌ها و فراداده‌های quilt. اگر هیچ آرگومان نام فایلی مشخص نشود، کل درخت کد منبع جستجو می‌شود. لطفاً برای مشاهده گزینه‌ها به صفحه راهنمای grep(1) مراجعه کنید.

-h
چاپ این راهنما. گزینه -h مربوط به grep می‌تواند پس از یک دوخط‌تیره (--) ارسال شود. عبارت‌های جستجویی که با خط‌تیره آغاز می‌شوند را می‌توان پس از دومین دوخط‌تیره (-- --) ارسال کرد.

چاپ یا تغییر سرآیند بالاترین وصله یا وصله مشخص‌شده.

الحاق به سرآیند موجود وصله (-a)، جایگزینی آن (-r)، یا ویرایش سرآیند (-e) در $EDITOR. اگر هیچ‌یک از این گزینه‌ها مشخص نشود، سرآیند وصله چاپ می‌شود.

حذف خروجی diffstat از سرآیند.

حذف فاصله‌های سفید اضافی از انتهای خطوط سرآیند.

ایجاد یک نسخه پشتیبان از نگارش قدیمی وصله به‌صورت patch~.

وارد کردن وصله‌های خارجی. وصله‌ها پس از بالاترین وصله فعلی درج خواهند شد و برای اِعمال شدن، باید پس از واردسازی اعمال (push) شوند.

تعداد سطوح دایرکتوری که هنگام اِعمال باید حذف شوند (پیش‌فرض=1)

اِعمال وصله به‌صورت معکوس.

نام فایل وصله برای استفاده در quilt. این گزینه فقط هنگام وارد کردن یک وصله تکی قابل استفاده است.

بازنویسی/به‌روزرسانی وصله‌های موجود.

هنگام بازنویسی یک وصله موجود، نگه‌داشتن سرآیند قدیمی (o)، همه (a)، یا جدید (n). اگر هر دو وصله حاوی سرآیند باشند، مشخص کردن این گزینه الزامی است. این گزینه تنها زمانی مؤثر است که از -f استفاده شود.

ایجاد پیام‌های ایمیل از یک محدوده مشخص از وصله‌ها، یا تمام وصله‌های موجود در فایل series، و ذخیره آن‌ها در یک فایل mailbox یا ارسال فوری آن‌ها. ویرایشگر با قالبی برای متن مقدمه باز می‌شود. لطفاً برای جزئیات به /usr/share/doc/quilt/README.MAIL مراجعه کنید. هنگام تعیین یک محدوده از وصله‌ها، نام وصله نخست به‌صورت “-” نشان‌دهنده اولین وصله، و نام وصله پایانی به‌صورت “-” بیانگر آخرین وصله در series است.

متنی که به عنوان مقدمه استفاده می‌شود. هنگام استفاده از این گزینه، ویرایشگر فراخوانی نخواهد شد و وصله‌ها بی‌درنگ پردازش می‌شوند.

مشابه گزینه -m، با این تفاوت که مقدمه را از file می‌خواند.

استفاده از یک پیشوند جایگزین در بخش داخل قلاب موضوعاتِ (subjects) تولیدشده. مقدار پیش‌فرض “patch” است.

ذخیره تمام پیام‌ها در فایل مشخص‌شده با قالب mbox. این فایل mbox را می‌توان بعداً برای نمونه با formail ارسال کرد.

ارسال مستقیم پیام‌ها.

نشانی فرستنده پاکت (envelope sender) برای استفاده. این نشانی باید به شکل “user@domain.name” باشد. هیچ نام نمایشی (display name) مجاز نیست.

مقدارهای مورد استفاده برای سرآیندهای From و Subject. اگر گزینه --from داده نشود، از مقدار گزینه --sender استفاده می‌شود.

الحاق یک گیرنده به سرآیندهای To، Cc یا Bcc.

تعیین یک کدگذاری نویسه خاص برای پیام در سیستم‌هایی که از UTF-8 یا ISO-8859-15 استفاده نمی‌کنند. این کدگذاری نویسه باید با کدگذاری به‌کاررفته در وصله‌ها همخوانی داشته باشد.

افزودن امضای مشخص‌شده به انتهای پیام‌ها (در صورت وجود، پیش‌فرض ~/.signature است؛ برای نداشتن امضا از “-” استفاده کنید).

افزودن سرآیندهای مناسب برای پاسخ دادن به پیام مشخص‌شده.

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

ایجاد وصله‌ای به سبک -p n (از -p0 یا -p1 پشتیبانی می‌شود).

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

چاپ نام وصله بعدی پس از وصله مشخص‌شده یا بالاترین وصله در فایل series.

چاپ فهرست وصله‌هایی که هر یک از فایل‌های مشخص‌شده را تغییر می‌دهند. (از روشی ابتکاری برای تشخیص فایل‌های تغییریافته توسط وصله‌های اعمال‌نشده استفاده می‌کند. توجه داشته باشید که این روش ابتکاری بسیار کندتر از پیمایش وصله‌های اعمال‌شده است.)

خروجی پرگوتر و کاربرپسندتر.

استفاده از رنگ‌آمیزی نحو (حالت auto آن را تنها در صورتی فعال می‌کند که خروجی یک tty باشد).

حذف وصله(ها) از پشته وصله‌های اعمال‌شده. بدون گزینه‌ها، بالاترین وصله برداشته می‌شود. وقتی یک عدد مشخص شود، همان تعداد از وصله‌ها حذف می‌شوند. اگر نام یک وصله مشخص شود، وصله‌ها تا زمانی حذف می‌شوند که وصله تعیین‌شده در بالای پشته قرار گیرد. نام وصله‌ها می‌تواند شامل پیشوند patches/ باشد، بدین معنا که تکمیل خودکار نام فایل قابل استفاده است.

حذف تمام وصله‌های اعمال‌شده.
حذف اجباری. وضعیت پیش از اِعمال وصله(ها) از روی فایل‌های پشتیبان بازیابی خواهد شد.
همیشه بررسی شود که آیا وصله به‌طور کامل و پاک حذف می‌شود یا خیر؛ به بررسی برچسب‌های زمانی تکیه نکنید.
عملیات بی‌صدا.
عملیات پرگو (با جزئیات).

تازه‌سازی خودکار هر وصله پیش از لغو اِعمال آن..IP "previous [patch] " 4

چاپ نام وصلهٔ قبلی پیش از وصلهٔ مشخص‌شده یا بالاترین وصله در فایل series.

اعمال وصله(ها) از فایل series. بدون گزینه‌ها، وصلهٔ بعدی در فایل series اعمال می‌شود. هنگامی که یک عدد مشخص شود، تعداد مشخص‌شده از وصله‌ها اعمال می‌گردد. زمانی که نام یک وصله مشخص شود، تمامی وصله‌ها تا و خودِ وصلهٔ مشخص‌شده اعمال می‌شوند. نام وصله‌ها می‌تواند شامل پیشوند patches/ باشد، بدین معنا که قابلیت تکمیل خودکار نام فایل (filename completion) قابل استفاده است.

اعمال تمام وصله‌ها در فایل series.
عملیات بی‌صدا.
اعمال اجباری، حتی اگر وصله دارای بخش‌های ردشده (rejects) باشد.
عملیات پرگو (نمایش جزئیات).

تنظیم بیشینهٔ ضریب تقریب (fuzz factor) (پیش‌فرض: 2).

ادغام فایل وصله در فایل‌های اصلی (ببینید: patch(1)).

باقی گذاشتن فایل‌های ردشده‌ای که دستور patch ایجاد کرده است، حتی اگر وصله در عمل اعمال نشده باشد.

استفاده از رنگ‌آمیزی نحوی (حالت auto تنها در صورتی آن را فعال می‌کند که خروجی یک tty باشد).

تازه‌سازی خودکار هر وصله پس از اعمال موفقیت‌آمیز آن.

تازه‌سازی وصلهٔ مشخص‌شده، یا به‌طور پیش‌فرض بالاترین وصله. مستنداتی که پیش از وصلهٔ واقعی در فایل وصله آمده‌اند حفظ می‌شوند.

امکان تازه‌سازی وصله‌هایی که در بالا قرار ندارند نیز وجود دارد. اگر هر یک از وصله‌های بالاتر از وصلهٔ مورد نظر، همان فایل‌ها را تغییر دهند، اسکریپت به‌طور پیش‌فرض متوقف می‌شود. با این حال وصله‌ها می‌توانند با -f نیز تازه‌سازی شوند. در این حالت، اسکریپت برای هر فایل هم‌پوشانی‌شده (shadowed) یک هشدار چاپ می‌کند، تغییرات اعمال‌شده توسط وصله‌های جدیدتر نادیده گرفته می‌شوند، و تنها تغییرات فایل‌هایی که توسط وصله‌های جدیدتر تغییر نیافته‌اند در وصلهٔ مشخص‌شده قرار خواهند گرفت.

ایجاد وصله‌ای به سبک -p n (پشتیبانی از -p0 یا -p1).
ایجاد وصله‌ای به سبک -p1، اما استفاده از a/file و b/file به عنوان نام‌های اصلی و جدید فایل به جای نام‌های پیش‌فرض dir.orig/file و dir/file.

ایجاد یک diff یکپارچه (unified diff) (-u، -U) با num خط زمینه (context). ایجاد یک diff زمینه‌ای (context diff) (-c، -C) با num خط زمینه. تعداد پیش‌فرض خطوط زمینه ۳ است.

ایجاد یک وصلهٔ جدید حاوی تغییرات به جای تازه‌سازی بالاترین وصله. اگر نام جدیدی مشخص نشود، `-2' به نام وصلهٔ اصلی افزوده می‌شود، و الی آخر. (دستور fork را ببینید.)

عدم درج برچسب‌های زمانی فایل (timestamps) در سرآیند وصله.

عدم چاپ خطوط :Index در خروجی.

افزودن یک بخش diffstat به سرآیند وصله، یا جایگزینی بخش diffstat موجود.

اجبار به تازه‌سازی وصله‌ای که در بالاترین سطح قرار ندارد.

ایجاد یک نسخهٔ پشتیبان از نسخهٔ پیشین وصله با نام patch~.

مرتب‌سازی فایل‌ها بر اساس نام آن‌ها به جای حفظ ترتیب اصلی.

حذف فاصله‌های خالی انتهایی در انتهای خطوط.

حذف یک یا چند فایل از بالاترین وصله یا وصلهٔ نام‌برده. فایل‌هایی که توسط وصله‌های بالاتر از وصلهٔ مشخص‌شده تغییر یافته‌اند، قابل حذف نیستند.

حذف فایل‌های نام‌برده از وصلهٔ مشخص‌شده.

تغییر نام بالاترین وصله یا وصلهٔ مشخص‌شده.

وصله‌ای که باید نام آن تغییر کند.

بازگردانی تغییرات اعمال‌نشده در بالاترین وصله یا وصلهٔ مشخص‌شده برای فایل(های) تعیین‌شده: پس از بازگردانی، دستور 'quilt diff -z' هیچ تفاوتی را برای آن فایل‌ها نشان نخواهد داد. تغییرات فایل‌هایی که توسط وصله‌های بالاتر از وصلهٔ مشخص‌شده تغییر یافته‌اند، قابل بازگردانی نیستند.

بازگردانی تغییرات در وصلهٔ مشخص‌شده.

چاپ نام تمامی وصله‌ها در فایل series.

استفاده از رنگ‌آمیزی نحوی (حالت auto تنها در صورتی آن را فعال می‌کند که خروجی یک tty باشد).

خروجی پرگوتر و کاربرپسندتر.

مقداردهی اولیهٔ یک درخت منبع (source tree) از یک فایل rpm spec یا یک فایل quilt series.

پیشوند مسیر اختیاری برای درخت منبع حاصل.

دایرکتوری حاوی سورس‌های بسته. پیش‌فرض `.' است.

خروجی اشکال‌زدایی پرگو (verbose debug).

تنظیم بیشینهٔ ضریب تقریب (نیازمند rpm نسخهٔ 4.6 یا بالاتر).

پیش از ارسال فایل spec به rpmbuild برای پردازش، یک فیلتر روی آن اعمال می‌کند. FILTER باید یک اسکریپت اجرایی باشد که فایل spec اصلی را از stdin خوانده و فایل spec فیلترشده را در stdout می‌نویسد. FILTER می‌تواند به عنوان مسیری به یک اسکریپت سفارشی، یا به عنوان یک نام ساده مشخص شود که در این حالت به یکی از اسکریپت‌های فیلتر ارائه‌شده همراه با quilt ارجاع دارد.

استفاده از روش اصلی و کُند برای پردازش فایل spec. در این حالت، rpmbuild یک درخت کاری را در یک دایرکتوری موقت ایجاد می‌کند در حالی که تمام اقدامات آن ثبت می‌شوند، و سپس همه‌چیز از ابتدا در دایرکتوری مقصد بازپخش می‌شود.
استفاده از روش جدیدتر و سریع‌تر برای پردازش فایل spec. در این حالت، به rpmbuild دستور داده می‌شود که درخت کاری را مستقیماً در دایرکتوری مقصد ایجاد کند. این حالت پیش‌فرض است (از نسخهٔ 0.67 quilt به بعد).

درستی عملکرد دستور setup تنها روی فایل‌های spec تضمین می‌شود که در آن‌ها اعمال تمام وصله‌ها، آخرین کار انجام‌شده در بخش %prep باشد. این یک محدودیت طراحی است، زیرا quilt تنها می‌تواند روی وصله‌ها عمل کند. اگر دستورهای دیگری در بخش %prep فایل‌های وصله‌شده را تغییر دهند، باید قبل‌تر بیایند؛ در غیر این صورت قادر به اعمال (push) سری وصله‌ها نخواهید بود.

برای مثال، یک بخش %prep که در آن ابتدا یک بستهٔ tarball را استخراج می‌کنید، سپس وصله‌ها را اعمال کرده و در نهایت یک جایگزینی رشته را در سراسر درخت انجام می‌دهید، مناسب نیست. برای این‌که "quilt setup" به درستی کار کند، این فرایند باید به گونه‌ای تغییر یابد که ابتدا استخراج بایگانی، سپس جایگزینی رشته در سراسر درخت، و در آخر اعمال وصله‌ها انجام گیرد..IP "snapshot [-d] " 4

تهیهٔ یک تصویر لحظه‌ای (snapshot) از وضعیت کاری فعلی. پس از ثبت snapshot، درخت کاری می‌تواند به روش‌های معمول تغییر کند، از جمله اعمال (push) و بازگردانی (pop) وصله‌ها. تفاوتی (diff) نسبت به درخت کاری در لحظهٔ ثبت snapshot می‌تواند با دستور `quilt diff --snapshot' تولید شود.

فقط snapshot فعلی را حذف می‌کند.

چاپ نام بالاترین وصله در پشتهٔ فعلی وصله‌های اعمال‌شده.

چاپ فهرستی از وصله‌هایی که اعمال نشده‌اند، یا تمامی وصله‌هایی که پس از وصلهٔ مشخص‌شده در فایل series قرار دارند.

ارتقای فراداده‌های موجود در درخت کاری از نسخه‌ای قدیمی از quilt به نسخهٔ فعلی. این دستور تنها زمانی مورد نیاز است که قالب فراداده‌های quilt تغییر کرده باشد و درخت کاری همچنان حاوی فراداده‌هایی با قالب قدیمی باشد. در این حالت، quilt درخواست خواهد کرد که `quilt upgrade' اجرا شود.

این گزینه‌ها میان تمامی دستورهای quilt مشترک هستند.

چاپ پیام نحوهٔ استفاده (برای command داده‌شده، در صورت مشخص بودن، وگرنه برای خود quilt) و خروج.
استفاده از file به‌عنوان فایل پیکربندی به‌جای ~/.quiltrc (یا /etc/quilt.quiltrc اگر ~/.quiltrc وجود نداشته باشد). مقدار ویژهٔ “-” باعث می‌شود quilt هیچ فایل پیکربندی‌ای را نخواند.
اجرای دستور در حالت ردگیری پوسته (-x) برای اشکال‌زدایی از عملیات داخلی.
چاپ شماره نسخه و خروج.

در صورت تکمیل موفقیت‌آمیز عملیات درخواستی، وضعیت خروج 0 است، و در صورت بروز خطا 1 خواهد بود.

وضعیت خروج 2 نشان می‌دهد که quilt هیچ کاری برای تکمیل دستور انجام نداده است. این وضعیت به‌ویژه زمانی رخ می‌دهد که از quilt درخواست اعمال (push) شود در حالی که کل پشته از قبل push شده است، یا درخواست pop شود در حالی که کل پشته از قبل pop شده است. هدف از این رفتار، ساده‌تر ساختن اسکریپت‌نویسی با quilt است.

Quilt متغیرهای زیر را شناسایی می‌کند:

برنامه‌ای را مشخص می‌کند که برای ویرایش فایل‌ها اجرا می‌شود؛ برای نمونه، با “quilt edit” یا “quilt header -e”.
آرگومان‌های مورد استفاده برای فراخوانی صفحه‌بند (pager) less(1) را مشخص می‌کند. مقدار پیش‌فرض آن “-FRSX” است.

project-1.2.3/
├── patches/
│    ├── series         (list of patches to apply)
│    ├── patch1.diff    (one particular patch)
│    ├── patch2.diff
│    └── ...
├── .pc/
│    ├── .quilt_patches (content of QUILT_PATCHES)
│    ├── .quilt_series  (content of QUILT_SERIES)
│    ├── patch1.diff/   (copy of patched files)
│    │    └── ...
│    ├── patch2.diff/
│    │    └── ...
│    └── ...
└── ...

دایرکتوری patches بسیار باارزش است، چرا که تمام وصله‌های شما و همچنین ترتیبی را که باید اعمال شوند در خود جای داده است.

دایرکتوری .pc حاوی فراداده‌هایی دربارهٔ وضعیت فعلی سری وصله‌های شماست. تغییر محتویات آن توصیه نمی‌شود. این دایرکتوری معمولاً می‌تواند از روی فایل‌های اولیه و محتوای دایرکتوری patches مجدداً بازسازی شود (به‌شرط آنکه تمامی وصله‌ها پیش از حذف، بازتولید شده باشند). هنگام راه‌اندازی، quilt فایل مشخص‌شده با گزینهٔ “--quiltrc” را ارزیابی می‌کند؛ اگر این گزینه داده نشده باشد، فایل .quiltrc در دایرکتوری خانگی کاربر استفاده می‌شود، و اگر آن نیز وجود نداشته باشد، /etc/quilt.quiltrc خوانده می‌شود. این فایل یک اسکریپت bash(1) است. متغیرهای EDITOR و LESS در صورت تمایل می‌توانند در اینجا بازنویسی شوند؛ بخش ENVIRONMENT در بالا را ببینید.

متغیری به شکل QUILT_COMMAND_ARGS تعریف کنید تا گزینه‌های پیش‌فرضی را که باید به هر دستور quilt (با حروف بزرگ) ارسال شوند، مشخص نمایید. برای مثال،

QUILT_DIFF_ARGS="--color=auto"
باعث می‌شود که خروجی “quilt diff” هنگام ارسال به یک ترمینال، دارای رنگ‌بندی نحو باشد.
گزینه‌های اضافی که quilt باید هنگام تولید وصله‌ها به GNU diff ارسال کند. یک تنظیم مفید برای کد منبع C گزینهٔ “-p” است، که باعث می‌شود GNU diff در وصلهٔ حاصل نشان دهد که تغییر در کدام تابع رخ داده است.
گزینه‌های اضافی که quilt باید هنگام اعمال وصله‌ها به GNU patch ارسال کند. برای مثال، نسخه‌های اخیر GNU patch از گزینهٔ “--reject-format=unified” برای تولید فایل‌های رد شده با سبک “unified diff” پشتیبانی می‌کنند (نسخه‌های قدیمی‌تر patch از “--unified-reject-files” برای این کار استفاده می‌کردند).
همچنین اگر با این مشکل مواجهید که quilt فایل‌های خالی را در مواردی که انتظار دارید حذف نمی‌کند، ممکن است بخواهید گزینهٔ “-E” را اضافه کنید. مستندات GNU patch بیان می‌کند که “به‌طور معمول این گزینه غیرضروری است”، اما زمانی که patch در حالت POSIX است یا اگر قالب وصله فایل‌های خالی را از فایل‌های حذف‌شده متمایز نکند، patch فایل‌های خالی را تنها در صورتی حذف می‌کند که گزینهٔ “-E” داده شده باشد. توجه داشته باشید که هنگام ارسال “-E” به patch، ابزار quilt دیگر قادر به رسیدگی به فایل‌های خالی نخواهد بود؛ به همین دلیل استفاده از “-E” دیگر پیش‌فرض نیست.
نشان‌دهندهٔ گزینه‌های اضافی است که quilt باید هنگام تولید آمار وصله به diffstat(1) ارسال کند. برای مثال، می‌توان از “-f0” برای یک قالب خروجی جایگزین استفاده کرد. نسخه‌های اخیر diffstat همچنین از روش‌های گرد کردن جایگزین (“-r1”، “-r2”) پشتیبانی می‌کنند.
مکان فایل‌های پشتیبان و هرگونه دادهٔ دیگر مربوط به وضعیت فعلی دایرکتوری کاری از دیدگاه quilt. پیش‌فرض آن “.pc” است.
مکان فایل‌های وصله؛ با مقدار پیش‌فرض patches.
نام فایل سری (series)؛ با مقدار پیش‌فرض series. مگر در حالتی که از یک مسیر مطلق استفاده شود، الگوریتم جستجوی شرح‌داده‌شده در بالا اعمال می‌شود.
پرچم بولی؛ در صورت تنظیم روی هر مقداری، quilt پیشوند نام هر وصله‌ای را که چاپ می‌کند با دایرکتوری آن (QUILT_PATCHES) همراه خواهد کرد.
پرچم بولی؛ در صورت تنظیم روی هر مقداری، هیچ خط “Index:” به ابتدای وصله‌های تولیدشده توسط quilt اضافه نمی‌شود. این یک میانبر برای افزودن “--no-index” به هر دو متغیر QUILT_DIFF_ARGS و QUILT_REFRESH_ARGS است.
پرچم بولی؛ در صورت تنظیم روی هر مقداری، هنگام تولید وصله‌ها هیچ برچسب زمانی در سرآیندها گنجانده نمی‌شود. این یک میانبر برای افزودن “--no-timestamps” به هر دو متغیر QUILT_DIFF_ARGS و QUILT_REFRESH_ARGS است.
صفحه‌بندی‌کننده‌ای که quilt باید برای دستورهایی که خروجی صفحه‌بندی‌شده تولید می‌کنند استفاده کند. اگر تنظیم نشده باشد، مقدار GIT_PAGER یا در صورت عدم وجود آن، PAGER استفاده می‌شود. اگر هیچ‌یک از این متغیرها تنظیم نشده باشد، “less -R” به کار می‌رود. یک مقدار خالی مشخص می‌کند که نباید از هیچ صفحه‌بندی‌کننده‌ای استفاده شود.
دنباله‌ای از تعاریف که مشخص می‌کند quilt کدام توالی‌های گریز ANSI را به یک زمینهٔ خروجی مرتبط کند و مقادیر پیش‌فرض را لغو نماید. رایج‌ترین کاربرد آن تنظیم رنگ‌ها است (از این رو نام این متغیر)، اما ویژگی‌های دیگری مانند bold یا reverse نیز وجود دارند.
برای لغو و تغییر یک یا چند تنظیم، QUILT_COLORS را روی فهرستی از عناصر جداشده با دونقطه (:) تنظیم کنید، که هر یک از آن‌ها به شکل “format-name=digit-sequence[;...]”. هستند.
هر digit-sequence باید یک مقدار SGR (مخفف Select Graphic Rendition) پشتیبانی‌شده توسط ترمینال شما باشد. مقادیر استاندارد SGR توسط ANSI مشخص شده و در ISO-6429 و ECMA-48 (§8.3.117) گنجانده شده‌اند. رنگ‌ها دارای نام‌های استانداردی هستند اما مقادیر آن‌ها درون یک فضای رنگی تعریف نشده است؛ ظاهر دقیق آن‌ها متفاوت خواهد بود و ممکن است در ترمینال (یا شبیه‌ساز ترمینال) شما قابل سفارشی‌سازی باشد.
شناسه‌های معتبر format-name، به همراه دستورهای quilt که از آن‌ها استفاده می‌کنند، زمینه‌های کاربرد آن‌ها، و مقادیر پیش‌فرض آن‌ها در ادامه می‌آید:
format-name دستور زمینه پیش‌فرض
diff_add diff خطوط اضافه‌شده 36 (فیروزه‌ای)
diff_cctx diff توالی‌های ستاره 33 (زرد)
diff_ctx diff متن پس از قطعه 35 (ارغوانی)
diff_hdr diff خط نمایه 32 (سبز)
diff_hunk diff سرآیند قطعه 33 (زرد)
diff_mod diff خطوط تغییریافته 35 (ارغوانی)
diff_rem diff خطوط حذف‌شده 35 (ارغوانی)
patch_fail push پیام شکست 31 (قرمز)
patch_fuzz push اطلاعات تقریب (fuzz) 35 (ارغوانی)
patch_offs push اطلاعات آفست 33 (زرد)
series_app series نام وصله‌های اعمال‌شده 32 (سبز)
series_top series نام بالاترین وصله 33 (زرد)
series_una series نام وصله‌های اعمال‌نشده 0 (هیچ‌کدام)
تمام format-nameهای استفاده‌شده توسط دستور series، توسط دستور patches نیز به کار می‌روند.
مقدار ویژهٔ format-name با عنوان “clear” برای خاموش کردن جلوه‌های گرافیکی ویژه و بازگشت به پیش‌فرض‌های ترمینال استفاده می‌شود. تغییر دادن تعریف آن نباید برای هیچ ترمینالی که ادعای پشتیبانی از توالی‌های گریز ANSI دارد ضروری باشد. اگر علی‌رغم تمام تلاش‌های شما خروجی ترمینالتان به هم ریخت، دستور “tput sgr0” را برای بازگرداندن جلوهٔ گرافیکی پیش‌فرض امتحان کنید..IP به عنوان مثال، می‌توان موارد زیر را در ~/.quiltrc (یا /etc/quilt.quiltrc) قرار داد:
QUILT_DIFF_ARGS="--color"
# Render diff file headers in bold blue over yellow.
# Render diff hunk headers in "negative image" yellow.
# Render failed patches with a red background.
QUILT_COLORS="diff_hdr=1;34;43:diff_hunk=7;33:patch_fail=41"

Quilt در ابتدا به عنوان مجموعه‌ای از اسکریپت‌های نوشته‌شده توسط Andrew Morton آغاز شد (patch-scripts). بر اساس ایده‌های Andrew، شخص Andreas Grünbacher با کمک چندین مشارکت‌کنندهٔ دیگر، این اسکریپت‌ها را به‌طور کامل بازنویسی کرد (فایل AUTHORS موجود در توزیع را ببینید).

این صفحهٔ راهنما توسط Martin Quinson و بر اساس اطلاعات موجود در مستندات PDF و پیام راهنمای هر دستور نوشته شده است.

لطفاً برای یک مثال جامع از نحوهٔ استفاده، به مستندات PDF (در بخش همچنین ببینید (SEE ALSO) در زیر) مراجعه کنید.

سند How to Survive with Many Patches, or: Introduction to Quilt در مسیر /usr/share/doc/quilt/quilt.pdf نصب شده است. توجه داشته باشید که برخی توزیع‌کنندگان این فایل را فشرده می‌کنند. می‌توان از zxpdf(1) برای نمایش فایل‌های PDF فشرده استفاده کرد.

راهنمای Diffutils گنو، Comparing and Merging Files، دستورهای diff و patch را با جزئیات مستند کرده است.

استاندارد Control Functions for Coded Character Sets (ECMA-48) توالی‌های گریز ANSI مورد استفاده در QUILT_COLORS را مشخص می‌کند؛ بخش 8.3.117 بیشترین اهمیت را خواهد داشت. برای منبعی در دسترس‌تر، هرچند با رسمیت کمتر، به console_codes(4) مراجعه کنید.

diff(1), diffstat(1), guards(1), patch(1)

December 17, 2013 quilt