تغییرهای پشتهای
کار بزرگ را به زنجیرهای از شاخههای کوچک تقسیم کنید که هرکدام روی قبلی ساخته شده. zev stack پس از هر ویرایش همه را با هم دوباره روی هم میچیند، هرکدام را یک درخواست ادغام میکند و با ادغام شدنشان مرتب میکند.
دنبال فرمانی برای اجرا بگردید…
کار بزرگ را به زنجیرهای از شاخههای کوچک تقسیم کنید که هرکدام روی قبلی ساخته شده. zev stack پس از هر ویرایش همه را با هم دوباره روی هم میچیند، هرکدام را یک درخواست ادغام میکند و با ادغام شدنشان مرتب میکند.
بازبینی تغییرهای بزرگ سخت است. آنها را به گامهای کوچکی تقسیم کنید که روی هم ساخته میشوند، مثلاً API، بعد صفحهای که از آن استفاده میکند، بعد مستندات، تا بازبینها یکییکی بررسی کنند. این یک پشته است: زنجیرهای از شاخهها که هرکدام از روی قبلی شروع میشود.
zev stack add api # شاخهای تازه روی جایی که هستید، و رویش میروید# …کامیت…zev stack add ui # بعدی، روی api# …کامیت…zev stack # کل پشته: هر شاخه، کامیتهایش، جایی که هستیدStack api on main, newest on top ▶ ui 1 commit: UI page (you're here) api 1 commit: API endpoint mainzev stack up، down، top و bottom روی آن جابهجا میشوند.
بازبینی در api اصلاحی میخواهد. پایین بروید، اصلاح را کامیت کنید و zev stack restack را اجرا کنید. zev هر شاخهٔ بالاتر را روی نسخهٔ تازهٔ شاخهٔ زیرش rebase میکند و فقط کامیتهای خود آن شاخه را دوباره اعمال میکند. این همان گامی است که در Git با دست خراب میشود: rebase کردن docs پس از تغییر ui، کامیتهای قدیمی ui را دوباره میآورد، مگر اینکه git rebase --onto یادتان بماند.
zev stack bottom# …اصلاح و کامیت…zev stack restack✓ ui is back on top of api✓ docs is back on top of uiکل restack یک عملیات است، پس یک zev undo همهاش را برمیگرداند. اگر شاخهای تعارض داشته باشد، restack همانجا میایستد و میگوید کدام شاخه و چه باید کرد. هر چه پایینتر است restackشده میماند.
zev stack push✓ #12 api → main opened✓ #13 ui → api opened✓ #14 docs → ui openedهر شاخه push میشود و درخواست ادغام خودش را میگیرد که به شاخهٔ زیرش نشانه رفته، پس هرکدام فقط تغییر خودش را نشان میدهد. توضیح هرکدام کل پشته را فهرست میکند و نشان میدهد کدام را میبینید. پس از تغییرها دوباره push کنید تا همان درخواستها بهروز شوند: zev فهرست پشتهٔ خودش را جایگزین میکند و هر چه بالای آن نوشتهاید میماند.
اول درخواست ادغام پایینی را ادغام کنید. بعد:
zev stack sync✓ api is merged into main: taken out of the stackzev stack push✓ #13 ui → main retargetedsync شاخهٔ پایه را pull میکند، شاخههای ادغامشده را از پشته بیرون میآورد (و در رایانهٔ شما پاکشان میکند) و بقیه را روی پایه restack میکند. push بعدی درخواست ادغام بعدی را به main نشانه میرود. تا خالی شدن پشته تکرار کنید.
zev stack پشتهای که رویش هستیدzev stack add <name> شاخهای تازه روی این یکیzev stack up | down | top | bottomzev stack restack هر شاخه دوباره روی زیرینشzev stack sync pull پایه، کنار گذاشتن ادغامشدهها، restackzev stack push push همه، هرکدام یک درخواست ادغامzev stack remove [<name>] بیرون آوردن شاخه از پشته (شاخه میماند)zev stack list همهٔ پشتههای اینجاهمهشان --json و --brief را میپذیرند. یک عامل میتواند کار خودش را به پشتهای بازبینیپذیر تقسیم کند و وضعیت پشته را در یک خط بخواند:
$ zev stack --briefstack api on main: api(2) > ui*(1,restack) > docs(1)Git تکهها را دارد (branch، rebase --onto، ابزاری جدا برای باز کردن درخواست ادغام) اما چیزی ندارد که بداند این شاخهها به هم تعلق دارند. ترتیب را خودتان نگه میدارید، هر شاخه را با دست rebase میکنید، پس از هر ادغام مقصد درخواستها را با دست عوض میکنید، و یک rebase اشتباه کامیتها را تکراری میکند. در zev پشته بخشی از مخزن است، restack همهٔ شاخهها را یکجا و درست جابهجا میکند، و push و sync درخواستهای ادغام را همگام نگه میدارند.
همچنین ببینید: شاخهها و ادغام، هر کاری را برگردانید.