دنبال فرمانی برای اجرا بگردید…
همهی کارهایی که معمولاً در یک رابط وب انجام میدهید، یعنی ساختن مخزن، باز کردن issue، بررسی و ادغام pull request و فورک کردن، مستقیماً از خط فرمان zev انجام میشود. یک بار وارد میشوید و از آن به بعد هیچ دستور سروری به آدرس یا توکن نیاز ندارد.
zev initzev login zaryn.xyz --register alice --email alice@example.comzev login یک چالش یکباره را با هویت این مخزن (.zev/identity) امضا میکند، آن را با یک توکن دسترسی شخصی مبادله میکند و آدرس سرور و توکن را در ~/.config/zev/credentials ذخیره میکند؛ فایلی که فقط خودتان میتوانید بخوانید. بار اول، --register <username> --email <address> پس از تأیید کدی که ایمیل میشود برای این هویت حساب میسازد؛ پس از آن zev login <url> کافی است.
سرور را میتوان با نشانی وبسایتش (zaryn.xyz، example.com)، به شکل http://host:port، یک host:port ساده، یا هر نشانی مخزنی روی آن نوشت؛ فقط بخش سرور استفاده میشود.
zev whoamizev logoutzev whoami سرور ذخیرهشده، کاربر و توکن را بهصورت پوشیده نشان میدهد. zev logout اعتبارنامهی ذخیرهشده را از این دستگاه پاک میکند؛ خود توکن تا زمانی که روی سرور باطل نشود معتبر میماند.
هر دستور سروری اعتبارنامهها را به این ترتیب پیدا میکند:
--server و --tokenZEV_SERVER و ZEV_TOKENzev loginبنابراین پرچمها همیشه اولویت دارند، متغیرهای محیطی برای CI و خودکارسازی مناسباند و ورود ذخیرهشده برای کار روزمره.
zev newیک راهنمای تعاملی نام مخزن، نوع آن (code، model، dataset، agent، topology)، زبان اصلی، سطح دسترسی و مجوز را میپرسد. سپس مخزن را روی سرور میسازد، یک .zevignore متناسب با زبان مینویسد و پروژهی محلی را بهعنوان ریموت origin متصل میکند.
zev add .zev commit "Describe the change"zev pushzev push بدون آرگومان شاخهی فعلی را به origin push میکند و zev pull شاخهی فعلی را از origin pull میکند. هر دو در صورت نیاز نام یا آدرس ریموت و نام شاخه را هم میپذیرند:
zev push upstream feature-xzev pull alice/project mainzev add . کل درخت پوشه را بهصورت بازگشتی مرحلهبندی میکند و از .zev/ و هر چیزی که با .zevignore مطابقت دارد صرفنظر میکند.
zev issue --title "Login button misaligned" --desc "Overflows on narrow screens"zev issue listzev issue list --allzev issue view 1zev issue comment 1 --body "Reproduced on a 360px viewport."zev issue close 1zev issue بدون زیردستور یک issue میسازد و هر چیزی را که بهصورت پرچم نداده باشید میپرسد. list issueهای باز را نشان میدهد و --all بستهشدهها را هم شامل میشود. view توضیحات و کل رشتهی نظرها را نشان میدهد. comment اگر --body داده نشود متن را میپرسد. close پیش از بستن تأیید میگیرد، چون هنوز نمیتوان issueها را از خط فرمان دوباره باز کرد.
شمارهی issue را میتوان به شکل 3 یا #3 نوشت.
zev branch fix-login-buttonzev checkout fix-login-buttonzev add .zev commit "Fix login button overflow"zev pushzev przev pr شاخهی مبدأ را از checkout فعلی تشخیص میدهد و شاخهی مقصد را میپرسد (پیشفرض main). عنوان را از آخرین پیام commit پیشنویس میکند و اگر شاخه بیش از یک commit داشته باشد، توضیحات را بهصورت فهرستی از همهی commitهای شاخهی شما که مقصد هنوز ندارد مینویسد. برای پذیرفتن هر پیشنویس Enter بزنید یا متن خودتان را بنویسید. zev pr --yes همهی پیشنویسها را بدون پرسش میپذیرد.
zev pr listzev pr list --allzev pr view 1zev pr merge 1merge بررسی میکند که pull request هنوز باز باشد، تأیید میگیرد و سپس آن را روی سرور ادغام میکند. پس از آن نسخهی محلیتان را بهروز کنید:
zev checkout mainzev pullدر مخزن، درخواستهای ادغام ← درخواست ادغام تازه را باز کنید. شاخهی تغییرات خود و شاخهی مقصد را انتخاب کنید: صفحه کامیتها و فایلهایی را که شاخهی شما تغییر داده نشان میدهد، و اینکه آیا مقصد از آن زمان جلو رفته یا نه. عنوان و توضیح بنویسید (یک قالب آماده است)، مسئلههایی را که میبندد علامت بزنید (با ادغام بسته میشوند)، برچسب بگذارید، از مالک یا همکاران بازبینی بخواهید، و آن را آماده یا بهصورت پیشنویس باز کنید.
بازبینها تأیید میکنند، تغییر میخواهند یا نظر میدهند. درخواست ادغام وقتی ادغام میشود که پیشنویس نباشد، درخواست تغییرِ بیپاسخی نداشته باشد، و شاخهاش همهی کامیتهای مقصد را داشته باشد؛ پس ادغام هرگز کار کسی را از بین نمیبرد.
اگر کسی پس از ساختن شاخهی شما چیزی در main ادغام کرده، کامیتهایش را به شاخهی خود بیاورید و آن را push کنید:
zev pull origin mainzev checkout fix-login-buttonzev merge mainzev pushzev merge main کامیتهای شما را روی main بازپخش میکند و هر فایل را خط به خط ترکیب میکند. اگر هر دو طرف همان خطوط را تغییر داده باشند، چیزی را تغییر نمیدهد و نام فایلها را میگوید؛ آنگاه zev merge main --resolve را اجرا کنید: شاخهی شما روی main قرار میگیرد و آن فایلها هر دو نسخه را میان نشانههای <<<<<<< و >>>>>>> دارند. آنچه میخواهید را نگه دارید، نشانهها را پاک کنید و zev merge --continue را اجرا کنید (یا zev merge --abort برای بازگشت).
zev fork-repo alice/project --clonezev clone alice/project project --branch mainzev fork-repo یک مخزن را با همهی شاخههایش در حساب شما کپی میکند؛ --as <name> نام دیگری به فورک میدهد و --clone آن را بهصورت محلی هم کلون میکند. zev clone یک مخزن را در پوشهای جدید کلون میکند. در هر دو حالت کلون بلافاصله آمادهی استفاده است: فایلها checkout شدهاند و origin تنظیم شده، پس zev pull و zev push بدون آرگومان کار میکنند.
list، view، comment، close و merge گزینهی --repo owner/name را میپذیرند، بنابراین میتوانید از هر پوشهای، حتی بیرون از هر مخزنی، روی هر مخزنی کار کنید.
zev هرگز کار commitنشده را بیصدا بازنویسی نمیکند.
zev pull روی شاخهی فعلی فایلها را خودکار بهروز میکند، اما فقط وقتی امن باشد. اگر تغییرات مرحلهبندیشده، فایلهای ردیابیشدهی تغییریافته یا حذفشده، یا فایل ردیابینشدهای دارید که بهروزرسانی آن را بازنویسی میکند، هیچ چیزی تغییر نمیکند، فایل مسئول نام برده میشود و گفته میشود چه کنید. خود شاخه همچنان بهروز میشود، پس چیزی از دست نمیرود.zev pull برای شاخهای که روی آن نیستید هرگز به فایلهای کاری دست نمیزند.zev checkout در همین شرایط از تعویض شاخه خودداری میکند و در این حالت هیچ چیزی را تغییر نمیدهد. zev checkout --force <branch> با این حال شاخه را عوض میکند و تغییرات محلی شما را دور میریزد.zev status شاخهی فعلی را نشان میدهد و فایلهای مرحلهبندیشده، تغییریافته، حذفشده و ردیابینشده را، از جمله داخل زیرپوشهها، فهرست میکند.