B4(1) دستورهای کاربر (User Commands) B4(1)

B4 - کار با ارسال‌های کد در بایگانی public-inbox

b4 {mbox,am,shazam,pr,diff,ty,kr,dig,review,prep,send,trailers} [options]

این یک ابزار کمکی برای کار با وصله‌ها (پچ‌ها) و درخواست‌های ادغام (pull requests) ارائه شده از طریق بایگانی public-inbox مانند lore.kernel.org است. این ابزار برای ساده‌تر کردن مشارکت در جریان‌های کاری مبتنی بر وصله، مانند موارد استفاده‌شده در توسعه هسته لینوکس، نوشته شده است.

نام "b4" برای سهولت در تایپ انتخاب شده است و همچنین به این دلیل که B-4 پیش‌درآمدی برای Lore و Data در دنیای پیشتازان فضا (Star Trek) بود.

مستندات کامل در https://b4.docs.kernel.org/ در دسترس است.

مختص مدیران مخزن و نگهدارندگان (Maintainer-oriented):

  • mbox: بارگیری یک رشته گفتگو (thread) به عنوان یک فایل mbox
  • am: ایجاد یک فایل mbox آماده برای git-am
  • shazam: اعمال سری وصله‌ها بر روی مخازن گیت
  • pr: کار با درخواست‌های ادغام (pull requests)
  • ty: ایجاد پاسخ‌های قالب‌بندی‌شده برای وصله‌ها و درخواست‌های ادغام پردازش‌شده
  • diff: نمایش تفاوت‌ها به سبک range-diff بین نسخه‌های وصله
  • dig: یافتن ارسال پستی مربوط به یک کامیت معین در لیست پستی
  • review: جریان کاری بررسی وصله مبتنی بر رابط متنی TUI (نسخه آلفا)
  • kr: (ناقص/STUB) عملیات روی دسته‌کلیدهای سازگار با patatt

مختص مشارکت‌کنندگان (Contributor-oriented):

  • prep: آماده‌سازی سری وصله‌های خود برای ارسال
  • trailers: بازیابی و اعمال برچسب‌های بازبینی کد (trailers)
  • send: ارسال سری وصله‌های خود برای بازبینی در فهرست‌های توزیع

برای دیدن گزینه‌های کامل و عملکرد آنها، لطفاً b4 --help و b4 subcommand --help را ببینید.

این دستور اجازه بازیابی کامل رشته‌های گفتگو را از یک نمونه راه دور public-inbox می‌دهد. می‌توانید فایل mbox حاصل را با اکثر کلاینت‌های ایمیل برای اقداماتی مانند پاسخ به گفتگوها یا بازبینی ارسال‌های وصله باز کنید.

می‌توانید پیام را به صورت یک msgid، یک URL کامل به بایگانی public-inbox ارائه دهید، یا آن را به ورودی استاندارد stdin هدایت کنید.

برای دیدن گزینه‌ها و توضیحات آنها، b4 mbox --help را ببینید.

مثال‌ها

بارگیری یک رشته گفتگو از سرور پیش‌فرض public-inbox و ذخیره آن در دایرکتوری فعلی به عنوان یک فایل .mbox.
بارگیری یک رشته گفتگو از پوشه ~/Mail شما و ذخیره آن در دایرکتوری فعلی به عنوان یک فایل .mbox.
بارگیری رشته گفتگو از این سرور public-inbox و افزودن آن به صندوق پستی موجود شما، با فیلتر کردن موارد تکراری موجود در پوشه صندوق پستی شما.

این دستور اجازه می‌دهد رشته‌های گفتگو را از یک نمونه public-inbox بازیابی کرده و آنها را برای اعمال در یک مخزن گیت با استفاده از دستور "git am" آماده کنید. این دستور به طور خودکار عملیات زیر را انجام می‌دهد:

  • انتخاب آخرین نسخه ارسال‌شده از سری وصله (می‌تواند با -c رشته‌های جدیدتر را نیز بررسی کند)
  • بررسی امضاهای DKIM و گواهی patatt روی همه وصله‌ها و پیام‌های بازبینی کد
  • تطبیق و جمع‌آوری تمام برچسب‌های بازبینی کد ارسال‌شده (Reviewed-by، Acked-by و غیره) و قرار دادن آنها در پیام کامیت
  • افزودن برچسب Signed-off-by خودتان (با -s)
  • بازسازی سری‌ها از روی به‌روزرسانی‌های جزئی (مثلاً شخصی به جای کل سری، نسخه v2 یک وصله منفرد را ارسال کرده است)
  • حدس زدن اینکه وصله‌ها به کجای تاریخچه درخت تعلق دارند، در صورتی که پایه دقیق کامیت مشخص نشده باشد (با -g)
  • آماده‌سازی درخت برای ادغام سه‌طرفه (با -3)
  • گلچین کردن (cherry-pick) زیرمجموعه‌ای از وصله‌ها از یک سری بزرگ (با -P)

توجه: مگر اینکه قصد داشته باشید پیش از اعمال بر روی مخزن گیت کارهای مقدماتی انجام دهید (مانند ادغام ۳ طرفه)، بهتر است از b4 shazam برای اعمال سری بازیابی‌شده استفاده کنید.

برای دیدن گزینه‌ها و توضیحات آنها، b4 am --help را ببینید.

مثال‌ها

بارگیری یک رشته گفتگو از سرور پیش‌فرض public-inbox، اعمال تمام برچسب‌های پیگیری، افزودن برچسب Signed-Off-By خودتان به همراه برچسب Link: که مبدا وصله را نشان می‌دهد، سپس ذخیره فایل .mbox حاصل در دایرکتوری فعلی آماده برای اعمال با "git am".
مشابه مثال قبل، اما فقط انتخاب وصله‌های ۱، ۲ و ۳ از کل سری.
بارگیری سری و آماده‌سازی درخت گیت محلی برای یک ادغام سه‌طرفه با اطمینان از وجود همه حباب‌های نمایه (index blobs).
بارگیری سری و نمایش اینکه آیا آزمون‌ها و بررسی‌ها را با موفقیت پشت سر می‌گذارد یا خیر. می‌توانید دستور را با استفاده از گزینه پیکربندی b4.am-perpatch-check-cmd مشخص کنید. برای هسته لینوکس، پیش‌فرض متداول‌ترین مجموعه گزینه‌های checkpatch.pl خواهد بود.

این دستور بسیار شبیه به b4 am است، اما وصله‌ها را نیز مستقیماً با استفاده از git am بر روی درخت گیت فعلی اعمال می‌کند. متناوباً، هنگامی که با -H استفاده می‌شود، می‌تواند سری وصله‌ها را به داخل FETCH_HEAD واکشی کند گویی که یک pull request است، آماده برای بازبینی و ادغام. B4 از کاور لتر به عنوان قالبی برای کامیت ادغام استفاده می‌کند.

اگر می‌خواهید git-merge را به طور خودکار فراخوانی کنید، می‌توانید به جای -H از -M استفاده کنید. B4 به طور خودکار ویرایشگر را باز می‌کند و به شما امکان می‌دهد پیام کامیت ادغام را ویرایش کنید.

هنگام استفاده از -H، می‌توانید --resolve را ارسال کنید تا تعارض‌های ادغام را به صورت تعاملی با استفاده از یک ادغام سه‌طرفه حل کنید.

توجه: گزینه‌های -M و -H برای سری‌هایی که اطلاعات base-commit آنها با یک شیء در درخت محلی شما مطابقت دارد بهترین عملکرد را دارند.

برای دیدن گزینه‌ها و توضیحات آنها، b4 shazam --help را ببینید.

مثال‌ها

بارگیری یک رشته گفتگو از سرور پیش‌فرض public-inbox، اعمال تمام برچسب‌های پیگیری، افزودن برچسب Signed-Off-By خودتان به همراه برچسب Link: که مبدا وصله را نشان می‌دهد، سپس ادغام این کامیت در مخزن گیت فعلی با استفاده از کاور لتر به عنوان قالب کامیت ادغام.
مشابه مثال قبل، اما مبنای ادغام را به شیء کامیت ارائه‌شده مجبور می‌کند به جای آنچه در خود سری وصله ذکر شده است.

این دستور برای کار با درخواست‌های ادغام ارائه‌شده با استفاده از git-request-pull است. در مقایسه با استفاده مستقیم از git، مزایای زیر را فراهم می‌کند:

  • می‌تواند قبل از انجام git fetch بررسی کند که آیا pull قبلاً اعمال شده است یا خیر
  • امضای روی تگ یا کامیت رأس مشخص‌شده در pull request را بررسی می‌کند
  • می‌تواند درخواست‌های ادغام اعمال‌شده را ردیابی کرده و با استفاده از b4 ty به ارسال‌کنندگان پاسخ دهد

برای دیدن گزینه‌ها و توضیحات آنها، b4 pr --help را ببینید.

مثال‌ها

بارگیری پیام حاوی pull-request و اعمال آن بر روی درخت گیت فعلی.

اگر برخی وصله‌ها را در درخت خود بازیابی و اعمال کرده‌اید، باید بتوانید «تشکرکننده خودکار» را اجرا کنید که از ردیابی شناسه وصله (patch-id) و عنوان کامیت استفاده می‌کند تا بفهمد کدام سری از مواردی که بازیابی کرده‌اید را قبلاً در درخت خود اعمال نموده‌اید. این فرآیند معمولاً بسیار سریع و نسبتاً دقیق است.

برای ارسال مستقیم نامه‌ها با استفاده از -S، باید بخش پیکربندی‌شده [sendemail] را در جایی از فایل‌های پیکربندی گیت مربوطه خود داشته باشید. به طور پیش‌فرض، b4 ty فایل‌های .thanks را در دایرکتوری فعلی می‌نویسد که می‌توانید آنها را ویرایش کرده و با دستوری مانند mutt -f thanks.file ارسال کنید.

برای دیدن گزینه‌ها و توضیحات آنها، b4 ty --help را ببینید.

مثال‌ها

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

زیردستور diff اجازه مقایسه دو نسخه مختلف از یک سری وصله را با استفاده از git range-diff می‌دهد. توجه داشته باشید که برای انجام مقایسه range-diff، هر دو نسخه باید به طور تمیز بر روی درخت فعلی اعمال شوند، که ممکن است همیشه قابل دستیابی نباشد.

برای دیدن گزینه‌ها و توضیحات آنها، b4 diff --help را ببینید.

مثال‌ها

رشته گفتگوی مطابق با msgid مشخص‌شده را بازیابی می‌کند و تلاش می‌کند نسخه قبلی سری را به طور خودکار پیدا کند. در صورت موفقیت، خروجی git range-diff را که تفاوت‌های وصله را مقایسه می‌کند، نمایش می‌دهد.

با داشتن یک کامیت در مخزن محلی گیت، این دستور تلاش می‌کند تا ارسال اولیه لیست پستی را در یک نمونه public-inbox پیدا کند. این دستور از چندین راهبرد به ترتیب قابلیت اطمینان استفاده می‌کند:

  • تطبیق با patch-id پایدار (چندین الگوریتم diff را امتحان می‌کند)
  • تطبیق بر اساس ایمیل نویسنده و موضوع
  • تطبیق بر اساس خط From: درون متن (برای وصله‌هایی که از آدرسی متفاوت از نویسنده کامیت ارسال شده‌اند)

اگر --all مشخص شده باشد، b4 همچنین تلاش خواهد کرد تا با استفاده از تطبیق change-id یا موضوع، تمام نسخه‌های دیگر همان سری را پیدا کند.

برای دیدن گزینه‌ها و توضیحات آنها، b4 dig --help را ببینید.

مثال‌ها

یافتن ارسال لیست پستی برای کامیت داده‌شده و چاپ پیوندی به آن.
یافتن تمام نسخه‌های سری حاوی کامیت داده‌شده.
یافتن ارسال و نمایش اینکه چه کسانی در ابتدا در To/Cc گنجانده شده بودند.
یافتن ارسال و ذخیره کامل رشته گفتگو به عنوان یک فایل mbox.

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

توجه: این بخش از b4 در حال توسعه فعال است و بهبودهایی برای آینده نزدیک برنامه‌ریزی شده است.

برای دیدن گزینه‌ها و توضیحات آنها، b4 kr --help را ببینید.

مثال‌ها

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

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

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

جریان کاری شامل سه مرحله است: ثبت‌نام یک مخزن، ردیابی یک یا چند سری، و راه‌اندازی TUI برای بازبینی و اقدام روی آنها.

برای دیدن گزینه‌ها و توضیحات آنها، b4 review --help و b4 review <subcommand> --help را ببینید.

مثال‌ها

ثبت‌نام مخزن فعلی برای ردیابی بازبینی.
ردیابی یک سری با شناسه پیام (message-id)، آدرس اینترنتی (URL)، یا شناسه تغییر (change-id).
راه‌اندازی رابط کاربری متنی (TUI) بازبینی.

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


https://b4.docs.kernel.org/en/latest/contributor/overview.html

برای دیدن گزینه‌ها، خروجی دستورات b4 prep --help، b4 trailers --help و b4 send --help را ببینید.

مثال‌ها

شروع یک شاخه جدید، منشعب‌شده از تگ v6.4-rc4، و آماده‌سازی آن برای افزودن وصله‌های بیشتر.
ویرایش کاور لتر برای سری فعلی. این مرحله برای اکثر ارسال‌های تک‌وصله‌ای لازم نیست.
یافتن تمام آدرس‌هایی که باید رونوشتی از ارسال سری وصله را دریافت کنند و افزودن آنها به کاور لتر.
اجرای بررسی‌های پیکربندی‌شده روی سری شما برای شناسایی هرگونه مشکل احتمالی. برای هسته لینوکس، این کار checkpatch.pl را با مجموعه پارامترهای توصیه‌شده اجرا می‌کند.
تولید وصله‌هایی که b4 قصد ارسال آنها را دارد و ذخیره آنها در دایرکتوری مشخص‌شده. این به شما امکان می‌دهد سری‌ها را قبل از ارسال واقعی بررسی کنید.
ارسال نسخه "پیش‌نمایش" از سری برای بررسی توسط شخصی پیش از ارسال آن به بالادست (upstream).
بازیابی هرگونه برچسب بازبینی کد ارائه‌شده برای سری شما و اعمال آنها بر روی شاخه فعلی.

پیکربندی B4 از طریق git-config(1) انجام می‌شود، بنابراین اگر جریان کاری شما بر اساس پروژه تغییر می‌کند، می‌توانید آن را در فایل سطح بالای $HOME/.gitconfig یا در فایل اختصاصی هر مخزن .git/config ذخیره کنید.

برای دیدن گزینه‌های پیکربندی موجود، مستندات آنلاین را در https://b4.docs.kernel.org/en/latest/config.html ببینید.

دستوراتی که درخواست‌های راه دور HTTP ایجاد می‌کنند ممکن است با تنظیم متغیر محیطی HTTPS_PROXY برای استفاده از یک پروکسی پیکربندی شوند، همان‌طور که در https://docs.python-requests.org/en/latest/user/advanced/#proxies شرح داده شده است.

لطفاً درخواست‌های پشتیبانی را به <tools@kernel.org> ایمیل کنید، یا بایگانی لیست را در https://lore.kernel.org/tools مرور کنید.

mricon@kernel.org

مجوز: GPLv2+

بنیاد لینوکس (The Linux Foundation) و مشارکت‌کنندگان

2026-03-16 0.15