| jj-util-exec(1) | General Commands Manual | jj-util-exec(1) |
نام (NAME)
jj-util-exec - اجرای یک دستور خارجی از طریق jj
خلاصه دستور (SYNOPSIS)
jj util exec [-R|--repository] [--ignore-working-copy] [--no-integrate-operation] [--ignore-immutable] [--at-operation] [--debug] [--color] [--quiet] [--no-pager] [--config] [--config-file] [-h|--help] <COMMAND> [ARGS]
توضیحات (DESCRIPTION)
یک دستور خارجی را از طریق jj اجرا میکند.
این دستور به متغیر محیطی JJ_WORKSPACE_ROOT دسترسی خواهد داشت.
این قابلیت برای نامهای مستعار (aliases) دلخواه مفید است.
!! هشدار !!
روش زیر صرفاً یک نحوِ آسان برای اجرای کدهای دلخواه بر روی سیستم شما فراهم میآورد. استفادهٔ غیرمسئولانه از آن ممکن است آسیبهایی به همراه داشته باشد که از مختل کردن عملکرد jj undo تا حذف کامل سیستم فایل شما متغیر است. هنگام نوشتن این نامهای مستعار، همان میزان احتیاطی را رعایت کنید که هنگام تایپ مستقیم دستورات در ترمینال به کار میبرید!
این ویژگی ممکن است در آینده حذف شده یا با یک زبان اسکریپتنویسی تعبیهشده (embedded) جایگزین شود.
فرض کنید اسکریپتی به نام «my-jj-script» در مسیر $PATH خود دارید و میخواهید آن را بهصورت jj my-script اجرا کنید. برای رسیدن به این هدف، خط زیر را به فایل پیکربندی خود اضافه کنید:
[aliases] my-script = ["util", "exec", "--", "my-jj-script"] # ^^^^ # This makes sure that flags are passed to your script instead of parsed by jj.
اگر نمیخواهید اسکریپت خود را در فایلی جداگانه مدیریت کنید، حتی میتوانید آن را بهصورت درونخطی (inline) در فایل پیکربندی خود قرار دهید:
[aliases] my-inline-script = ["util", "exec", "--", "bash", "-c", """ set -euo pipefail echo "Look Ma, everything in one file!" echo "args: $@" """, ""] # ^^ # This last empty string will become "$0" in bash, so your actual arguments # are all included in "$@" and start at "$1" as expected.
نکته: شیبنگها (مانند #!/usr/bin/env) ضروری نیستند، چرا که شما پیشاپیش اسکریپت خود را صراحتاً به پوستهٔ مناسب ارسال میکنید.
گزینهها (OPTIONS)
- -h, --help
- چاپ راهنما (مشاهده خلاصه با '-h')
- <COMMAND>
- دستور خارجی برای اجرا
- [ARGS]
- آرگومانهایی که به دستور خارجی ارسال میشوند
گزینههای عمومی (GLOBAL OPTIONS)
- -R, --repository <REPOSITORY>
- مسیر مخزنی
که عملیات
روی آن
انجام
میشود
بهطور پیشفرض، Jujutsu به دنبال نزدیکترین دایرکتوری .jj/ در اجداد دایرکتوری کاری فعلی میگردد.
- --ignore-working-copy
- از رونوشت
کاری (working copy)
اسنپشات
گرفته نشود
و آن را
بهروزرسانی
نکند
بهطور پیشفرض، Jujutsu در آغاز هر دستور از رونوشت کاری اسنپشات میگیرد. همچنین در صورت تغییر کامیت رونوشت کاری (`@`) توسط دستور، رونوشت کاری در پایان دستور نیز بهروزرسانی میشود. اگر میخواهید از اسنپشات گرفتن از رونوشت کاری جلوگیری کنید و در عوض یک کامیت رونوشت کاری احتمالاً قدیمی را مشاهده نمایید، میتوانید از --ignore-working-copy استفاده کنید. این گزینه برای مثال در اعلان خط فرمان (command prompt) مفید است، بهویژه اگر فرآیند دیگری داشته باشید که کامیتهای رونوشت کاری را ثبت میکند.
بارگذاری مخزن در یک عملیات خاص با --at-operation بهطور ضمنی گزینهٔ --ignore-working-copy را فعال میکند.
- --no-integrate-operation
- اجرای
دستور طبق
معمول بدون
ادغام هیچ
عملیاتی
هنگامی که این گزینه مشخص شود، عملیات همچنان طبق معمول ایجاد خواهند شد اما در تاریخچهٔ عملیات (operation log) ادغام نمیشوند. همچنین رونوشت کاری نیز بهروزرسانی نخواهد شد.
دستور، شناسهٔ عملیات حاصل را چاپ خواهد کرد. میتوانید آن را برای مثال به jj --at-op ارسال کنید تا وضعیت بهدستآمدهٔ مخزن را بررسی نمایید، یا آن را به jj op restore بدهید تا مخزن به آن وضعیت بازگردانده شود. همچنین میتوانید شناسه را به jj op integrate بدهید تا عملیات ادغام شود.
توجه داشته باشید که این کار مانع اثرات جانبی خارج از مخزن *نمیشود*. برای نمونه، jj git push --no-integrate-operation همچنان عملیات ارسال (push) را انجام خواهد داد.
- --ignore-immutable
- اجازه
بازنویسی
کامیتهای
تغییرناپذیر
(immutable)
بهطور پیشفرض، Jujutsu از بازنویسی کامیتهایی که در مجموعه کامیتهای تغییرناپذیر پیکربندی شدهاند جلوگیری میکند. این گزینه آن بررسی را غیرفعال کرده و اجازه میدهد هر کامیتی بهجز کامیت ریشه (root commit) را بازنویسی کنید.
این گزینه تنها بر این بررسی تأثیر میگذارد و روی مجموعه بازنگری (revset) immutable_heads() یا کلمه کلیدی قالب immutable اثری ندارد.
- --at-operation <AT_OPERATION>
- عملیاتی که
مخزن در
نقطهٔ آن
بارگذاری
شود
عملیاتی که مخزن باید در نقطهٔ آن بارگذاری شود. بهطور پیشفرض، Jujutsu مخزن را در تازهترین عملیات، یا در صورت وجود عملیاتهای واگرا، در نقطهٔ ادغام آنها بارگذاری میکند.
میتوانید از --at-op=<operation ID> استفاده کنید تا ببینید مخزن در یک عملیات پیشین چگونه بوده است. برای نمونه jj --at-op=<operation ID> st آنچه را که jj st در زمان پایان یافتن آن عملیات نشان میداد به شما نمایش میدهد. مقدار --at-op=@ تقریباً همانند حالت پیشفرض است، با این تفاوت که عملیاتهای واگرا هرگز ادغام نخواهند شد.
از دستور jj op log برای یافتن شناسهٔ عملیات دلخواه خود استفاده کنید. هر پیشوند یکتایی از شناسهٔ عملیات کافی خواهد بود.
هنگام بارگذاری مخزن در یک عملیات پیشین، رونوشت کاری نادیده گرفته میشود، درست مانند اینکه --ignore-working-copy مشخص شده باشد.
امکان اجرای دستورات تغییردهنده (mutating) هنگام بارگذاری مخزن در یک عملیات پیشین وجود دارد. انجام این کار معادل اجرای همزمان دستورات از مبدأ آن عملیات پیشین است. بهندرت دلیلی برای انجام چنین کاری وجود دارد، اما امکانپذیر است.
- --debug
- فعالسازی ثبت وقایع اشکالزدایی (debug logging)
- --color <WHEN>
- تعیین زمان
استفاده از
رنگ در
خروجی
مقادیر ممکن:
- always
- never
- debug
- auto
- --quiet
- بیصدا
کردن
خروجیهای
غیر اصلی
دستور
برای نمونه، jj file list همچنان فایلها را فهرست میکند، اما به شما اطلاع نمیدهد که آیا از رونوشت کاری اسنپشات گرفته شده یا نوادگان بازپایهریزی شدهاند یا خیر.
هشدارها و خطاها همچنان چاپ خواهند شد.
- --no-pager
- غیرفعال کردن صفحهبندیکننده (pager)
- --config <NAME=VALUE>
- گزینههای
پیکربندی
اضافی
(قابلیت
تکرار دارد)
نام باید بهصورت کلیدهای نقطهدار TOML مشخص شود. مقدار باید بهصورت یک عبارت TOML تعیین شود. در صورتی که مقدار رشتهای درون ساختارهای TOML (مانند نشانهگذاری آرایه) محصور نشده باشد، میتوان از علامتهای نقلقول صرفنظر کرد.
- --config-file <PATH>
- فایلهای پیکربندی اضافی (قابلیت تکرار دارد)
همچنین ببینید (SEE ALSO)
| exec |