jj-squash(1) General Commands Manual jj-squash(1)

jj-squash - انتقال تغییرات از یک بازبینی به بازبینی دیگر

jj squash [-r|--revision] [-R|--repository] [-f|--from] [--ignore-working-copy] [--no-integrate-operation] [-t|--into] [--ignore-immutable] [-o|--onto] [-A|--insert-after] [--at-operation] [-B|--insert-before] [--debug] [--color] [-m|--message] [--quiet] [-u|--use-destination-message] [--editor] [--no-pager] [--config] [-i|--interactive] [--config-file] [--tool] [-k|--keep-emptied] [-h|--help] [FILESETS]

انتقال تغییرات از یک بازبینی به بازبینی دیگر

بدون هیچ گزینه‌ای، تغییرات را از بازبینی رونوشت کاری به بازبینی والد منتقل می‌کند.

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

با گزینه‌های `--from` و/یا `--into`، تغییرات را از/به بازبینی‌های داده‌شده منتقل می‌کند. اگر هر یک از آن‌ها مشخص نشود، پیش‌فرض آن کامیت رونوشت کاری است. برای نمونه، `jj squash --into @--` تغییرات را از کامیت رونوشت کاری به والد والد منتقل می‌کند.

اگر پس از خارج کردن تغییرات، بازبینی مبدأ در مقایسه با والد(های) خود خالی شود و `--keep-emptied` تنظیم نشده باشد، رها (abandon) خواهد شد. بدون `--interactive` یا مسیرها، بازبینی مبدأ همیشه خالی خواهد بود.

اگر بازبینی مبدأ رها شود و هم مبدأ و هم مقصد دارای توضیحات غیرخالی باشند، از شما خواسته می‌شود که توضیحات ترکیبی را وارد کنید. اگر یکی از آن‌ها خالی باشد، از دیگری استفاده خواهد شد.

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

نام «squash» از ایدهٔ ترکیب کردن (له کردن/فشرده‌سازی) تغییرات چند بازبینی با یکدیگر گرفته شده است.

ویژگی‌های آزمایشی (EXPERIMENTAL FEATURES)

یک رابط کاربری جایگزین برای فشرده‌سازی (squashing) از طریق گزینه‌های `-o`، `-A` و `-B` در دسترس است. استفاده از هر یک از این گزینه‌ها یک کامیت جدید ایجاد می‌کند. آن‌ها می‌توانند به همراه یک یا چند گزینهٔ `--from` استفاده شوند (اگر هیچ `--from` مشخص نشود، `--from @` فرض می‌شود).

بازبینی جهت فشرده‌سازی در والد خود (پیش‌فرض: @). ناسازگار با گزینه‌های آزمایشی `-o`/`-A`/`-B`
بازبینی(هایی) که فشرده‌سازی از آن‌ها انجام شود (پیش‌فرض: @)
بازبینی که فشرده‌سازی در آن انجام شود (پیش‌فرض: @)
(آزمایشی) بازبینی(هایی) که به عنوان والد کامیت جدید استفاده شوند (برای ایجاد کامیت ادغام قابل تکرار است)
(آزمایشی) بازبینی(هایی) که کامیت جدید پس از آن‌ها درج شود (برای ایجاد کامیت ادغام قابل تکرار است)
(آزمایشی) بازبینی(هایی) که کامیت جدید پیش از آن‌ها درج شود (برای ایجاد کامیت ادغام قابل تکرار است)
توضیحات مورد استفاده برای بازبینی فشرده‌شده (ویرایشگر باز نشود)
استفاده از توضیحات بازبینی مقصد و دور انداختن توضیحات بازبینی(های) مبدأ
باز کردن ویرایشگر برای ویرایش توضیحات تغییر

هنگام استفاده از `--message`، باز شدن ویرایشگر را الزامی می‌کند تا امکان ویرایش پیام پس از آن فراهم شود.

انتخاب تعاملی بخش‌هایی که باید فشرده‌سازی (squash) شوند
مشخص کردن ویرایشگر تفاوت (diff editor) مورد استفاده (به معنای --interactive است)
بازبینی مبدأ رها (abandon) نخواهد شد
چاپ راهنما (مشاهده خلاصه با '-h')
[FILESETS]
انتقال تنها تغییرات مربوط به این مسیرها (به جای تمام مسیرها)

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

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

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

به‌طور پیش‌فرض، Jujutsu در ابتدای هر دستور از رونوشت کاری اسنپ‌شات می‌گیرد. همچنین در پایان دستور، اگر دستور کامیت رونوشت کاری (`@`) را تغییر داده باشد، رونوشت کاری به‌روزرسانی می‌شود. اگر می‌خواهید از اسنپ‌شات گرفتن از رونوشت کاری صرف‌نظر کنید و در عوض یک کامیت رونوشت کاری احتمالاً قدیمی را مشاهده کنید، می‌توانید از `--ignore-working-copy` استفاده کنید. این مورد می‌تواند برای مثال در خط فرمان (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` همچنان فایل‌ها را فهرست می‌کند، اما به شما اطلاع نمی‌دهد که آیا از رونوشت کاری اسنپ‌شات گرفته شده یا نوادگان بازپایه‌ریزی (rebase) شده‌اند یا خیر.

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

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

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

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