ریویو تغییرات بزرگ با Jujutsu
خلاصهٔ کاملتر
نویسنده شش ماهه که Jujutsu (دستور jj) رو جایگزین Git کرده و میگه حسابی بهش وابسته شده — مثل اینکه یه دست اضافه برای ساختن PRهای تمیز و قابلریویو درآورده. جالب اینه که تونسته بدون اینکه همکاراش مجبور به تغییر بشن، ازش استفاده کنه.
مسئلهای که حل میکنه اینه: با زیاد شدن استفاده از ایجنتهای کدنویسی، سایز PRها داره بزرگتر میشه. توی PRهای بزرگ، دنبال کردن اینکه چه فایلهایی رو دیدی و ازشون راضی بودی سخت میشه، مخصوصاً وقتی هنوز ساختار کلی کد رو نمیفهمی و باید مدام بین فایلها بپری.
ورکفلوش سهمرحلهایه: اول تغییر همکارت رو با jj duplicate کپی میکنی و باهاش jj edit میکنی؛ بعد یه کامیت خالی جلوش میسازی؛ و آخرش کدها رو ریویو میکنی و هر تیکه رو که راضی بودی، توی کامیت والد squash میکنی تا چیزی باقی نمونه:
jj duplicate big-change@origin
jj edit kow
jj new --no-edit --insert-before @ --message 'review: big-change'
jj squash .python-versionاون کامیت خالی در واقع حکم «مغز» (brain) رو داره؛ دیدی که چی رو ریویو کردی توش جمع میشه. میتونی با jj diff --stat پیشرفتتو ببینی، هر هانک یا کل یه فایل رو وقتی تأیید کردی squash کنی، و هر لحظه بری سراغ کار دیگه و برگردی — همهچی همونجوری که گذاشتیش میمونه.
یه مزیت قشنگش اینه که توی محیط کدنویسیِ آشنای خودت ریویو میکنی؛ همون IDE و ابزارها، بدون اینکه مدام به وب UI سوییچ کنی. آخر کار هم با jj interdiff نسخهی ریویوشدهتو با اصل تغییر مقایسه میکنی تا کامنتها و یادداشتهایی که برای خودت گذاشتی رو ببینی و یهجا توی PR اعمالشون کنی.
نویسنده میگه این ورکفلو شبیه ایدهی matklad توی پست TigerBeetle و مفهوم «brain» توی سیستم ریویوی Iron در Jane Street هست، با این تفاوت که jj خیلی از دردسرهای Git (مثل مدیریت stash و staging area و conflictها) رو کم میکنه. حرف کلیش اینه که jj از سر راهت کنار میره و کل ظرفیت ذهنیت رو میذاره برای فکر کردن به خود کد.
نکات کلیدی:
- ورکفلو برای ریویو PRهای بزرگ: jj duplicate، یه کامیت خالی بهعنوان «مغز»، و squash کردن تدریجی تیکههای تأییدشده.
- پیشرفت ریویو توی تاریخچهی نسخه ثبت میشه و هر وقت بخوای میتونی قطع کنی و ادامه بدی.
- ریویو توی همون IDE و ابزار آشنا انجام میشه و آخرش با jj interdiff کامنتها جمع میشن.
- ایدهش از سیستمهای ریویوی TigerBeetle و Jane Street (مفهوم brain) الهام گرفته شده.




