jj-bisect-run(1) General Commands Manual jj-bisect-run(1)

jj-bisect-run - اجرای یک دستور مشخص برای یافتن نخستین بازنگری معیوب

jj bisect run [-R|--repository] [--ignore-working-copy] [--find-good] [--no-integrate-operation] [--ignore-immutable] [--at-operation] [--debug] [--color] [--quiet] [--no-pager] [--config] [--config-file] [-h|--help] <-r|--range> [COMMAND] [ARGS]

اجرای یک دستور مشخص برای یافتن نخستین بازنگری معیوب

از جستجوی دودویی برای یافتن نخستین بازنگری «معیوب» (bad) استفاده می‌کند. بازنگری‌ها با اجرای دستور ارائه‌شده ارزیابی می‌شوند (برای جزئیات بیشتر به مستندات مربوط به <COMMAND> مراجعه کنید).

فرض بر این است که اگر یک بازنگری مشخص «معیوب» باشد، تمامی نوادگان آن در بازه ورودی نیز «معیوب» هستند.

هدف نیم‌سازی را می‌توان با ارسال گزینهٔ --find-good معکوس کرد تا به دنبال نخستین بازنگری «سالم» (good) بگردد.

نکته: می‌توانید پوستهٔ خود را به‌عنوان دستور ارسال کنید، سپس آزمون‌های دستی را در یک اسکریپت اجرا نمایید. هنگامی که کارتان تمام شد، حتماً با یک کد خروج متناسب با نتیجهٔ مورد نظر از پوسته خارج شوید (برای نمونه، exit 0 برای علامت‌گذاری بازنگری به‌عنوان «سالم»).

مثال: برای اجرای cargo test همراه با اعمال تغییرات حاصل از بازنگری xyz:

jj bisect run --range v1.0..main -- bash -c "jj duplicate xyz -B @ &&
cargo test"

بازه بازنگری‌ها برای نیم‌سازی (قابلیت تکرار دارد)

این معمولاً بازه‌ای شبیه به v1.0..main است. فرض می‌شود که رأس‌های (heads) این بازه معیوب هستند. همچنین فرض بر این است که اجدادی از این بازه که در خود بازه قرار ندارند، سالم هستند.

اجتماع تمامی بازه‌های ارائه‌شده به‌عنوان ورودی برای نیم‌سازی استفاده می‌شود.

یافتن نخستین بازنگری سالم به‌جای بازنگری معیوب

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

چاپ راهنما (مشاهده خلاصه با '-h')
[COMMAND]
دستوری که برای تعیین وضعیت یک بازنگری اجرا می‌شود

هر بازنگری در حال بررسی، پیش از اجرای این دستور مستقیماً ویرایش خواهد شد (به رونوشت کاری جاری تبدیل می‌شود). وضعیت خروج دستور برای علامت‌گذاری بازنگری‌ها به‌عنوان «سالم» یا «معیوب» به کار می‌رود: وضعیت 0 به معنای «سالم»، وضعیت 125 به معنای صرف‌نظر کردن (skip) از آن بازنگری، وضعیت 127 (دستور یافت نشد) موجب لغو نیم‌سازی خواهد شد، و هر وضعیت خروج غیر صفر دیگری به معنای «معیوب» بودن بازنگری است.

شناسه کامیت هدف از طریق متغیر محیطی $JJ_BISECT_TARGET در دسترس دستور قرار دارد.

[ARGS]
آرگومان‌هایی که به دستور ارسال می‌شوند

نکته: از جداکنندهٔ -- برای ارسال آرگومان‌هایی که با - آغاز می‌شوند استفاده کنید. برای نمونه:

jj bisect run --range=... -- test -f some-file

مسیر مخزنی که عملیات روی آن انجام می‌شود

به‌طور پیش‌فرض، Jujutsu به دنبال نزدیک‌ترین دایرکتوری .jj/ در اجداد دایرکتوری کاری فعلی می‌گردد.

از رونوشت کاری اسنپ‌شات گرفته نشود و آن را به‌روزرسانی نکند

به‌طور پیش‌فرض، Jujutsu در آغاز هر دستور از رونوشت کاری اسنپ‌شات می‌گیرد. همچنین در پایان دستور، در صورتی که کامیت رونوشت کاری (`@`) توسط دستور تغییر یافته باشد، رونوشت کاری به‌روزرسانی می‌شود. اگر می‌خواهید از اسنپ‌شات گرفتن از رونوشت کاری جلوگیری کنید و در عوض یک کامیت رونوشت کاری احتمالاً قدیمی را ببینید، می‌توانید از گزینهٔ --ignore-working-copy استفاده کنید. این گزینه می‌تواند برای مثال در اعلان خط فرمان (command prompt) مفید باشد، به‌ویژه اگر فرایند دیگری دارید که کامیت‌های رونوشت کاری را ثبت می‌کند.

بارگذاری مخزن در یک عملیات خاص با گزینهٔ --at-operation به‌طور ضمنی موجب اعمال --ignore-working-copy می‌شود.

دستور طبق معمول اجرا شود اما هیچ عملیاتی ادغام نشود

هنگامی که این گزینه ارائه شود، عملیات همچنان مانند قبل ایجاد خواهند شد اما در تاریخچهٔ عملیات (operation log) ادغام نمی‌شوند. همچنین رونوشت کاری نیز به‌روزرسانی نخواهد شد.

دستور، شناسهٔ عملیات حاصل را چاپ خواهد کرد. می‌توانید آن شناسه را برای مثال به jj --at-op ارسال کنید تا وضعیت به‌دست‌آمدهٔ مخزن را بررسی نمایید، یا آن را به jj op restore بدهید تا مخزن به آن وضعیت بازگردانده شود. همچنین می‌توانید شناسه را به jj op integrate بدهید تا عملیات ادغام گردد.

توجه داشته باشید که این کار مانع از عوارض جانبی در خارج از مخزن *نمی‌شود*. برای نمونه، jj git push --no-integrate-operation همچنان عملیات ارسال (push) را انجام خواهد داد.

امکان بازنویسی کامیت‌های تغییرناپذیر مجاز باشد

به‌طور پیش‌فرض، Jujutsu از بازنویسی کامیت‌هایی که در مجموعه کامیت‌های تغییرناپذیر پیکربندی شده‌اند جلوگیری می‌کند. این گزینه آن بررسی را غیرفعال کرده و اجازه می‌دهد هر کامیتی به‌جز کامیت ریشه (root commit) را بازنویسی کنید.

این گزینه تنها بر این بررسی تأثیر می‌گذارد و روی مجموعه بازنگری `immutable_heads()` یا کلمه کلیدی قالب `immutable` اثری ندارد.

عملیاتی که مخزن باید در نقطهٔ آن بارگذاری شود

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

می‌توانید از --at-op=<operation_ID> استفاده کنید تا ببینید مخزن در یک عملیات پیشین چگونه بوده است. برای نمونه jj --at-op=<operation_ID> st آنچه را که jj st در زمان پایان یافتن آن عملیات نشان می‌داد به شما نمایش می‌دهد. مقدار --at-op=@ تقریباً همانند حالت پیش‌فرض عمل می‌کند، با این تفاوت که عملیات‌های واگرا هرگز ادغام نخواهند شد.

از دستور jj op log برای یافتن شناسه عملیات مورد نظر خود استفاده کنید. هر پیشوند یکتایی از شناسه عملیات کافی خواهد بود.

هنگام بارگذاری مخزن در یک عملیات پیشین، رونوشت کاری نادیده گرفته می‌شود، درست مانند اینکه گزینهٔ --ignore-working-copy مشخص شده باشد.

اجرای دستورات تغییردهنده (mutating) هنگام بارگذاری مخزن در یک عملیات پیشین امکان‌پذیر است. انجام این کار معادل اجرای همزمان دستورات از مبدأ آن عملیات پیشین است. به‌ندرت دلیلی برای انجام چنین کاری وجود دارد، اما ممکن است.

فعال‌سازی ثبت وقایع اشکال‌زدایی (debug logging)
تعیین زمان رنگی‌سازی خروجی

مقادیر ممکن:

  • always
  • never
  • debug
  • auto
بی‌صدا کردن خروجی‌های غیر اصلی دستور

برای نمونه، jj file list همچنان فایل‌ها را فهرست می‌کند، اما به شما نمی‌گوید که آیا از رونوشت کاری اسنپ‌شات گرفته شده یا نوادگان بازپایه‌ریزی شده‌اند یا خیر.

هشدارها و خطاها همچنان چاپ خواهند شد.

غیرفعال کردن صفحه‌بندی‌کننده (pager)
گزینه‌های پیکربندی اضافی (قابلیت تکرار دارد)

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

فایل‌های پیکربندی اضافی (قابلیت تکرار دارد)

jj(1), jj-bisect(1)

run