jj-gerrit-upload(1) General Commands Manual jj-gerrit-upload(1)

jj-gerrit-upload - بارگذاری تغییرات در Gerrit برای بازبینی کد، یا به‌روزرسانی تغییرات موجود

jj gerrit upload [-r|--revision] [-R|--repository] [-b|--remote-branch] [--ignore-working-copy] [--no-integrate-operation] [--remote] [--ignore-immutable] [-n|--dry-run] [--at-operation] [--reviewer] [--cc] [--debug] [--color] [-l|--label] [--quiet] [--topic] [--hashtag] [--no-pager] [--config] [-m|--message] [--config-file] [--edit] [--wip] [--ready] [--private] [--remove-private] [--publish-comments] [--no-publish-comments] [--notify] [--submit] [--skip-validation] [--merged] [--ignore-attention-set] [--deadline] [--custom] [-o|--option] [--trace] [-h|--help]

بارگذاری تغییرات در Gerrit برای بازبینی کد، یا به‌روزرسانی تغییرات موجود

بارگذاری مجموعه‌ای از بازبینی‌ها در Gerrit یک «تغییر» (change) مجزا برای هر بازبینی موجود در مجموعه بازبینی (revset) و تمام نیاکان تغییرپذیر آن‌ها ایجاد می‌کند. سپس این تغییرات برای بازبینی در نمونهٔ Gerrit شما در دسترس خواهند بود.

اگر تغییری از قبل برای یک بازبینی مشخص وجود داشته باشد (یعنی حاوی همان Change-Id باشد)، این دستور محتویات تغییر موجود را به‌روزرسانی می‌کند تا با آن مطابقت داشته باشد.

نکته: هر کامیتی در مجموعه بازبینی مشخص‌شده که فاقد دنبالهٔ (trailer) Change-Id باشد، بر اساس شناسهٔ تغییر Jujutsu یکی برای آن تولید خواهد شد. این دنباله فقط به کامیت بارگذاری‌شده اضافه می‌شود، به این معنی که شناسهٔ کامیت حاصل که در Gerrit بارگذاری شده ممکن است با شناسهٔ کامیت محلی شما مطابقت نداشته باشد. در نتیجه، هنگام واکشی یک تغییر ادغام‌شده به مخزن محلی خود، ممکن است با واگرایی مواجه شوید. برای رفع این مشکل، می‌توانید تغییر محلی خود را رها کنید یا آن را با دستور jj rebase --skip-emptied ... روی شاخهٔ اصلی (trunk) بازپایه‌ریزی (rebase) کنید که واگرایی را برطرف می‌کند. همچنین، می‌توانید پیکربندی زیر را به تنظیمات Jujutsu خود اضافه کنید تا پیش از اجرای jj gerrit upload دنباله‌های Change-Id به‌طور خودکار به کامیت‌های محلی شما اضافه شوند:

[templates]
commit_trailers = '''
if(
  !trailers.contains_key("Change-Id"),
  format_gerrit_change_id_trailer(self)
)
'''

همچنین به مستندات Jujutsu دربارهٔ Gerrit مراجعه کنید:

https://docs.jj-vcs.dev/latest/gerrit

بازبینی‌هایی که باید در Gerrit بارگذاری شوند

تمام نیاکان تغییرپذیر بازبینی‌های مشخص‌شده نیز ارسال خواهند شد. این بدان معناست که jj gerrit upload -r foo معادل jj gerrit upload -r 'mutable()::foo' است.

اگر این گزینه مشخص نشود، در صورت وجود توضیحات، @ و در غیر این صورت @- بارگذاری خواهد شد.

موقعیتی که قرار است تغییرات شما در آن اعمال شوند

این باید یک شاخه در ریموت باشد. مقدار پیش‌فرض، تنظیم gerrit.default-remote-branch است.

ریموت Gerrit که باید تغییرات به آن ارسال (push) شوند

این گزینه می‌تواند به هر ریموت گیت پیکربندی‌شده اشاره کند یا یک نشانی کامل SSH باشد. مقدار پیش‌فرض، تنظیم gerrit.default-remote است.

فقط نمایش مواردی که در ریموت تغییر خواهند کرد؛ تغییرات به Gerrit ارسال نشوند
افزودن این نشانی‌های ایمیل به عنوان بازبین (قابل تکرار)
رونوشت (CC) این نشانی‌های ایمیل در تغییر (قابل تکرار)
افزودن برچسب‌های زیر که توسط Gerrit پیکربندی شده‌اند (قابل تکرار)

هر برچسب می‌تواند یک پسوند از مقداری که باید تنظیم شود داشته باشد، مانند "+2". در صورتی که مقداری تنظیم نشده باشد، مقدار پیش‌فرض "+1" است.

توجه داشته باشید که Gerrit برچسب‌هایی را که روی میزبان Gerrit شما موجود نیستند، نادیده می‌گیرد.

مثال‌ها:
- --label=Commit-Queue برچسب Commit-Queue را روی +1 تنظیم می‌کند.
- --label=Commit-Queue+2 آن را روی +2 تنظیم می‌کند.

اعمال یک موضوع (topic) روی تغییر

تغییرات را می‌توان بر اساس موضوع گروه‌بندی کرد، و Gerrit می‌تواند طوری پیکربندی شود که تمام تغییرات یک موضوع را با یک کلیک با هم ثبت کند.

ببینید: https://gerrit-review.googlesource.com/Documentation/intro-user.html#topics

اعمال یک هشتگ روی تغییر (قابل تکرار)

هشتگ‌ها رشته‌های متنی آزاد هستند که همانند شبکه‌های اجتماعی با یک تغییر مرتبط می‌شوند. مشابه موضوعات، از هشتگ‌ها می‌توان برای گروه‌بندی تغییرات مرتبط به هم و جستجو با عملگر hashtag: استفاده کرد. برخلاف موضوعات، یک تغییر می‌تواند چندین هشتگ داشته باشد و آن‌ها تنها برای گروه‌بندی اطلاعاتی استفاده می‌شوند. تغییرات دارای هشتگ یکسان لزوماً با هم ثبت نمی‌شوند.

ببینید: https://gerrit-review.googlesource.com/Documentation/intro-user.html#hashtags

توضیحات مربوط به مجموعه وصله (patch set)
ارسال تغییر به عنوان ویرایش تغییر (change edit)

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

علامت‌گذاری تغییر به عنوان کار در حال انجام (WIP)

ببینید: https://gerrit-review.googlesource.com/Documentation/intro-user.html#wip

علامت‌گذاری تغییر به عنوان آماده (دیگر در حال انجام نیست)
علامت‌گذاری تغییر به عنوان خصوصی (private)

ببینید: https://gerrit-review.googlesource.com/Documentation/intro-user.html#private-changes

خارج کردن تغییر از حالت خصوصی
انتشار نظرات پیش‌نویس برای تغییر مشخص‌شده
عدم انتشار نظرات پیش‌نویس برای تغییر مشخص‌شده

این گزینه تنها زمانی مفید است که کاربر Gerrit را طوری پیکربندی کرده باشد که نظرات را به طور پیش‌فرض منتشر کند.

اعلان‌های ایمیلی به چه کسانی ارسال شود (پیش‌فرض: all)

مقادیر مجاز:

  • none: هیچ ایمیلی ارسال نشود
  • owner: تنها به مالک تغییر اطلاع داده شود
  • owner-reviewers: تنها به مالک تغییر و بازبین‌ها اطلاع داده شود
  • all: تمام کاربران مرتبط، از جمله مالک، بازبین‌ها، افراد رونوشت‌شده (cc)، کاربرانی که تغییر را ستاره‌دار کرده‌اند و کاربرانی که روی فایل‌های تغییر رصد تنظیم کرده‌اند
ثبت مستقیم تغییرات با دور زدن فرآیند بازبینی کد
هنگامی که --submit مشخص شده باشد، اعتبارسنجی‌ها نادیده گرفته شوند
ایجاد یک تغییر جدید، حتی اگر تغییر از قبل ادغام شده باشد
مجموعه توجه (attention set) هنگام بارگذاری دستکاری نشود
مهلت زمانی که پس از آن عملیات ارسال (push) باید لغو شود
ارسال مقادیر سفارشی کلیددار زیر به Gerrit (قابل تکرار)

ببینید: https://gerrit-review.googlesource.com/Documentation/user-upload.html#custom_keyed_values

ارسال یک گزینهٔ `git push -o` (قابل تکرار)
برای اشکال‌زدایی Gerrit

ببینید: https://gerrit-review.googlesource.com/Documentation/user-upload.html#trace

چاپ راهنما (مشاهده خلاصه با '-h')

مسیر مخزنی که باید روی آن کار شود

به‌طور پیش‌فرض، 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) را بازنویسی کنید.

این گزینه فقط بر روی این بررسی تأثیر می‌گذارد و روی مجموعه بازبینی (revset) 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-gerrit(1)

upload