RAD-PATCH(1) Radicle CLI Manual RAD-PATCH(1)

rad-patch - مدیریت وصله‌های رادیکال (Radicle)

rad patch [<option>...]
rad patch list [--all|--merged|--open|--archived|--draft] [<option>...]
rad patch show <patch-id> [<option>...]
rad patch diff <patch-id> [--revision <revision-id>] [<option>...]
rad patch archive <patch-id> [--undo] [<option>...]
rad patch update <patch-id> [<option>...]
rad patch checkout <patch-id> [<option>...]
rad patch delete <patch-id> [<option>...]
rad patch redact <revision-id> [<option>...]
rad patch ready <patch-id> [--undo] [<option>...]
rad patch review <patch-id> [<option>...]
rad patch edit <patch-id> [<option>...]
rad patch set <patch-id> [<option>...]
rad patch comment <revision-id> [<option>...]
rad patch label <patch-id> [<option>...]

git push rad HEAD:refs/patches

دستور patch در رادیکال برای مدیریت مجموعه‌تغییرات (changesets) در مخازن رادیکال (Radicle) به کار می‌رود.

اگرچه بسیاری از عملیات با استفاده از rad patch قابل انجام است، اما برخی کارهای مرتبط با وصله مستقیماً از طریق git انجام می‌شوند. برای نمونه، باز کردن یک وصله معمولاً با استفاده از git push انجام می‌شود، در حالی که ادغام یک وصله با ترکیبی از git merge و git push صورت می‌پذیرد.

برای ممکن ساختن این امر، رادیکال همراه با یک برنامه کمکی با نام git-remote-rad عرضه می‌شود که توسط git هنگام عملیات push و fetch با ریموت‌های رادیکال فراخوانی می‌گردد.

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

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

<patch-id>

وصله‌ای که باید نمایش داده شود.

--patch, -p

نمایش تغییرات وصله در قالب وصله گیت (git patch format).

--verbose, -v

نمایش اطلاعات بیشتر درباره وصله.

خروجی تفاوت (diff) وصله با استفاده از ابزار مقایسه رادیکال.

<patch-id>

وصله‌ای که باید تفاوت آن نمایش داده شود.

--revision, -r <revision-id>

نگارشی (revision) که باید مقایسه شود (پیش‌فرض: آخرین نگارش).

ویرایش دیدگاه (comment) یک نگارش وصله. برای ویرایش عنوان یا توضیحات وصله، <patch-id> را ارسال کنید. برای ویرایش دیدگاه مربوط به یک نگارش، <revision-id> همان نگارش را بدهید.

<revision-id>

نگارشی که باید ویرایش شود.

--message, -m [<string>]

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

فهرست کردن وصله‌ها در مخزن جاری. حالت پیش‌فرض --open است.

--all

فهرست تمام وصله‌ها، شامل وصله‌های ادغام‌شده و بایگانی‌شده.

--archived

تنها فهرست کردن وصله‌های بایگانی‌شده.

--merged

تنها فهرست کردن وصله‌های ادغام‌شده.

--open

تنها فهرست کردن وصله‌های باز.

--draft

تنها فهرست کردن وصله‌های پیش‌نویس.

--authored

نمایش فقط وصله‌هایی که توسط شما نوشته شده‌اند.

--author <did>

نمایش فقط وصله‌هایی که کاربر مشخص‌شده نویسنده آن‌ها است (می‌تواند چند بار مشخص شود).

علامت‌گذاری یک وصله به عنوان آماده بررسی. این کار وضعیت وصله را از draft به open تغییر می‌دهد.

--undo

بازگرداندن وضعیت وصله به draft.

بررسی یک وصله. اعلام پذیرش یا رد یک نگارش وصله به همراه ارسال دیدگاه.

--revision, -r <revision-id>

نگارشی که باید بررسی شود (پیش‌فرض: آخرین نگارش).

--patch, -p

بررسی به تفکیک قطعات تغییر وصله (patch hunks).

--hunk <index>

بررسی فقط یک قطعه تغییر (hunk) خاص.

--accept

پذیرش وصله یا مجموعه‌ای از قطعات تغییر.

--reject

رد کردن وصله یا مجموعه‌ای از قطعات تغییر.

--unified, -U <n>

تولید تفاوت‌ها با <n> خط زمینه (context) به جای سه خط معمول.

--delete, -d

حذف پیش‌نویس بررسی.

--message, -m [<string>]

ارائه دیدگاه همراه با بررسی (پیش‌فرض: اعلان درخواست متن).

بایگانی کردن یک وصله.

--undo

خروج وصله از بایگانی.

تنظیم آپ‌استریم شاخه جاری روی ارجاع یک وصله. این کار شاخه شما را به گونه‌ای پیکربندی می‌کند که عملیات push باعث به‌روزرسانی وصله مشخص‌شده شود.

<patch-id>

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

به‌روزرسانی یک وصله به HEAD فعلی مخزن. این یک دستور سطح پایین است که تنها زمانی باید استفاده شود که استفاده از git push rad امکان‌پذیر نباشد.

--message, -m [<string>]

ارائه پیام دیدگاه برای این نگارش.

--no-message

خالی گذاشتن پیام دیدگاه نگارش.

رفتن روی یک وصله مشخص با ایجاد شاخه‌ای که به راس (head) وصله اشاره دارد. این کار معادل git checkout -b <name> و سپس اجرای rad patch set <patch-id> است. به طور پیش‌فرض، نام شاخه شامل شناسه وصله (Patch ID) خواهد بود.

--revision <id>

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

--name <string>

تعیین نام برای شاخه جدید.

--force, -f

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

ثبت دیدگاه روی یک نگارش وصله، به همراه امکان پاسخ به دیدگاهی موجود.

<revision-id>

نگارشی از وصله که می‌خواهید روی آن دیدگاه بگذارید. شناسه وصله (Patch ID) یک شناسه نگارش (Revision ID) نیز هست و می‌تواند برای دیدگاه گذاشتن روی نگارش اولیه وصله استفاده شود. هر شناسه نگارش دیگری دیدگاه را روی همان نگارش مشخص‌شده ثبت خواهد کرد.

--message, -m <string>

متن دیدگاه. در صورت عدم ذکر، رادیکال از طریق $EDITOR متن را درخواست می‌کند. چند پیام با یک خط خالی میان آن‌ها به هم متصل می‌شوند.

--reply-to <comment-id>

دیدگاه اختیاری برای پاسخ دادن به آن. در صورت عدم ذکر، دیدگاه در بالاترین سطح روی نگارش مشخص‌شده قرار می‌گیرد.

برای باز کردن یک وصله، ابتدا تغییراتی در رونوشت کاری خود، معمولاً روی یک شاخه ویژگی (feature branch)، ایجاد می‌کنیم. برای نمونه:

$ git checkout -b fix/option-parsing
  ... edit some files ...
$ git commit -a -m "Fix option parsing"

هنگامی که تغییرات ما برای پیشنهاد شدن به عنوان وصله آماده شد، آن‌ها را از طریق git به یک ارجاع ویژه در ریموت rad که برای باز کردن وصله‌ها به کار می‌رود (refs/patches) می‌فرستیم (push):

$ git push rad HEAD:refs/patches
✓ Patch 90c77f2c33b7e472e058de4a586156f8a7fec7d6 opened
...

سپس رادیکال ویرایشگر شما را باز می‌کند تا بتوانید عنوان و توضیحات وصله را ویرایش کنید. اطمینان حاصل کنید که متغیر EDITOR یا VISUAL در محیط شما تنظیم شده باشد (برای جزئیات بیشتر به environ(7) مراجعه کنید). پس از پایان، کافی است ویرایشگر را ذخیره کرده و ببندید. در صورت موفقیت، وصله باز شده و شناسه آن در خروجی چاپ می‌شود. سپس می‌توانید با استفاده از زیردستور show متادیتای وصله را نمایش دهید:

$ rad patch show 90c77f2

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

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

$ git push rad d39fe32387496876fae6446daf3762aacf69d83b:refs/patches

پس از باز شدن وصله، متوجه خواهید شد که رادیکال آپ‌استریم شاخه شما را روی چیزی شبیه به rad/patches/90c77f2c33b7e472e058de4a586156f8a7fec7d6 تنظیم کرده است. این بدان معناست که شاخه شما اکنون به وصله جدید مرتبط شده است و هرگونه push از این شاخه منجر به به‌روزرسانی وصله خواهد شد. برای اطلاعات بیشتر به بخش بعدی درباره به‌روزرسانی وصله مراجعه کنید.

توجه داشته باشید که با استفاده از گزینه push به صورت -o patch.draft هنگام باز کردن وصله، امکان ایجاد یک وصله پیش‌نویس (draft) نیز وجود دارد. برای گزینه‌های بیشتر به زیردستور ready مراجعه کنید.

هنگام باز کردن یک وصله، گزینه‌های متعددی را می‌توان با استفاده از گزینه‌های git push مشخص کرد. این کار از طریق پرچم -o یا --push-option انجام می‌شود؛ به عنوان مثال -o patch.draft. فهرست کامل گزینه‌ها در ادامه آمده است:

sync, no-sync

همگام‌سازی یا عدم همگام‌سازی با شبکه پس از باز شدن وصله. حالت پیش‌فرض sync است.

sync.debug

نمایش اطلاعات اشکال‌زدایی درباره فرآیند همگام‌سازی.

patch.draft

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

patch.branch[=<name>]

ایجاد یک شاخه هنگام باز کردن وصله. به طور پیش‌فرض غیرفعال است. اگر name سفارشی ارائه شود، از همان نام استفاده می‌شود؛ در غیر این صورت نام شاخه به طور پیش‌فرض patches/<patch id> خواهد بود.

patch.message=<message>

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

patch.base=<oid>

کامیت پایه‌ای که این وصله باید روی آن ادغام شود. به طور پیش‌فرض، این شاخه "master" شما است. هنگام ساخت وصله‌های روی‌هم‌چیده (stacked patches)، ممکن است تنظیم این مقدار روی راس وصله قبلی مفید باشد.

برای اطلاعات بیشتر درباره گزینه‌های ارسال، به git-push(1) مراجعه کنید.

برای به‌روزرسانی یک وصله، تغییرات را به صورت محلی اعمال کرده و ارسال (push) می‌کنیم:

$ git commit --amend
$ git push --force
✓ Patch 90c77f2 updated to revision d0018fcc21d87c91a1ff9155aed6b4e57535566b
...

توجه داشته باشید که این کار تنها در صورتی کار می‌کند که آپ‌استریم شاخه جاری به درستی تنظیم شده باشد. این کار در زمان باز شدن وصله از روی شاخه‌ای فاقد آپ‌استریم، به طور خودکار انجام می‌پذیرد. در مثال بالا، به دلیل اصلاح (amend) کامیت، از گزینه --force استفاده کردیم. این یک رویه معمول پس از بازبینی و اعمال اصلاحات روی وصله است.

اگر آپ‌استریم شاخه روی ارجاع وصله، یعنی rad/patches/<id> تنظیم نشده باشد، می‌توانید با دستور rad patch set <id> آن را تنظیم کنید.

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

همچنین امکان تغییر پایه (base) وصله در هنگام به‌روزرسانی وجود دارد. کافی است از گزینه push به صورت patch.base مطابق توضیحات بخش باز کردن وصله (OPENING A PATCH) استفاده کنید.

هنگام کار با وصله‌های ارسال‌شده توسط همتایان (peers)، معمولاً دریافت و بررسی کد (checkout) در یک شاخه اختصاصی بسیار کاربردی است. با دریافت وصله، می‌توانید کد را بررسی کرده، تست‌ها را اجرا کنید و حتی به‌روزرسانی‌های پیشنهادی خود را برای وصله ارائه دهید. زیردستور checkout برای همین هدف استفاده می‌شود:

$ rad patch checkout 90c77f2

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

پس از اینکه وصله‌ای آماده ادغام شد، نگهدارنده مخزن کافی است از دستور git-merge(1) روی شاخه "master" استفاده کند و از طریق git آن را ارسال نماید. برای نمونه، اگر وصله 26e3e56 آماده ادغام باشد، مراحل به این صورت خواهد بود:

$ rad patch checkout 26e3e56
✓ Switched to branch patch/26e3e56
$ git checkout master
$ git merge patch/26e3e56
$ git push rad
✓ Patch 26e3e563ddc7df8dd0c9f81274c0b3cb1b764568 merged
To rad://z42hL2jL4XNk6K8oHQaSWfMgCL7ji/z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
   f2de534..d6399c7  master -> master

در مراحل بالا، ابتدا وصله را در یک شاخه دریافت کردیم، آن شاخه را در شاخه master ادغام نمودیم و سپس آن را به ریموت rad ارسال کردیم.

برای فهرست کردن وصله‌ها، دستور rad patch را اجرا کنید. به طور پیش‌فرض، این کار تنها وصله‌های باز را نشان می‌دهد. برای فهرست کردن تمامی وصله‌ها، از جمله مواردی که ادغام یا بایگانی شده‌اند، گزینه --all را اضافه کنید.

تیم رادیکال (The Radicle Team)

2026-08-28 rad 1.0.0